Método Simplex Revisado con Cotas Daniel Severin Esta vez, vamos a resolver un ejercicio cuyo enunciado es: Resolver el siguiente problema mediante el método simplex revisado con cotas. máx z = x1 − x2 s/a x1 − 2x2 ≤ −2 x1 + x2 ≤ 10 x1 ≤ 4 2 ≤ x2 ≤ 5 Preliminares. Lo primero que hacemos es convertir el problema a su forma standard: máx z = x1 − x2 s/a x1 − 2x2 + x3 = −2 x1 + x2 + x4 = 10 x1 ≤ 4 2 ≤ x2 ≤ 5 0 ≤ x3 0 ≤ x4 Matricialmente, máx z = c.x s/a A.x = b l≤x≤u 1 donde, x 1 x2 1 −2 1 0 −2 A= ,b = ,x = x3 1 1 0 1 10 x4 y c = (1, −1, 0, 0). Las cotas inferiores y superiores son l = (−∞, 2, 0, 0) y u = (4, 5, +∞, +∞) respectivamente. Búsqueda primer solución factible. El método es el siguiente: Se propone una solución básica y, si es factible, se comienza a trabajar con ella como primer solución factible. Si, en cambio, resulta no factible, se resuelve primero el problema de inicialización. A primera vista, la función objetivo muestra que conviene hacer crecer x1 tanto como se pueda, y conviene hacer decrecer x2 también. Ası́ que proponemos como solución básica, la que envı́a x1 a su cota superior y x2 a su cota inferior. Es decir, x1 = 4, x2 = 2, x3 = −2, x4 = 4. Sin embargo, es no factible pues x3 se vuelve negativa. Entonces, vamos a resolver un problema auxiliar. Cuando a cada restricción le corresponde una slack, un método posible es agregar tantas variables artificiales como restricciones se violen (en nuestro ejercicio se viola la primera restricción) y tomar como variables básicas a las artificiales más las slacks cuyas restricciones asociadas no se violan (en nuestro ejercicio, x4 ). máx v = x5 s/a x1 − 2x2 + x3 + x5 = −2 x1 + x2 + x4 = 10 x1 ≤ 4 2 ≤ x2 ≤ 5 0 ≤ x3 0 ≤ x4 x5 ≤ 0 La variable artificial agregada es x5 . La idea es que x5 alcance su cota superior que vale cero. Las matrices y vectores que conforman el problema auxiliar 2 son A= 1 −2 1 0 1 1 1 0 1 0 ,b = −2 10 ,x = x1 x2 x3 x4 x5 y c = (0, 0, 0, 0, 1). Las cotas inferiores y superiores son l = (−∞, 2, 0, 0, −∞) y u = (4, 5, +∞, +∞, 0) respectivamente. Ahora, la primer base factible es B = [a5 , a4 ] = I = B −1 , N1 = [a2 , a3 ], N2 = [a1 ] (recordar que x1 tomaba su cota superior y x2 su cota inferior, y gracias a la adjunción de la variable artificial, x3 puede tomar su cota inferior). En todo lo que sigue, N1 corresponderán a las columnas de la no-base correspondientes a las variables que toman su cota inferior. Y N2 corresponderán a las columnas de la no-base correspondientes a las variables que toman su cota superior. Test de optimalidad. Recordemos que v = cB .B −1 .b + (cN1 − cB .B −1 .N1 ).xN1 + (cN2 − cB .B −1 .N2 ).xN2 Debemos investigar los coeficientes de la función objetivo. Llamemos w al vector que resulta del producto cB .B −1 . Utilizando la primer solución factible hallada, w = (1, 0).I = (1, 0). Lo siguiente es evaluar los coeficientes de la función objetivo hasta encontrar una variable no básica que, al modificarse, pueda mejorar el objetivo: c1 − w.a1 = −1 < 0, por lo tanto entra x1 a la base y dejamos de buscar en los coeficientes de la función objetivo. NOTA: Las variables que estén en sus cotas superiores deben tener coeficientes negativos para entrar a la base. Las variables que estén en sus cotas inferiores deben tener coeficientes positivos para entrar a la base. Test de factibilidad. Ahora tenemos que hallar la variable saliente que más restricción impone, cuando x1 comienza a decrecer. Supongamos que x1 → x1 − ∆, con ∆ ≥ 0. Entonces, el cambio que efectúan las variables básicas es xB → xB + B −1 .a1 .∆. 3 Es decir, si x1 → 4 − ∆ entonces x5 → x5 + 1.∆ = −2 + ∆, x4 → x4 + 1.∆ = 4 + ∆. NOTA: Dividiremos este test en 4 partes. En la primer parte estudiaremos xB ≥ lB y asignaremos γ1 al ∆ más restringido que podamos obtener. En la segunda parte estudiaremos xB ≤ uB y asignaremos γ2 al ∆ más restringido que podamos obtener. En la tercer parte estudiaremos x1 ≥ l1 y asignaremos γ3 al ∆ más restringido que podamos obtener. Finalmente, calcularemos γ = mı́n(γ1 , γ2 , γ3 ) y, si γ = +∞ el problema es no acotado. Por otra parte, si γ = γ3 entonces x1 no entra a la base, saltando de su cota superior a su cota inferior simplemente. En el resto de los casos, x1 entrará a la base con valor x1 − γ y existirá una variable básica que saldrá (justamente, aquella que imponga la mayor restricción). PRIMERA PARTE. Las restricciones son x5 = −2 + ∆ ≥ −∞, y x4 = 4 + ∆ ≥ 0. Como ninguna acota a ∆, γ1 = +∞. SEGUNDA PARTE. Las restricciones son x5 = −2 + ∆ ≤ 0, y x4 = 4 + ∆ ≤ +∞. Por lo tanto, x5 es una posible candidata a salir de la base y γ2 = 2. TERCERA PARTE. La restricción es x1 = 4 − ∆ ≥ −∞. Nuevamente, γ3 = +∞. PARTE FINAL. Tenemos a γ = mı́n(+∞, 2, +∞) = 2. En consecuencia, x5 resulta ser la variable saliente. Cabe aclarar que x5 va a pasar a su cota superior. Actualización. Para poder pasar a la próxima iteración (la cual comienza con el test de optimalidad) debemos actualizar la base: 1 0 −1 , N1 = [a2 , a3 ], N2 = [a5 ] B = [a1 , a4 ], B = −1 1 Algunas observaciones son: Dado que x5 pasa a valer su cota superior, el problema auxiliar alcanza su óptimo. Además, éste óptimo es cero lo que quiere decir que la solución básica que tenemos es factible en el problema original. De este modo, en la siguiente iteración ya podemos volver al problema original. 4 ¿Sirve de algo mantener x5 en el problema original? NO! Es una variable que no aporta nada; su valor es cero. Podemos quitarla de la no-base. Por lo tanto, consideraremos N2 = [ ] y c = (1, −1, 0, 0). Test de optimalidad. Debemos investigar otra vez los coeficientes de la función objetivo. Sea w = cB .B −1 = (1, 0). Ahora procedemos a evaluar los coeficientes de la función objetivo: c2 − w.a2 = −1 + 2 = 1 > 0, por lo tanto entra x2 a la base y dejamos de buscar en los coeficientes de la función objetivo. Test de factibilidad. Supongamos que x2 → x2 + ∆, con ∆ ≥ 0. Entonces, el cambio que efectúan las variables básicas es xB → xB − B −1 .a2 .∆. Es decir, si x2 → 2 + ∆ entonces x1 → x1 − (−2).∆ = 2 + 2∆, x4 → x4 − 3.∆ = 6 − 3∆. Al valor del x2 previo ya lo conocı́amos por que sabı́amos que estaba en su cota inferior (x2 = 2). A los valores de las variables básicas los podemos calcular usando B −1 .b − B −1 .N1 .xN1 − B −1 .N2 .xN2 : 1 0 −2 1 0 −2 1 2 2 x1 = . − . . = x4 −1 1 10 −1 1 1 0 0 6 PRIMERA PARTE. Las restricciones son x1 = 2 + 2∆ ≥ −∞, y x4 = 6 − 3∆ ≥ 0. Por lo tanto, x4 es una posible candidata a salir de la base y γ1 = 2. SEGUNDA PARTE. Las restricciones son x1 = 2 + 2∆ ≤ 4, y x4 = 6 − 3∆ ≤ +∞. Por lo tanto, x1 es una posible candidata a salir de la base y γ2 = 1. TERCERA PARTE. Debemos verificar que x2 (que actualmente está en su cota inferior) no sobrepase su cota superior. La restricción es x2 = 2 + ∆ ≤ 5, lo que genera γ3 = 3. PARTE FINAL. Tenemos a γ = mı́n(2, 1, 3) = 1. En consecuencia, x1 resulta ser la variable saliente. Cabe aclarar que x1 va a pasar a su cota superior. 5 Actualización. Para poder pasar a la próxima iteración debemos actualizar la base: −1/2 0 −1 B = [a2 , a4 ], B = , N1 = [a3 ], N2 = [a1 ] 1/2 1 Test de optimalidad. Sea w = cB .B −1 = (1/2, 0). Ahora procedemos a evaluar los coeficientes de la función objetivo: c3 − w.a3 = 0 − 1/2 = −1/2 ≤ 0, c1 − w.a1 = 1 − 1/2 = 1/2 ≥ 0. Como no encontramos ninguna variable en N1 (i.e. x3 ) con coeficiente positivo estricto, ni ninguna variable en N2 (i.e. x1 ) con coeficiente negativo estricto, se cumple la condición de optimalidad. Resultado. Como sólo nos interesa saber x∗1 y x∗2 , podemos aprovechar la información de la última iteración. x1 pasó a su cota superior, ası́ que x∗1 = 4. También, x2 entró a la base con el valor 2 + γ, es decir x∗2 = 3. Con esto es suficiente para computar la función objetivo, z ∗ = x∗1 − x∗2 = 1. NOTA: La forma general de calcular los resultados es apelando al último diccionario, x∗B = B −1 .b − B −1 .N1 .x∗N1 − B −1 .N2 .x∗N2 . z = cB .B .b + (cN1 − cB .B −1 .N1 ).x∗N1 + (cN2 − cB .B −1 .N2 ).x∗N2 ∗ −1 OTRA NOTA: En realidad, en este ejercicio hubo una restricción que se podrı́a haber eliminado. Nótese que x1 − 2x2 ≤ −2, x1 ≤ 4 y 2 ≤ x2 ≤ 5 implican x1 + x2 ≤ 9 (se puede observar claramente si se dibuja el poliedro). Es decir, que la segunda restricción del ejercicio siempre se cumple. Y además, no se cumple por igualdad. En el método simplex, una restricción ası́ sólo genera una fila extra en la matriz A y una variable slack inútil (en este caso, x4 ) pues nunca puede salir de la base. 6
© Copyright 2024