Pontificia Universidad Católica Escuela de Ingeniería Departamento de Ingeniería Industrial y de Sistemas Clase 21 • Simplex Fase I y II ICS 1102 • Optimización Profesor : Claudio Seebach 18 de octubre de 2006 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 77 Segunda Fase • El tableau inicial para la segunda fase que nos permite comenzar a iterar de inmediato en búsqueda de la solución óptima al problema original: • Eliminando del último tableau de la Fase I, la penúltima fila, asociada a la función objetivo de la Fase I, y la columna de y3 asociada a la variable auxiliar, obtenemos el tableau inicial para la Fase II: x1 0 0 1 0 x2 0 1 0 0 x3 x4 x5 20 250 1 14 250 3 10 1 40 0 7 3 −1 20 0 7 −3 10 10000 − 0 −200 32000 7 3 v.b. x3 x2 x1 • La S.I.F.B.: es: x1 = 10, x2 = 40, x3 = 250, x4 = 0, x5 = 0 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 78 Segunda Fase Tipo 2 • Se comienza desde un vértice del dominio del problema original: (0,45) (10,40) D (0,0) Tipo 1 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 79 Fin Segunda Fase • Al hacer una iteración del algoritmo obtenemos el siguiente tableau: x1 0 0 1 0 x2 x3 x4 3 3 0 250 175 15 1 −1 25 175 2 −5 0 25 175 0 40 5000 175 x5 1 3 0 30 0 30 0 42000 v.b. x5 x2 x1 • Este tableau corresponde al óptimo del problema modificado, en cual estamos forzados a usar al menos 15 litros de pintura. • El punto óptimo es x1 = 30, x2 = 30, x3 = 0, x4 = 0, x5 = 3 • El valor óptimo del problema de minimización es -42.000, o sea la utilidad del problema equivalente de maximización es $42.000. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 80 Gráficamente Segunda Fase Tipo 2 • El punto óptimo es x1 = 30, x2 = 30, x3 = 0, x4 = 0, x5 = 3 (0,45) (10,40) D (30,30) (0,0) Tipo 1 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 81 Pontificia Universidad Católica Escuela de Ingeniería Departamento de Ingeniería Industrial y de Sistemas Clase 21 • Análisis Matricial del Método Simplex ICS 1102 • Optimización Profesor : Claudio Seebach 18 de octubre de 2006 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 82 Análisis Matricial del Método Simplex • La forma estándar, una vez agregadas las variables de holgura y de exceso necesarias, es: min c!x s.a. Ax = b x ≥ 0 • Los componentes del vector b deben ser mayor o igual a cero. • En cada iteración los componentes del vector x se dividen en: – Las variables básicas: xB – Las variables no básicas: xD • El problema se puede escribir entonces como: min c!B xB + c!D xD s.a. BxB + DxD = b xB , xD ≥ 0 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 83 Análisis Matricial del Método Simplex • La matriz B es una matriz de m × m que debe ser de rango máximo. • Si multiplicamos la restricción en ambos lado por B−1 queda: xB = B−1b − B−1DxD • Reemplazando en la función objetivo queda: v̂ = c!B B−1b + (c!D − c!BB−1D)xD • El siguiente problema es equivalente al original: min c!B B−1b + (c!D − c!BB−1D)xD s.a. xB +B−1DxD = B−1b xB , xD ≥ 0 • Si todos los elementos de B−1b son no negativos, la siguiente solución corresponde a una solución básica factible del problema: xB = B−1b, xD = 0. El valor de la función objetivo es: v̂ = c!B B−1b Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 84 Análisis Matricial del Método Simplex • Si el tableau inicial se expresa en forma gruesa del siguiente modo: xB xD B D b c!B c!D 0 • El tableau correspondiente a una solución básica es: xB xD I B−1D B−1b ! ! −1 0 cD − cB B D −c!B B−1b • Si los elementos del vector de costos reducidos r!D = c!D − c!BB−1D son no negativos, la solución básica factible es también óptima. • Cada elemento de este vector pueden expresarse como cj − c!B B−1Dj • cj y Dj corresponden al coeficiente asociado a la variable xj (no básica) en la función objetivo original y la columna en A asociada a la variable xj , respectivamente. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 85 Análisis Matricial del Método Simplex • Ejemplo: min −x1 − 2x2 − 3x3 −3x1 + 2x2 + x3 −x1 + 2x2 − x3 x1 + x2 + 4x3 x 1 , x2 , x 3 ≤ ≤ ≤ ≥ 2 4 5 0 • Para transformar el problema a formato estándar hay que agregar tres variables de holgura, que forman además la base inicial. min −x1 − 2x2 − 3x3 −3x1 + 2x2 + x3 + x4 −x1 + 2x2 − x3 + x5 x1 + x2 + 4x3 + x6 x 1 , x2 , x 3 , x 4 , x 5 , x 6 Apuntes de Clases • Optimización • Claudio Seebach = = = ≥ 2 4 5 0 Programación Lineal • 86 Análisis Matricial del Método Simplex • xB = {x4, x5, x6} y xD = {x1, x2, x3} • Las matrices iniciales son: −3 2 1 1 0 0 B = B−1 = 0 1 0 , D = −1 2 −1 0 0 1 1 1 4 0 −1 2 b = 4 , cB = 0 , cD = −2 . −3 0 5 • El tableau incial es el siguiente: x1 x2 x3 x4 x5 x6 v.b. −3 2 1 1 0 0 2 x4 −1 2 −1 0 1 0 4 x5 1 1 4 0 0 1 5 x6 −1 −2 −3 0 0 0 0 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 87 Análisis Matricial del Método Simplex • El vector cB es nulo, por lo tanto r!D = c!D , • Todas las variables no básicas tienen costo reducido negativo. • min{−1, −2, −3} = −3; ⇒ x3 entra a la base • Para la variable saliente debemos realizar el cuociente entre los elementos de la columna de B−1b y los elementos positivos de la columna de D asociada a x3: min{ 21 , ·, 54 } = 54 . ⇒ x6 sale de la base. • El próximo tableau lo podemos obtener pivoteando (mediante operaciones filas) en la posición de x3 de la tercera fila, o bien simplemente redefiniendo las matrices del problema acorde a la nueva base xB = {x4, x5, x3}. • Las variables no básicas son: xD = {x1, x2, x6}. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 88 Análisis Matricial del Método Simplex • Las nuevas matrices asociadas a esta nueva 1base son: 1 0 −4 1 0 1 −3 2 0 B = 0 1 −1 =⇒ B−1 = 0 1 14 , D = −1 2 0 , 0 0 4 0 0 14 1 1 1 −1 0 2 b = 4 , cB = 0 , cD = −2 0 −3 5 • Es importante mantener muy claro el orden en que las variables forman el conjunto xB y xD de modo de garantizar consistencia. • Las matrices del nuevo son: −13 tableau 7 −1 B−1D = 4 −3 4 1 4 (c!D rD = − 4 9 4 1 4 4 1 4 1 4 , B−1b = c!B B−1D)T 3 4 21 4 5 4 , − 14 15 −1 = − 54 , c!BB b = − 4 3 4 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 89 Análisis Matricial del Método Simplex • Esto equivale siguiente tableau: x1 −13 4 −3 4 1 4 − 14 x2 x3 7 0 4 9 0 4 1 1 4 5 −4 0 x4 1 0 0 0 x5 x6 0 −1 4 1 14 0 14 0 34 3 4 21 4 5 4 15 4 v.b. x4 x5 x3 • Este mismo tableau se hubiera alcanzado si se hubiera realizado operaciones fila pivoteando en el casillero de la tercera fila y tercera columna. • ¿es esta solución óptima? No. • min{− 14 , − 54 } = − 54 ⇒ x2 entra a la base. • min{ 73 , 21 9 , 5} = 3 7 ⇒ x4 sale de la base Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 90 Análisis Matricial del Método Simplex • Pivoteando obtenemos: x1 x2 −13 1 7 24 0 7 5 0 7 −18 0 7 x3 x4 0 47 0 −9 7 1 −1 7 0 57 x5 x6 0 −1 7 1 47 0 27 0 47 3 7 30 7 8 7 30 7 v.b. x2 x5 x3 • xB = {x5, x3, x2} y xD = {x1, x6, x4}. • ¿Estamos en el óptimo? Aún no. 30 8 • min{·, 24 , 5} = 5 4 −18 7 ⇒ x1 entra a la base. ⇒ x5 sale de la base. • Pivoteando nuevamente: x1 x2 0 1 1 0 0 0 0 0 x3 x4 x5 x6 13 1 0 −1 8 24 6 −3 7 0 8 24 16 1 1 18 −5 24 6 3 0 −1 4 4 1 11 4 5 4 1 4 15 2 Apuntes de Clases • Optimización • Claudio Seebach v.b. x2 x1 x3 Programación Lineal • 91 Análisis Matricial del Método Simplex • Pivoteamos nuevamente: x1 x2 0 1 1 0 0 0 0 0 x3 1 3 8 2 x4 x5 x6 v.b. 0 31 13 3 x2 2 0 −1 3 3 2 x1 −5 4 1 3 3 2 x4 0 31 43 8 • Todos los costos reducidos son mayores o iguales a cero. • La solución óptima es: x1 = 2 x2 = 3 x3 = 0 x4 = 2 x5 = 0 x6 = 0 • El valor óptimo es: v% = −8. • Atención: la variable x4 estaba inicialmente en la base, luego salió de ésta, y en la última iteración volvió a entrar. ¿qué pasó ? Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 92 Solución Degenerada • ¿Qué pasa si al buscar la variable que sale de la base me encuentro un b empate, es decir, hay dos cuocientes aijj de idéntico valor? • Esto implica que la solución será degenerada, ya que alguna variable básica tomará valor cero. • Supongamos que tenemos el siguiente tableau rior: x1 x2 x3 x4 x5 x6 −3 2 1 1 0 0 2 −1 2 −1 0 1 0 4 1 1 4 0 0 1 8 −1 −2 −3 0 0 0 0 inicial del ejemplo antev.b. x4 x5 x6 • Si x3 entra a la base, la variable saliente se obtiene de: min{ 21 , ·, 48 } = 2. • Por lo tanto, tanto x4 o x6 podrán salir de la base. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 93 Solución Degenerada • Pivoteando en x4, tenemos: x1 −3 −4 13 −10 x2 2 4 −7 4 x3 1 0 0 0 x4 1 1 −4 3 x5 0 1 0 0 x6 0 0 1 0 v.b. 2 x3 6 x5 0 x6 6 • Si bien no estamos en el óptimo, estamos ante una solución factible básica degenerada • xB = {x3, x5, x6}, con x3 = 2, x5 = 6, y x6 = 0. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 94 x2 Solución Degenerada D x1 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 95 Dominio No Acotado • ¿Qué pasa si al buscar la variable que sale de la base, todos los aij son negativos? • En dicho caso la solución es no acotada, es decir, el dominio es no acotado. • Por ejemplo, si la última restricción hubiese sido −x1 + x2 + 4x3 ≤ 5: min −x1 − 2x2 − 3x3 −3x1 + 2x2 + x3 −x1 + 2x2 − x3 −x1 + x2 + 4x3 x 1 , x2 , x 3 ≤ ≤ ≤ ≥ 2 4 5 0 • Si se escoge a x1 para que entre a la base, no existe valor alguno de x1 que permita llevar a 0 algunas de las variables en la base. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 96 Dominio No Acotado • Las restricciones, con las holguras respectivas, son: −3x1 + 2x2 + x3 + x4 = 2 −x1 + 2x2 − x3 + x5 = 4 −x1 + x2 + 4x3 + x6 = 5 • Para determinar que variable sale de la base tenemos que: x4 = 2 + 3x1 x5 = 4 + x1 x6 = 5 + x1 • Claramente ninguna de las tres variables se hace cero, con valores no negativos de x1. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 97 Múltiples Soluciones • ¿Qué pasa si al analizar la solución final observamos que hay un costo reducido igual a cero asociado a una variable no básica? – Si esa variable se incorpora a la base, el valor de la función objetivo no se ve alterado. – Dos vértices con idéntico valor objetivo y cualquier combinación convexa de ambos, será óptima también. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 98 x2 Múltiples Soluciones x1 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 99 Ejemplo Múltiples Soluciones • En el ejemplo de la clase pasada, utilicemos el análisis matricial para determinar cuánto debió haber sido c3 para que hubiese sido atractivo de incorporar x3 a la base óptima final. • En el óptimo habı́amos obtenido: xD = {x3, x5, x6}, xB = {x1, x2, x4}. • El costo reducido final de las variables no básicas es: r!D = c!D −c!B B−1D c!D = [−3 0 0] (i.e. c3 = −3) c!B = [−1 − 2 0] 3 2 1 −4 −1 2 0 c!B B−1D = [−5 −1 B= 3 3 ] ! ! −1 1 4 1 1 0 ⇒ cD −cB B D = [2 3 3 ] 1 0 0 D = −1 1 0 4 0 1 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 100 Ejemplo Múltiples Soluciones • Para que x3 sea atractiva de incorporarla a la base, c3 − (−5) ≤ 0 ⇒ c3 ≤ −5. • Supongamos que c3 = −5, ası́ la solución: x1 = 2 x2 = 3 x3 = 0 x4 = 2 x5 = 0 x6 = 0 sigue siendo óptima, ya que r3 = 0, que sigue siendo no negativo. • Podrı́amos incorporar x3 a la base. Vemos que tendrı́a que salir x4. x1 x2 x3 x4 x5 x6 v.b. 1 1 0 1 1 0 3 3 3 x2 1 0 3 0 13 23 2 x1 4 0 0 8 1 −5 3 3 2 x4 0 0 0 0 13 43 8 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 101 Ejemplo Múltiples Soluciones • Pivoteando para que salga x4 de la base: x1 x2 x3 x4 x5 x6 13 1 11 0 1 0 −1 8 24 6 4 7 1 5 1 0 0 −3 8 24 6 4 1 −5 0 0 1 8 24 23 14 0 0 0 0 13 43 8 v.b. x2 x1 x3 • Otra solución de vértice es: 5 x4 = 0 4 11 x2 = x5 = 0 4 1 x6 = 0 x3 = 4 x1 = • Esta nos da el mismo valor de la función objetivo v% = −8 y tiene todos los costos reducidos no negativos, por lo tanto, también es solución óptima. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 102 Ejemplo Múltiples Soluciones • Cualquier combinación convexa también será solución óptima, es decir, todo x tal que 5 2 4 11 3 41 0 4 x = α + (1 − α) con 0 ≤ α ≤ 1. 2 0 0 0 0 0 Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 103 Agregando una variable al tableau final • Para incorporar una nueva variable que podrı́a ser atractiva en la solución óptima basta tomar el tableau final y vemos cuáles son las variables básicas y cuáles las no básicas. • Si una nueva actividad x7 aportara −6 por unidad a la función objetivo y consumiera una unidad de cada recurso en las restricciones, el costo reducido respectivo serı́a: −1 −3 2 1 1 −13 1= <0 r7 = −6 − [−1 − 2 0] −1 2 0 3 1 1 0 1 • Por lo tanto, sı́ nos interesarı́a incorporar x7 a la base y ası́ mejorar la solución actual. Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 104 Agregando una variable al tableau final • Los aij asociados a x7 en el tableau actual son: −1 2 −3 2 1 1 3 B−1D7 = −1 2 0 1 = 13 2 1 1 0 1 3 • El tableau serı́a por lo tanto: x1 x2 x3 x4 x5 x6 x7 13 1 2 11 0 1 0 −1 8 24 6 3 4 −3 7 1 1 1 0 0 8 24 6 3 54 2 2 1 0 0 1 18 −5 24 3 3 4 0 0 0 0 31 43 −13 8 3 Apuntes de Clases • Optimización • Claudio Seebach v.b. x2 x1 x3 Programación Lineal • 105