Método simplex modificado Los pasos iterativos del método
Transcripción
Método simplex modificado Los pasos iterativos del método
Método simplex modificado Los pasos iterativos del método simplex modificado o revisado son exactamente a los que seguimos con la tabla. La principal diferencia esá en que en este método se usa el algebra de matrices, con la gran ventaja que reduce el error de redondeo. Desarrollo de las condiciones de optimalidad y factibilidad El problema lineal general se puede plantear como sigue: Pn Maximizar o Minimizar z = j=1 cj xj sujeta a Pn j=1 Pj xj = b, xj ≥ 0, j = 1, . . . , n. Para un vector básico dado XB con su base B y vector objetivo CB correspondientes, la tabla general sı́mplex (matricial) indica que toda iteración sı́mplex se puede representar con las siguientes ecuaciones: z+ n X (zj − cj )xj = CB B −1 b j=1 (XB )i + n X (B −1 Pj )i xj = (B −1 b)i j=1 en donde zj − cj = CB B −1 Pj − cj Se usa la notación (V )i , para representar al i-ésimo elemento del vector V . Condición de optimalidad. En la ecuación de z de arriba, un aumento de xj no básica por encima de su valor actual cero mejorará el valor de z en relación con su valor actual, CB B −1 b, sólo si zj − cj es estrictamente negativo en el caso de maximización, y estrictamente positivo en caso de minimización. En caso contrario xj no puede mejorar la solución y debe permanecer como no básica de valor cero. Aunque se puede escoger cualquier variable no básica que satisfaga esta condición para mejorar la solución, en el método sı́mplex se usa una regla aproximada, que selecciona a la variable entrante como la 1 que tiene zj − cj más negativo si es maximización y más positivo si es minimización. Condición de factibilidad. La determinación del vector saliente se basa en examinar la ecuación de restricción asociada con la i-ésima variable básica. En forma especı́fica, (XB )i + n X (B −1 Pj )i xj = (B −1 b)i j=1 Cuando se selecciona el vector Pj con la condición de optimalidad para entrar a la base, su variable asociada xj aumentará sobre el valor cero. Al mismo tiempo, todas las variables no básicas restantes quedan de valor cero. Ası́, la i-ésima ecuación de restricción se reduce a (XB )i = (B −1 b)i − (B −1 Pj )i xj La ecuación indica que si (B −1 Pj )i > 0, un aumento de xj puede hacer que (XB )i , se vuelva negativo, lo cual viola la condición de no negatividad, (XB )i ≥ 0 para toda i. Entonces, (B −1 b)i − (B −1 Pj )i xj ≥ 0, ∀ i Esta condición lleva al siguiente valor máximo de la variable entrante xj : mı́n (B −1 b)i −1 | (B Pj )i > 0 xj = (B −1 Pj )i i La variable básica asociada a la relación mı́nima sale de la solución básica y se convierte en no básica con valor cero. Algoritmo sı́mplex modificado Después de desarrollar las condiciones de optimalidad y factibilidad, ahora presentaremos los pasos de cómputo del método sı́mplex modificado (o revisado). Paso 0. Forme una solución básica factible de arranque, y sean B y CB su base asociada y vector de coeficientes objetivo, respectivamente. 2 Paso 1. Calcule la inversa B −1 usando un método adecuado de inversión. Paso 2. Para cada variable xj no básica, calcule zj − cj = CB B −1 Pj − cj Si zj −cj ≥ 0 en maximización (≤ 0 en minimización) para toda xj no básica, deténgase; la solución óptima es XB = B −1 b, z = CB XB En caso contrario, aplique la condición de optimalidad y determine la variable entrante xj como la variable no básica con el valor más negativo de zj − cj en caso de maximización, y más positivo en caso de minimización. Paso 3. Calcule B −1 Pj . Si todos los elementos de B −1 Pj son negativos o cero, deténgase; el problema no tiene solución acotada (realmente esto es una no acotación en el espacio, lo que en algunos problemas no afecta, como en los de minimización. Es recomendable revisar el comportamiento de la función objetivo.). En caso contrario, calcule B −1 b. Entonces, para todos los elementos estrictamente positivos de B −1 Pj , determine las relaciones definidas por la condición de factibilidad. La variable básica xi asociada con la relación mı́nima es la variable saliente. Paso 4. A partir de la base actual B, forme una nueva base reemplazando al vector saliente Pj con el vector entrante Pj . Vaya al paso 1 para iniciar una nueva iteración. Ejemplo 7.2-1 Se resolverá el modelo de Reddy Mikks con el algoritmo sı́mplex modificado. El mismo modelo se resolvió con el método tabular previamente. Al comparar los dos métodos se demostrará que son uno y el mismo. La forma de ecuación, del modelo de Reddy Mikks, se puede expresar como sigue, en forma matricial: Maximizar z = (5, 4, 0, 0, 0, 0)(x1 , x2 , x3 , x4 , x5 , x6 )T 3 sujeta a 6 1 −1 0 4 2 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 x1 x2 x3 x4 x5 x6 = 24 6 1 2 Usaremos la notación C = (c1 , c2 , . . . , c6 ) para representar a los coeficientes de la función objetivo, y (P1 , P2 , . . . , P6 ) para representar los vectores columna de las ecuaciones de restricción. El lado derecho de las restricciones expresan al vector b. En los cálculos siguientes presentaremos la fórmula algebraica para cada paso, y su respuesta numérica final, sin detallar las operaciones aritméticas. Es instructivo que usted complete el desarrollo de cada paso. Iteración 0. XB0 = (x3 , x4 , x5 , x6 ), CB0 = (0, 0, 0, 0) B0 = (P3 , P4 , P5 , P6 ) = I, B0−1 = I Ası́, XB0 = B0−1 b = (24, 6, 1, 2)T , z = CB0 XB0 = 0 Cálculos de optimalidad CB0 B0−1 = (0, 0, 0, 0) {zj − cj }j=1,2 = CB0 B0−1 (P1 , P2 ) − (c1 , c2 ) = (−5, −4) Por consiguiente, P1 es vector entrante. Cálculos de factibilidad XB0 = (x3 , x4 , x5 , x6 )T = (24, 6, 1, 2)T 4 B0−1 P1 = (6, 1, −1, 0)T Por consiguiente, x1 = mı́n 24 6 , , −, − = mı́n{4, 6, −, −} = 4 6 1 y P3 es el vector saliente. Los resultados anteriores se pueden resumir en el conocido formato de tabla sı́mplex. La presentación debe contribuir a convencer al lector de que los dos métodos son esencialmente el mismo. Básica x1 x2 x3 x4 x5 x6 Solución z −5 −4 0 0 0 0 0 x3 6 24 x4 1 6 x5 −1 1 x6 0 2 Iteración 1. XB1 = (x1 , x4 , x5 , x6 ), CB1 = (5, 0, 0, 0) 6 0 0 0 1 1 0 0 B1 = (P1 , P4 , P5 , P6 ) = −1 0 1 0 0 0 0 1 Al usar un método adecuado de inversión, la inversa resulta: 1/6 0 0 0 −1/6 1 0 0 B1−1 = 1/6 0 1 0 0 0 0 1 Por consiguiente, XB1 = B1−1 b = (4, 2, 5, 2)T , z = CB1 XB1 = 20 5 Cálculos de optimalidad: CB1 B1−1 = (5/6, 0, 0, 0) {zj − cj }j=2,3 = CB1 B1−1 (P2 , P3 ) − (c2 , c3 ) = (−2/3, 5/6) Ası́, el vectro entrante es P2 . Cálculos de factibilidad: XB1 = (x1 , x4 , x5 , x6 )T = (4, 2, 5, 2)T B1−1 P2 = (2/3, 4/3, 5/3, 1)T Por consiguiente, x2 = mı́n 4 2 5 2 , , , 2/3 4/3 5/3 1 = mı́n{6, 3/2, 3, 2} = 3/2 y P4 se vuelve vector saliente. Iteración 2. XB2 = (x1 , x2 , x5 , x6 )T , CB2 = (5, 4, 0, 0) 6 4 0 0 1 2 0 0 B2 = (P1 , P2 , P5 , P6 ) = −1 1 1 0 0 1 0 1 Por lo tanto, 1/4 −1/2 0 0 −1/8 3/4 0 0 B2−1 3/8 −5/4 1 0 1/8 −3/4 0 1 Ası́, XB2 = B2−1 b = (3, 3/2, 5/2, 1/2)T , z = CB2 XB2 = 21 6 Cálculos de optimalidad: CB2 B2−1 = (3/4, 1/2, 0, 0) {zj − cj }j=3,4 = CB2 B2−1 (P3 , P4 ) − (c3 , c4 ) = (3/4, 1/2) Ası́, XB2 es óptimo y terminan los cálculos. Resumen de la solución óptima: x1 = 3, x2 = 1.5, z = 21 Otro ejemplo: Resolver: Minimizar z = 7x2 + 11x3 − 10x4 + 26x6 sujeta a x1 x2 −x3 +x5 +x6 x2 −x3 +x4 +3x6 +x2 −3x3 +x4 +x5 xk = 6 = 8 = 12 ≥ 0, ∀ k. Supongamos que escogemos como solución básica factible de inicio, XB0 = (x2 , x4 , x5 )T . En efecto se tiene que: 1 0 1 x2 6 x2 1 1 −1 6 2 1 1 0 x4 = 8 ⇒ x4 = −1 0 1 8 = 6 , 1 1 1 x5 12 x5 0 −1 1 12 4 por lo tanto, es solución básica factible y las columnas de su matriz asociada forman una base factible inicial. Iteración 0. XB0 = (x2 , x4 , x5 ), CB0 = (7, −10, 0) 7 1 0 1 1 1 −1 0 1 B0 = (P2 , P4 , P5 ) = 1 1 0 , B0−1 = −1 1 1 1 0 −1 1 Ası́, XB0 = B0−1 b = (2, 6, 4)T , z = CB0 XB0 = −46 Cálculos de optimalidad CB0 B0−1 = (17, 7, −17) {zj − cj }j=1,3,6 = CB0 B0−1 (P1 , P3 , P6 ) − (c1 , c3 , c6 ) = (−17, 16, 12) Por consiguiente, P3 es vector entrante. Cálculos de factibilidad XB0 = (x2 , x4 , x5 )T = (2, 6, 4)T B0−1 P3 = (1, −2, −2)T Por consiguiente, x3 = mı́n {2, −, −} = 2 y P2 es el vector saliente. Iteración 1. XB1 = (x3 , x4 , x5 ), CB1 = (11, −10, 0) −1 0 1 B1 = (P3 , P4 , P5 ) = −1 1 0 −3 1 1 Al usar un método adecuado de inversión, 1 1 B1−1 = 1 2 2 1 8 la inversa resulta: −1 −1 −1 Por consiguiente, XB1 = B1−1 b = (2, 10, 8)T , z = CB1 XB1 = −78 Cálculos de optimalidad: CB1 B1−1 = (1, −9, −1) {zj − cj }j=1,2,6 = CB1 B1−1 (P1 , P2 , P6 ) − (c1 , c2 , c6 ) = (−1, −20, −52) Ası́, XB1 es óptimo y terminan los cálculos. Resumen de la solución óptima: x1 = 0, x2 = 0, x3 = 2, x4 = 10, x5 = 8, x6 = 0, z = −78 Método simplex dual modificado Los pasos del método dual son como sigue: Paso 0. Sea B0 = I la base inicial y al menos uno de los elementos de XB0 sea negativo (verificar optimalidad). Paso 1. Calcular XB = B −1 b, los valores actuales de las variables básicas. Seleccionar la variable saliente xr que tenga el valor más negativo. Si todos los elementos de XB son no negativos, detenerse; la solución actual es factible. Paso 2. a) Calcular zj − cj = CB B −1 Pj − cj para todas las variables xj no básicas. b) Para todas las variables no básicas xj , calcular los coeficientes de restricción (B −1 Pj )r asociado con la fila de la variable saliente xj . 9 c) La variable entrante está asociada a mı́n zj − cj −1 θ= (B −1 Pj )r , (B Pj )r < 0 j Si todas las (B −1 Pj )r ≥ 0, no existe solución factible. Paso 3. Obtener la base nueva invercambiando los vectores entrante y saliente (Pj , Pr ). Calcular la nueva inversa y seguir en el paso 1. Ejemplo. Aplicar el método dual al siguiente problema: Minimizar z = 2x1 + x2 sujeta a ≥ 3 ≥ 6 ≤ 3 ≥ 0, ∀ k. 3x1 + x2 4x1 + 3x2 x1 + x2 xk Primero multiplico las dos primeras restricciones por −1. Luego agregamos variables de holgura: Minimizar z = 2x1 + x2 sujeta a −3x1 − x2 + x3 −4x1 − 3x2 + x4 x1 + x2 + x5 xk = −3 = −6 = 3 ≥ 0, ∀ k. Iteración 0 Paso 0. XB0 1 0 0 = (x3 , x4 , x5 )T , B0 = 0 1 0 , B0−1 = B0 0 0 1 10 Paso 1. XB0 = B0−1 b = (−3, −6, 3)T Entonces la variable saliente es x4 (la segunda entrada en el vector r = 2). Paso 2a. {zj −cj }j=1,2 = CB0 B0−1 (P1 , P2 )−(c1 , c2 ) = (0, 0, 0)I(P1 , P2 )−(2, 1) = (−2, −1) Paso 2b. {(B0−1 P1 )2 , (B0−1 P2 )2 } = (−4, −3) Paso 2c. mı́n zj − cj −1 = mı́n(1/2, 1/3) = 1/2 ⇒ x2 (B −1 P ) , (B0 Pj )r < 0 j j r 0 j=1,2,r=2 Paso 3. 1 −1 0 B1 = (P3 , P2 , P5 ) = 0 −3 0 0 1 1 Iteración 1 Paso 0. XB1 = (x3 , x2 , x5 )T , B1−1 1 −1/3 0 = 0 −1/3 0 , CB1 = (0, 1, 0) 0 1/3 1 Paso 1. XB1 = B1−1 b = (−1, 2, 1)T , entonces sale x3 , r = 1 11 Paso 2a. {zj − cj }j=1,4 1 −1/3 0 −3 0 = CB1 B1−1 (P1 , P4 ) − (c1 , c4 ) = (0, 1, 0) 0 −1/3 0 −4 1 − (2, 0) 0 1/3 1 1 0 = (2/3, −2/3) Paso 2b. {(B0−1 P1 )1 , (B0−1 P4 )1 } = (−5/3, −1/3) Paso 2c. mı́n zj − cj −1 = mı́n(2/5, 2) = 2/5 ⇒ x1 (B −1 P ) , (B0 Pj )r < 0 j j r 0 j=1,4,r=1 Paso 3. −3 −1 0 B2 = (P1 , P2 , P5 ) = −4 −3 0 1 1 1 Iteración 2 Paso 0. XB2 = (x1 , x2 , x5 )T , B2−1 −3/5 1/5 0 = 4/5 −3/5 0 , CB2 = (2, 1, 0) −1/5 2/5 1 Paso 1. XB2 = B2−1 b = (3/5, 6/5, 6/5)T , óptimo, x1 = 3/5, x2 = 6/5, z = CB2 XB2 = 12/5. 12 Matriz inversa Método de la matriz adjunta Dada A, matriz no singular de n × n, A−1 = 1 adjA, detA donde adjA = kAij kT , Aij = (−1)i+j Mij , y Mij es el menor del elemento aij . Este es el determinante de la matriz que resulta de quitar de la matriz A la fila i y la clumna j. Ejemplo: Calculemos la inversa de, 1 2 A= , 3 4 primero, detA = −2. Luego M11 =det 4 = 4, M12 =det3 = 3, M21 =det2 = 2, M22 =det1 = 1. Entonces, A11 = (−1)1+1 M11 = 4, A12 = (−1)1+2 M12 = −3, A21 = (−1)2+1 M21 = −2, A22 = (−1)2+2 M22 = 1. Por lo tanto, adjA = T 4 −3 −2 1 = 4 −2 −3 1 , entonces, A −1 1 = −2 4 −2 −3 1 = −2 1 3/2 −1/2 . Forma de producto de la inversa Sean Bn y Bn+1 dos matrices no singulares de n × n que difieren en una columna solamente. Si Bn−1 es conocida, entonces −1 Bn+1 = E Bn−1 , donde E se construye de la siguiente forma: sea Pj la columna de Bn que se sustituye por Pr para producir Bn+1 . Entonces la matriz E se forma como la 13 matriz identidad de n × n en la que se ha reemplazado su j-ésima columna por, (Bn−1 Pr )1 (Bn−1 Pr )2 .. 1 . ξ = − −1 , (Bn Pr )j (−1)j .. . −1 (Bn Pr )j −1 no existe. si (Bn−1 Pr )j = 0, Bn+1 Ejemplo: Tomemos una de las matrices 1 −1 0 −3 B1 = 0 1 del ejemplo del método dual modificado: 0 1 −1/3 0 0 , B1−1 = 0 −1/3 0 , 1 0 1/3 1 y tenemos, −3 −1 0 B2 = −4 −3 0 . 1 1 1 Queremos encontrar B2−1 . primera columna, entonces 1 −1 0 B1 P1B2 = 0 Primero, notemos que B1 y B2 difieren en la j = 1. Luego, −1/3 0 −3 −5/3 −1/3 0 −4 = 4/3 , 1/3 1 1 −1/3 entonces (B1−1 P1B2 )1 = −5/3. Por lo tanto, −3/5 ξ = 4/5 , −1/5 y tenemos, −3/5 0 0 E = 4/5 1 0 . −1/5 0 1 14 Finalmente, B2−1 = EB1−1 1 −1/3 0 −3/5 1/5 0 −3/5 0 0 = 4/5 1 0 0 −1/3 0 = 4/5 −3/5 0 −1/5 0 1 0 1/3 1 −1/5 2/5 1 15