investigación operativa programación lineal y lineal entera · metodología de investigación...

65
Investigación Operativa Programación lineal y lineal entera Primer cuatrimestre 2018 Irene Loiseau Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires [email protected]

Upload: others

Post on 03-Nov-2019

30 views

Category:

Documents


0 download

TRANSCRIPT

Investigación OperativaProgramación lineal y lineal entera

Primer cuatrimestre 2018

Irene LoiseauDepartamento de ComputaciónFacultad de Ciencias Exactas y NaturalesUniversidad de Buenos [email protected]

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?.

Un poco de historia

• 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 abordar 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., CombinatorialOptimization, 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

• GUROBIwww.gurobi.com/

• LINDOhttp://www.lindo.com

• Software libre

- SCIPhttp:scip.zib.de/

- LP-Solvehttp://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(g)

Calcio(mg) Precio

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 porotos

260g 260 14 80 19

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 aa11 x1 + a12 x2 + …………+ a1n xn ≤ b1a21 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 xsujeto a

Ax ≤ bx ≥ 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 ≥ 6x1 + 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 ax1 + x2 ≤ 6

- x1 + 2 x2 ≤ 8x1 ,x2 ≥ 0

Cuál es la solución del siguiente problema?

Minimizar - 2x1 + 3 x2

sujeto a- x1 + 2 x2 ≤ 2

2 x1 - x2 ≤ 3x2 ≥ 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 nonegativasx4, 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 x4que 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,…..nx 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, b i ≥ 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 x4x5 = - 2 x1 - 4 x2 + 3 x4x6 = 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 ≤ 0x1 ≤ 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.