Sunteți pe pagina 1din 65

Investigación Operativa

Programación lineal y lineal entera

2do cuatrimestre 2014

Irene Loiseau
Departamento de Computación
Facultad de Ciencias Exactas y Naturales
Universidad de Buenos Aires
irene@dc.uba.ar
De qué trata este curso?

Estudiar métodos que sirven para resolver


problemas que pueden modelarse
matemáticamente como problemas de
programación lineal o lineal entera.
• Qué significa formular y usar un modelos
matemáticos para resolver problemas
reales?.

• Qué etapas incluye esta tarea?.

• Cuándo “sirve” un modelo matemático?


• Qué problemas vamos a modelar y resolver en este
curso?.

• Qué es Programación lineal?. Qué es optimización?.

• Porqué se llama programación lineal?.

• .
• Monge 1781, transporte.
• Fourier, 1826, Farkas 1902, resolución de sistemas de inecuaciones
• Inicios del siglo XX algunas aplicaciones

• Dantzig
• Von Newmann

• Kantorovich, Koopmans, premio Nobel de Economía 1975…..

• Relación con la aparición y evolución de las computadoras


Qué otros temas se estudian en Investigación Operativa
(Operations Research)?:

• Optimización nolineal
• Toma de decisiones en contextos de incertidumbre, árboles de
decisión
• Optimización multiobjetivo
• Teoría de juegos
• Modelos de inventario (stock) determinísticos y probabilísticos.
• Programación dinámica
• Teoría de colas
• Cadenas de Markov
• Simulación
• Métodos de predicción
• De todos los temas que abarca la Investigación
Operativa en este curso estudiaremos SOLO problemas
de programación lineal y lineal entera………

• (con esto tenemos algunos métodos para resolver la


mayoría de los problemas de Optimización
Combinatoria, otros se vieron en Algoritmos III)
Algunas aplicaciones de programación lineal y
programación lineal entera

• Problemas de mezcla, fabrica de comestibles


• Planificación de la producción
• Manejo de stock
• Planificación de mantenimiento
• Planificación de recursos de mano de obra
• Optimización de refinerías
• Diseño de componentes de VLSI
• Determinar tarifas de electricidad
• Transporte de mercaderías
• Minimización de desperdicio en el corte de materiales
• Ruteo de vehículos
• Asignación de tareas
• Asignación de tripulaciones en empresas de transporte aéreo
• Planificación en economía
• Flujo óptimo en redes
• Diseño de redes de comunicaciones
• Asignación de frecuencias en telefonía celular
• Planificación de campañas publicitarias en TV
• Planificación de semáforos
• Secuenciamiento de ADN
• Doblado de proteínas
• Otros problemas de biología computacional
• Etc., etc.
Programa Resumido

• ¿Qué es Investigación Operativa? Historia. Aplicación de la


metodología de Investigación Operativa a la solución de problemas
reales. Diseño y elementos de un modelo de decisión.
Programación matemática.

• Programación Lineal. Modelos de programación lineal: planificación


de la producción determinación del stock, procesos de producción,
inversión de capitales, planificación financiera, programación de
tareas, problemas de mezcla, etc.

• Conjuntos y funciones convexas. Poliedros y Conos. Capsula


convexa. Extremos y rayos. Lema de Farkas. Desigualdades
válidas. Caras y facetas.

• Programación Lineal: Método Simplex. Interpretación geométrica.


Convergencia. Complejidad. Problema dual. Interpretación
económica y geométrica. Teorema de dualidad. Teorema de
Holgura Complementaria. Método Simplex Revisado. Analisis de
sensibilidad y paramétrico. Interpretación económica. Software para
problemas de programación lineal.. Ideas básicas de los métodos
de Kachiyan y de punto interior.
• Problemas de programación lineal entera: cubrimiento,
empaquetamiento, problema del viajante de comercio, matching,
asignación de tareas, diseño de redes de comunicaciones,
problema de la mochila, problemas de minimización de desperdicio
en el corte de materiales, etc. Formulación de modelos de
programación entera. Complejidad. Buenas y malas formulaciones.
Problemas fáciles: flujo en redes, problema de transporte.

• Caracterización de la cápsula convexa de un problema de


programacion lineal entera. Problema de separación.
Desigualdades válidas: cortes de Gomory, desigualdades de
cubrimiento y cortes disyuntivos. Estudio de la cápsula convexa
para algunos problemas de progamacion lineal entera: transporte,
mochila, matching, viajante de comercio.

• Algoritmos de resolución de un problema lineal entero. Métodos de


planos de corte. Metodos Branch and Bound. Estrategias de
recorrido del árbol. Métodos Branch an Cut. Métodos de generación
de columnas. Software para problemas de programación lineal
entera.
Bibliografía:
• Bazaraa,M., Jarvis,J., Sherali,H.,Linear Programming and Networks
Flows, John Willey & Sons, 1990.

• Chvatal, V., Linear Programming, Freeman, 1983.

• Cook, W., Cunningham, Pulleyblank, Schrijver, A., Combinatorial


Optimization, John Willey &.Sons, 1998.

• Williams, H.P., Model Building in Mathematical Programming, John


Willey &.Sons, 1999.

• Winston,W., Operations Research, Applications and Algorithms,


Duxbury Press, 1994.

• Wolsey,L., Integer Programming, John Willey &.Sons, 1998.


Software para programación lineal y lineal entera:

• CPLEX

http://www-01.ibm.com/software/integration/optimization/cplex-optimizer/
http://www.cplex.com

• GUROBI
www.gurobi.com/

• LINDO
http://www.lindo.com

• Software libre

- SCIP
http:scip.zib.de/

- LP-Solve
http://sourceforge.net/projects/lpsolve/
Problema de la dieta

Ana quiere saber cuanto es el mínimo que puede gastar


para alimentarse saludablemente, y obtener las 2000
kcal, 55 grs de proteínas y 800 mg de calcio que
necesita cada día (no está tomando en cuenta la
necesidad de hierro ni de vitaminas!!). Para eso ella
quiere elegir entre las siguientes comidas, cuyos datos
aparecen en la siguiente tabla:
Comida Porción kcal Proteinas Calcio(mg) Precio
(g)
cereal 28g 110 4 2 3

pollo 100g 205 32 12 24

huevos 2 160 13 54 13

leche 237cc 160 8 285 9

pastel 170g 420 4 22 20

cerdo con 260g 260 14 80 19


porotos
Por otro lado Ana quiere tener una alimentación variada. No quiere
comer todos los días lo mismo, cómo máximo quiere comer:

• 4 porciones de cereal
• 3 porciones de pollo
• 4 huevos
• 8 porciones de leche
• 2 porciones de pastel
• 2 porciones de cerdo con porotos

Cómo podemos modelar matemáticamente este problema?

Este problema tiene aplicaciones reales por ejemplo en la fabricación de


alimentos balanceados para pollos o ganado
Planificación de la producción

Formular un modelo para optimizar los costos de


producción de una empresa que produce listones de
madera en 4 medidas: chico, mediano, grande y
extragrande. Estos listones pueden producirse en tres
máquinas: A, B y C. Cada máquina puede ser usada
50 horas semanales y el costo operativo por hora de
cada una es $30, $50 y $80 respectivamente. Se
necesita producir 10000, 8000, 6000 y 4000 metros de
cada tipo de listones por semana.

La cantidad de metros que puede producir por hora cada


máquina está dada en la siguiente tabla:
A B C

Chico 300 600 800

Mediano 250 400 700

Grande 200 350 600

extragrande 100 200 300


Optimizando beneficios
Una compañia petroquímica procesa petróleo para producir
combustible para aviones y aceite de máquina.
Cuesta $40 comprar 1000 barriles de petróleo, que luego destilados
producen 500 barriles de combustible para aviones y 500 barriles
de aceite.
Lo que se obtiene de la destilación puede ser vendido directamente o
ser procesado nuevamente con un fraccionador catalítico. Si se
vende sin el segundo proceso, el combustible para aviones se
vende a $60 por 1000 barriles y el aceite para calentar se vende a
$40 por 1000 barriles.
Lleva 1 hora procesar 1000 barriles de combustible para aviones en el
fraccionador catalítico, y esos 1000 barriles se venden a $130.El
mismo proceso demora 45 minutos para 1000 barriles de aceite
para calentar, y esos 1000 barriles se venden a $90.
Cada día, se pueden comprar a lo sumo 20000 barriles de petróleo, y
se tienen disponibles 8 horas del fraccionador catalítico.

Formular un modelo matemático que maximice los beneficios de la


empresa.
Problema de programación lineal (PL)

maximizar c1 x1+ c2 x2 +…… + cn xn

sujeto a
a11 x1 + a12 x2 + …………+ a1n xn ≤ b1
a21 x1 + a22 x2 + …………+ a2n xn ≤ b2
.
.
.
am1 x1 + am2 x2 + …………+ amn xn ≤ bm

xj ≥ 0 para j = 1,…..n

(forma standard de un problema de PL)


Cuando hablamos de Programación Lineal (PL)
suponemos que las variables xj son variables
continuas, es decir xj ∈ R+ para todo j.

Cuando se requiere que las variables sean enteras


es decir xj ∈Z+ tendremos problemas de
programación lineal entera (PLE) y cuando sean
binarias tendremos problemas de programación
lineal binarios (ó 0-1).

Empezaremos viendo como resolver problemas de


Programación Lineal con variables continuas
(PL)
El problema de PL se puede escribir también como:

Max ∑j cj xj
sujeto a
∑j aij xj ≤ bi i = 1,…..m

xj ≥ 0 para j = 1,…..n

:
O en forma matricial:

Max c x
sujeto a
Ax ≤ b
x≥0

donde x es el vector columna de las n variables xj, b es el


vector columna de m componentes bi y A es una matriz
de m filas y n columnas con los coeficientes de las
desigualdades.
Los problemas de programación lineal pueden ser de
maximización o minimización, y pueden tener
restricciones por desigualdad en cualquiera de los dos
sentidos, o restricciones de igualdad. Las variables
pueden o no ser nonegativas y/o acotadas.

Llamaremos forma standard de un problema de


programación lineal de maximización cuando el mismo
está expresado usando desigualdades por ≤ y forma
canónica cuando sólo se usan igualdades (está notación
que tomamos del libro de Chvatal no es uniforme en los
libros!!!).
Nomenclatura:

• Función objetivo
• Coeficientes de la función objetivo
• Variables o variables de decisión
• Restricciones
• Coeficientes tecnológicos: los coeficientes de la matriz A.
• Restricciones de nonegatividad.
• Termino de la derecha (right-hand-side)
• Solución factible
• Conjunto de soluciones factibles o región factible
Cómo representamos la región factible del
siguiente problema?

Maximizar 2 x1 + 5 x2

sujeto a
x1 + x2 ≥ 6
x1 + 2 x2 ≤ 18
x1 ,x2 ≥ 0
Solución Geométrica
• Cómo podemos aprovechar la representación de la región
factible para resolver geométricamente un problema de PL
de dos variables? . Cómo resolver el problema anterior?.

• Cómo podemos resolver el siguiente problema?:

Maximizar x1 + 3 x2
sujeto a
x1 + x2 ≤ 6
- x1 + 2 x2 ≤ 8
x1 ,x2 ≥ 0
Cuál es la solución del siguiente problema?

Minimizar - 2x1 + 3 x2
sujeto a
- x1 + 2 x2 ≤ 2
2 x1 - x2 ≤ 3
x2 ≥ 4
x1 ,x2 ≥ 0

Qué significa en un modelo de un problema real que


tengamos una región factible cómo esta?.
• Vemos que si el PL tiene una solución óptima
finita la misma está en uno de los vértices del
poliedro que describe la región factible.
(demostraremos formalmente esto más
adelante)

• Este método es apropiado sólo para problemas


pequeños de dos o tres variables, pero es
importante para entender los problemas de
programación lineal en general.
Cuántas soluciones óptimas tiene un problema de
PL ?. Cómo se ve esto en la representación
geométrica de la región factible?.

• Una única solución óptima


• Infinitas soluciónes óptimas (región factible
acotada o no acotada)
• Ninguna solución óptima: la región factible es
vacía.
• Ninguna solución óptima: la región factible y la
solución óptima son no-acotadas.

Qué significa en un modelo de un problema real


que se produzcan cada una de estas situaciones?
Método Simplex

• Presentado por Dantzig en 1947 (publicado en


1949)
• Uno de los (o él) método de matemática más
usados para resolver problemas reales.
• Se usa también como importante herramienta
para desarrollar métodos para resolver otros
problemas de optimización, en particular
problemas de programación lineal entera.
• Tamaño de los problemas que resolvía entonces
y ahora.
Presentaremos en primer lugar con un
ejemplo las ideas básicas para un
problema de PL en la forma standard, y
cuando los bi ≥ 0.

Maximizar 5 x1 + 4 x2 + 3 x3
Sujeto a
2 x1 + 3 x2 + x3 ≤ 5
4 x1 + x2 + 2 x3 ≤ 11 (1)
3 x1 + 4 x2 + 2 x3 ≤ 8
x1 , x2 , x3 ≥ 0
El método consiste en mejorar iterativamente el
valor de la función objetivo, revisando sistemas
de inecuaciones equivalentes al sistema original
(1) de desigualdades que describe la región
factible.
En primer lugar definimos 3 variables nonegativas
x4, x5, x6 llamadas variables de holgura (slacks)
que nos transforman el sistema de
desigualdades (1) en un sistema de igualdades

2 x1 + 3 x2 + x3 + x4 = 5
4 x1 + x2 + 2 x3 + x5 = 11
3 x1 + 4 x2 + 2 x3 + x6 = 8

Y definimos una variable z que representa el valor


de la función objetivo
z = 5 x1 + 4 x2 + 3 x3
Despejamos las variables de holgura y
reescribimos nuestro sistema:

x4 = 5 - 2 x1 - 3 x2 - x3
x5 = 11 - 4 x1 - x2 - 2 x3 (2)
x6 = 8 - 3 x1 - 4 x2 - 2 x3
--------------------------------------------------------------------------
z = 5 x1 + 4 x2 + 3 x3
Entonces nuestro problema se puede reformular como

Maximizar z
Sujeto a
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0

• Cada solución de problema original determina (1) una


única solución de este nuevo problema (2).
• Cada solución de (2) se puede restringir a una solución
de (1) si no consideramos las variables de holgura.
• Entonces esta correspondencia entre las soluciones
básicas de ambos sistemas establece también una
correspondencia entre soluciones óptimas.
Cómo obtenemos de este último sistema (2 ) una solución
factible del problema?.

Por ejemplo si ponemos todas las variables de decisión en


0, tenemos:

X1 = 0, X2 = 0, X3 = 0, X4 = 5, X5 = 6, X6 = 8

Cuál es el valor de la función objetivo en esta solución?

z=0

Cómo podemos obtener una solución mejor a partir de


acá?.
Miremos de nuevo el sistema (2). Cómo podemos hacer
crecer z?.

x4 = 5 - 2 x1 - 3 x2 - x3
x5 = 11 - 4 x1 - x2 - 2 x3
x6 = 8 - 3 x1 - 4 x2 - 2 x3
---------------------------------------------------------------
z = 5 x1 + 4 x2 + 3 x3

Si dejamos x2 y x3 fijos en 0 cuánto puede crecer x1 sin que


la solución deje de ser factible o sea sin que ninguna de
las variables x4 , x5 y x6 dejen de ser positivas?.

Cuál es la variable que más limita el crecimiento de x1?.


Si x1 crece lo más posible manteniendo la factibilidad, o sea
hasta tomar el valor 5/2, la nueva solución queda:

x1 = 5/2 , x2 = 0 x3 = 0 , x4 = 0 x1 = 1 , x6 = ½

Qué valores toma la función objetivo en este punto?.

z = 25/2

Cómo seguimos a partir de acá para ver si podemos hacer


crecer este valor?

Vamos a tratar de obtener un sistema similar al sistema (2),


es decir un sistema donde la variables que valen 0 sean
las únicas que figuren en la ecuación de z.
Para eso vamos a “cambiar” la variable x1 por la variable x4
que es la que “limita” el crecimiento de x1.

Si despejamos x1 de la primera ecuación de (2) queda:

x1 = 5/2 – 3/2 x2 – ½ x 3 - ½ x4

Si reemplazamos esta ecuación en las otras dos


ecuaciones del sistema (2) obtenemos un nuevo
sistema…
x1 = 5/2 – 3/2 x2 – 1/2 x3 -1/2 x4
x5 = 1 + 5 x2 + 2 x4 (3)
x6 = 1/2 + 1/2 x2 – 1/2 x3 + 3/2 x4
---------------------------------------------------------------
z = 25/2 – 7/2 x2 + 1/2 x3 - 5/2 x4

Es posible que el valor de z siga creciendo?.


O sea, cómo podemos hacer para ver si hay alguna otra
solución factible que tenga un valor mayor que 25/2? .
Hay alguna de las variables de las que aparecen en la
expresión de z, (o sea que tienen valor 0) que pueda
aumentar de valor (sin que las otras variables que
aparecen en la expresión de z cambien)?
Mirando la última fila vemos que la única variable que puede
aumentar de valor para que aumente el valor de z es x3.
Hasta cuanto podemos aumentar el valor de x3 ?.
Para que el sistema siga siendo factible o sea para que las
todas la variables sigan siendo nonegativas lo máximo
que puede crecer x3 es 1.

Si reemplazamos este valor en (3) obtenemos una nueva


solución factible:

x1 = 2 , x2 = 0 x3 = 1 , x4 = 0 x5 = 1 , x6 = 0

y vemos que el valor de la función objetivo en esta solución


es
Z = 13

Podemos aumentar el valor de la función objetivo aún


más?.
Para ver esto repetimos el procedimiento anterior. Es decir
vamos a escribir las ecuaciones de modo de tener un
sistema donde la variables que figuren en la ecuación de
z valgan todas 0.

Para esto, como hicimos antes, despejamos x3 de la


ecuación de la variable que limitó su crecimiento, en este
caso x6. Obtenemos:

x3 = 1 + x2 + 3 x 4 - 2 x6
Si reemplazamos x3 por esta expresión en el sistema (3)
obtenemos un nuevo sistema:

x3 = 1 + x2 + 3 x 4 - 2 x6
x1 = 2 - 2 x2 - 2 x4 + x6 (4)
x5 = 1 + 5 x2 + 2 x4
---------------------------------------------------------------
z = 13 – 3 x2 - x4 - x6

Podemos hacer crecer más el valor de z o sea de la función


objetivo?.
Qué nos garantiza que esta solución es la óptima?.

Que hemos pasado de un sistema de ecuaciones a


otro equivalente sucesivamente, y que entonces
TODAS las soluciones factibles de nuestro
problema original tienen que satisfacer (4).
En el caso general si tenemos el problema

Max ∑j cj xj
sujeto a
∑j aij xj ≤ bi i = 1,…..m
xj ≥ 0 para j = 1,…..n

(con los bi todos positivos)


introducimos las variables slacks xn+1, xn+2, xn+3 ……xn+m , llamamos z a la
funión objetivo y escribimos el sistema equivalente:

xn+i = bi - ∑j aij xj
z= ∑j cj xj
Asociamos a este sistema una solución factible que se
obtiene asignando valor 0 a las variables originales del
problema.
xj = 0 para j = 1,…..n
x n+ i = bi para i= 1, ….m

Iterativamente pasaremos de un sistema como este a otro


hasta obtener una solución óptima.

Las variables que aparecen en el miembro de la izquierda


de las ecuaciones de cada sistema se llaman básicas,
las que aparecen a la derecha se llaman variables no-
básicas. Las variables básicas de cada paso no
aparecen en la expresión de la función objetivo (última
línea del cuadro) en ese paso.

Para cada uno de estos sistemas obtenemos una solución


factible básica del problema asignando valor 0 a las
variables no básicas.
Resumen del método simplex
(problema en forma estandar, bi ≥ 0):
A partir del primer sistema, iterativamente, mientras el valor de la función
objetivo pueda mejorar:

• Elegir alguna variable no-básica cuyo valor pueda crecer ( o sea que
figura con signo más en la función objetivo). (variable de entrada)
• Determinar la ( o una de las) variable básica que limita más el
crecimiento de la variable elegida en el paso anterior. (variable de
salida).
• Despejar la variable no básica elegida de la ecuación correspondiente
a la variable básica.
• Reemplazar en el sistema anterior y obtener un nuevo sistema.
• Asignar valor 0 a la nueva variable no-básica, obtenemos una nueva
solución factible del problema original (estas soluciones se llaman
soluciones básicas).

No todas las soluciones factibles son soluciones básicas!


• En los programas computacionales el método se
implementa usando matrices (lo veremos más adelante).

• Formato Tableau: muchas veces este método se


presenta usando un formato tableau, o sea realizando
las operaciones sobre una tabla que incluye sólo los
coeficientes del sistema.
A qué corresponden geométricamente las soluciones
básicas?.

Ejemplo:
Representar gráficamente el conjunto de soluciones
factibles del siguiente problema. Resolver, eligiendo en
cada paso la variable no-básica de mayor coeficiente y
representar cada solución básica factible obtenida.

Maximizar 3 x1 + 2 x2 + 5 x3
Sujeto a
2 x1 + x2 ≤4
x3 ≤ 5
x1 , x2 , x3 ≥ 0
Qué problemas pueden aparecer al aplicar el
método simplex y cómo resolverlos:

• Siempre podemos encontrar una variable de entrada en la


base y una de salida?.

• El método termina siempre, no podría ser que realice un


número infinito de pasos?.

• Siempre podemos obtener una solución inicial?. Qué pasa


si los bi no son positivos?.

• Cuánto tarda el método simplex en resolver un problema


Siempre podemos encontrar una variable de
entrada en la base y una de salida?.

• La variable de entrada es una variable no-básica con


coeficiente positivo en la función objetivo z. Puede haber
varias para elegir, en cuyo caso da lo mismo elegir
cualquiera, o ninguna, en cuyo caso estamos en el
óptimo.
• La variable de salida es la variable básica cuya
restricción de ser no-negativa es la que más limita el
crecimiento de la variable de entrada. Puede haber
varias candidatas o ninguna. Veamos ambas
posibilidades.
Qué significa que no haya ninguna variable básica que
pueda salir?. Veamos el siguiente ejemplo..

x2 = 5 + x3 - x 4 - 3 x1
x5 = 7 - 3 x4 - 4 x1
----------------------------------------------------
z=5+ x3 - x4 - x1

Si no hay ninguna variable que limita el crecimiento de la


variable de entrada el problema es no acotado.
Qué puede ocurrir si hay más de una variable básica que
pueda salir?.
• Podemos elegir cualquiera de ellas para salir.

Pero puede ocurrir lo siguiente, veamos un ejemplo:

x4 = 1 - 2 x3
x5 = 3 - 2 x1 - 4 x2 - 6 x3
x6 = 2 + x1 - 3 x2 - 4 x3
---------------------------------------------------------------
z= 2 x1 - x2 + 8 x3

Elegimos x3 como variable de entrada. Las tres variables


básicas pueden ser variables de salida. Supongamos que
elegimos x4
x3 = 0.5 - 0.5 x4
x5 = - 2 x1 - 4 x2 + 3 x4
x6 = x1 - 3 x2 - 4 x4
---------------------------------------------------- -----------
z= 4+ 2 x1 - x2 - 4 x4

Qué pasa si elegimos x1 como variable de entrada?. Cuánto


puede crecer?.
La variable de salida tiene que ser x5.

x1 = - 2 x2 + 1.5 x4 -0.5 x5
x3 = 0.5 - 0.5 x4
x6 = - x2 + 3.5 x4 - 0.5x5
---------------------------------------------------------------
z = 4 + 3 x2 - x4 - x5

Se puede ver que la función objetivo no creció en este caso.


Porqué ?.
Las soluciones básicas que tienen una o más variables
básicas con valor 0 se llaman degeneradas.
Esta situación se presenta con frecuencia en problemas de
PL derivados de aplicaciones reales, y en general no
trae ningún problema…..como podemos ver si seguimos
resolviendo el ejemplo anterior ….. después de dos
iteraciones más se llega al óptimo. (ejercicio)

• Pero también puede ocurrir que el método simplex,


cómo lo estamos presentando hasta ahora siga
realizando una cantidad infinita de iteraciones (ciclado)
Ejemplo:
Resolvemos el siguiente ejemplo con las siguientes reglas
(arbitrarias) de entrada y salida de variables:

i) Elegimos la variable de entrada como la que tiene el


coeficiente más grande entre las posibles candidatas.
ii) En caso de empate elegimos la variable de salida que
tiene menor índice.
Maximizar 10 x1 - 57 x2 - 9 x3 - 24 x4
sujeto a
- 0.5 x1 + 5.5 x2+ 2.5 x3 - 9 x4 ≤ 0
- 0.5 x1 + 1.5 x2+ 0.5 x3 - x4 ≤ 0
x1 ≤ 1
x1 , x2 , x3 , x4 ≥ 0

Después de agregar las variables de holgura tenemos el


primer sistema:

x5 = - 0.5 x1 + 5.5 x2+ 2.5 x3 - 9 x4


x6 = - 0.5 x1 + 1.5 x2+ 0.5 x3 - x4
x7 = 1 - x1
---------------------------------------------------- -----------
z= 10 x1 - 57 x2 - 9 x3 - 24 x4
Obtenemos los siguientes sistemas.

x1 = 11 x2 + 5 x3 -18 x4 - 2 x5
x6 = - 4 x2 - 2 x3 + 8 x4 + x5
x7 = 1 - 11 x2 - 5 x3 + 18 x4 + 2 x5
--------------------------------------------- --------------------------------------------------
z= 53 x2 + 41 x3 - 204 x4 - 20 x5

x2 = - 0.5 x3 + 2 x4+ 0.25 x5 – 0.25 x6


x1 = - 0.5 x3 + 4 x4+ 0.75 x5 - 2.75x6
x7 = 1 + 0.5 x3 - 4 x4 -0.75 x5 + 2.75 x6
---------------------------------------------------- -------------------------------------------
z= 14.5 x3 - 98 x4 - 6.75 x5 - 13.25 x6
x3 = 8 x4 + 1.5 x5 – 5.5 x6 – 2 x1
x2 = - 2 x4 - 0.5 x5+ 2.5 x6 + x1
x7 = 1 x1
---------------------------------------------------- -------------------------------------------
z= 18 x4 + 15 x5 - 93 x6 - 29 x1

x4 = - 0.25 x5 + 1.25 x6+ 0.5 x1 – 0.5 x2


x6 = - 0.5 x5 + 4.5 x6 + 2 x1 - 4 x2
x7 = 1 - x1
---------------------------------------------------- -------------------------------------------
z= 10.5 x5 - 70.5 x6 - 20x1 - 9 x2
x5 = - 9 x6 + 4 x1 - 8 x2 – 2 x3
x4 = - x6 - 0.5 x1 + 1.5 x2 + 0.5 x3
x7 = 1 - x1
---------------------------------------------------- -------------------------------------------
z= 24 x6 + 22 x1 - 93 x2 - 21 x3

X5 = - 0.5 x1 + 1.5 x2+ 0.5 x3 - x4


x6 = - 0.5 x1 + 5.5 x2+ 2.5 x3 - 9 x4
x7 = 1 - x1
---------------------------------------------------- --------------------------------------------
z= 10 x1 - 57 x2 - 9 x3 - 24 x4
Este último sistema es igual al primero (y por
lo tanto la última solución es igual a la
primera), o sea si seguimos iterando
vamos a ciclar permanentemente entre
estas soluciones y el método no va a parar
nunca…..
• Puede ser que el método cicle a partir de una
solución que no sea degenerada?.
• NO porque cuando cicla el valor de la función
objetivo no aumenta (no podría volver a una
solución anterior si aumentara).

• Es muy poco frecuente que haya problemas


donde el método simplex cicle. Es difícil construir
ejemplos donde esto pase.

Sin embargo desde el punto de vista de la


correctitud del algoritmo tenemos que estudiar
formalmente el problema ………
Teorema: Si el método simplex no termina es porque cicla.

Demostración resumida:
Hay un número finito de soluciones básicas (se obtienen eligiendo m
variables entre n+m posibles), por lo tanto si hay infinitas
iteraciones, se tienen que repetir las soluciones básicas, y los
correspondientes sistemas de ecuaciones.
Hay varias formas de evitar que el método simplex cicle:
• Método de perturbación (1952)
• Método lexicográfico (1955)
• Regla del menor índice. (1977)

La última de ellas está justificada en el siguiente teorema:

Teorema: Si en caso de haber varias variables candidatas


se eligen como variable de entrada o salida la que tiene
el menor subíndice entonces el método termina. (o sea
no cicla).
Dem: ver por ejemplo libro de Chvatal o de Bazaraa et all.

S-ar putea să vă placă și