Pontificia Universidad Católica Escuela de Ingeniería Departamento de Ingeniería Industrial y de Sistemas Clase 19 • El Método Simplex ICS 1102 • Optimización Profesor : Claudio Seebach 11 de octubre de 2005 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 37 Problemas Lineales en Formato Estándar • Condiciones: 1. Restricciones de no negatividad en todas las variables 2. Todas las restricciones son de igualdad 3. El vector b tiene todos los componentes positivos • Ejemplo: P) max z = −3x1 +2x2 s.a. −3x1 +3x2 +x3 =6 −4x1 +2x2 +x4 = 2 x1 , x2 , x3 , x4 ≥ 0 • Se traduce al siguiente formato matricial que denominaremos tableau: x1 −3 −4 −3 Apuntes de Clases • Optimización • Claudio Seebach x2 3 2 2 x3 1 0 0 x4 0 =6 1 =2 0 Programación Lineal • 38 Variables Básicas y Fuera de Base • Consideremos el sistema A!x = !b, con A de dimensión m × n, que define m ecuaciones lineales. • Una solución básica se obtiene al igualar a 0 a n−m variables, y resolver para las m restantes, suponiendo que son linealmente independientes. • La elección de distintas bases lleva a distintas soluciones al sistema. • Ejemplo: x1 +x2 =3 −x2 +x3 = −1 • Consideremos la base {x1, x2} y fuera de base {x3}, o sea x3 = 0, por lo tanto el sistema queda: x1 +x2 = 3 −x2 = −1 • Por lo tanto x1 = 2, x2 = 1, x3 = 0 es una solución básica para el sistema de ecuaciones inicial. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 39 Variables Básicas y Fuera de Base • Algunas elecciones de bases pueden no llevar a una solución. Ejemplo: x1 +2x2 +x3 = 1 2x1 +4x2 +x3 = 3 • La elección de la base {x1, x2}, lleva a tener que solucionar: x1 +2x2 = 1 2x1 +4x2 = 3 • Este sistema no tiene solución con esa base. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 40 Soluciones a un problema de LP Definición 1 Una solución básica en la cual todas las variables son no negativas se le denomina una solución básica factible Teorema 1 Un punto en la región factible de un problema de LP es un punto extremo si y solo si es una solución básica factible al problema. Teorema 2 En un problema de prog. lineal en formato estándar, con soluciones básicas factibles !b1, !b2, . . . , !bk . Todo punto de la región factible se puede escribir de la forma: !x = d! + k ! σi!bi i=1 k ! i=1 σi = 1, σi ≥ 0 donde d! es !0 o una dirección no acotada. Teorema 3 Si un problema de programación lineal tiene solución óptima, entonces tiene una solución básica factible óptima. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 41 El Algoritmo Simplex • Consideremos el siguiente problema de LP: P) max z = 60x1 s.a. 8x1 4x1 2x1 x1 , +30x2 +6x2 +2x2 +1, 5x2 x2 x2 , +20x3 +x3 ≤ 48 +1, 5x3 ≤ 20 +0, 5x3 ≤ 8 ≤5 x3 ≥0 • Se traduce al siguiente formato canónico, con las variables básicas {s1, s2, s3, s4} y fuera de base {x1, x2, x3}, i.e. x1, x2, x3 = 0: 8x1 +6x2 +x3 +s1 = 48 4x1 +2x2 +1, 5x3 +s2 = 20 2x1 +1, 5x2 +0, 5x3 +s3 =8 x2 +s4 = 5 z −60x1 −30x2 −20x3 =0 Apuntes de Clases • Optimización • Claudio Seebach s1 = 48 s2 = 20 s3 = 8 s4 = 5 z=0 Programación Lineal • 42 El Algoritmo Simplex • Lo anterior se puede resumir en el siguiente tableau canónico, con las variables básicas {s1, s2, s3, s4} y fuera de base {x1, x2, x3}. z x 1 x2 8 6 4 2 2 1,5 1 1 -60 -30 x 3 s1 s2 s3 s4 v.b. 1 1 = 48 s1 1,5 1 = 20 s2 = 8 s3 0,5 1 0,5 1 = 5 s4 -20 • ¿es óptima la actual solución básica factible? No. • De la ecuación z = 60x1 + 30x2 + 20x3 podemos observar que aumentar cualquiera de las variables fuera de base, aumenta el valor de z. • Aumentar x1 desde 0 es lo que más aumenta z por cada unidad, ya que c1 es el mayor de los tres coeficientes ci. • Al dejar x1 de ser igual a 0, entra a la base, por lo que denominaremos x1 la variable entrante. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 43 El Algoritmo Simplex • En un problema de maximización (minimización), elegiremos la variable con el coeficiente más positivo (negativo ) en la última fila del tableau como la variable entrante. Si hay empate podemos elejir al azar. • En nuestro ejemplo, si x1 entra a la base, ¿quien sale? • Al aumentar x1, las variables en la base disminuyen, por lo que debemos revisar que se mantenga la condición de no negatividad: s1 s2 s3 s4 ≥0 ≥0 ≥0 ≥0 ⇒ 48 − 8x1 ≥ 0 ⇒ 20 − 4x1 ≥ 0 ⇒ 8 − 2x1 ≥ 0 ⇒ s4 = 5 x1 ≤ 48 8 = 6 x1 ≤ 20 4 = 5 8 x1 ≤ 2 = 4 para todo x1 20 8 • Por lo tanto, el mayor valor que x1 puede tomar es min{ 48 8 , 4 , 2 , ·} = 4. Entonces si tomamos x4 = 4 ⇒ s3 = 0. s3 es la variable saliente. • En resumen, la variable saliente será aquella que se hace 0 al aumentar b la variable entrante xk al valor minj { a j } jk Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 44 El Algoritmo Simplex • La nueva base será {s1, s2, x1, s4} y fuera de base quedan {s3, x2, x3}. • Pivoteando el tableau anterior para obtener x1 0 0 1 0 0 x2 0 −1 0, 75 1 15 x3 −1 0, 5 0, 25 0 −5 s1 1 0 0 0 0 s2 0 1 0 0 0 s3 −4 −2 0, 5 0 30 s4 0 0 0 1 0 = = = = 16 4 4 5 240 v.b. s1 s2 x1 s4 • ¿es óptima la actual solución básica factible? No, porque el coeficiente asociado a x3 es negativo aún. • x3 es la nueva variable entrante. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 45 El Algoritmo Simplex • Revisemos que se mantenga la condición de no negatividad: s1 ≥ 0 s2 ≥ 0 x1 ≥ 0 s4 ≥ 0 ⇒ s1 ⇒ s2 ⇒ s3 ⇒ s4 = 16 + x3 ≥ 0 = 4 − 0, 5x3 ≥ 0 = 4 − 0, 25x3 ≥ 0 =5 para todo x3 4 x3 ≤ 0,5 =8 4 x3 ≤ 0,25 = 16 para todo x3 • Por lo tanto, el mayor valor que x1 puede tomar es min{·, 8, 16, ·} = 8. Entonces si tomamos x3 = 8 ⇒ s2 = 0. s2 es la variable saliente. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 46 El Algoritmo Simplex • La nueva base será {s1, x3, x1, s4} y fuera de base quedan {x2, s2, s3}. • Pivoteando el tableau anterior para obtener la nueva base: z x 1 x 2 x 3 s1 s2 s3 s4 -2 1 2 -8 = 24 -2 1 2 -4 = 8 = 2 1 1,25 -0,5 1,5 1 1 = 5 1 5 10 10 280 v.b. s1 x3 x1 s4 • ¿es óptima la actual solución básica factible? Si, porque todos los coeficientes de la primera fila son positivos. • La solución óptima es: x1 = 2, x2 = 0, x3 = 8, s1 = 24, s2 = 0, s3 = 0, s4 = 5. • El valor óptimo es z ∗ = 280. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 47