S IMPLEX DE DOS PASOS E LISA S CHAEFFER Programa de Posgrado en Ingenierı́a de Sistemas (P ISIS ) elisa@yalma.fime.uanl.mx I NVESTIGACI ÓN DE O PERACIONES S OLUCI ÓN INICIAL B ÁSICA Para empezar la iteración del algoritmo Simplex, se necesita una solución inicial básica, es decir, encontrar cualquier vector en la región factible. En problemas de maximización con restricciones de tipo ≤, se asigna sj = bj y xi = 0 para todas las variables originales y ya tenemos una solución inicial factible. Esto es lo que hicimos... L A BASE Para operar, en la tabla de Simplex es necesario tener una variable auxiliar para cada restricción, pero todavı́a no las hemos metido en restricciones de tipo =. Las variables auxiliares forman la matriz identidad inicial. Mientras progresa el algoritmo, diferentes variables van a “entrar” y “salir” de la matriz. Al conjunto de las variables que la forman en un cierto momento le llamará base de la solución actual. Buscar una base factible es conseguir por una solución básica inicial. ¿Igualdades? S OLUCI ÓN R ÁPIDA PARA IGUALDADES Si nuestro programa cuenta con restricciones de igualdad ri : ai,1 x1 + . . . + ai,n xn = bi se puede reemplazar tal ri con dos desigualdades que ya sabemos manejar bien: ri (≤) : ai,1 x1 + . . . + ai,n xn ≤ bi ri (≥) : ai,1 x1 + . . . + ai,n xn ≥ bi . Metemos las variables de holgura y excedente que corresponden a estas dos desigualdades y estamos listos para ejecutar Simplex. M ÉTODO DE VARIABLES ARTIFICALES Tal manera de reemplazar las restricciones de igualdad aumenta el número de restricciones en el programa, y no es deseable por razones computacionales. Otra opción, casi igualmente simple, de sobrevivir con restricciones de tipo “=” es añadir directamente una variable artificial si para tal rj con igualdad: ! n n X X aj,i xi + sj = bj . aj,i xi = bj ⇒ i=1 i=1 Sin embargo, la solución es factible solamente si sj = 0. ¿Cómo asegurarlo? A SEGURANDO QUE sj = 0 Utilizamos las operaciones de eliminación de Gauss para hacer que la columna de sj salga de la base. En cuanto la columna de sj ya no es parte la matriz identidad, la em ignoramos y la quitamos de la tabla. Como ahora no está en la base, tendrá valor cero en cualquier solución que resulta. Nunca volverı́a a entrar la base si se quedase en la tabla. Ası́ tenemos sj = 0 como querı́amos. Después de tal paso de eliminación de la columna de la variable sj , procedemos al proceso normal de pivotear con lo que queda de la tabla con el algoritmo Simplex. E L M ÉTODO DE M GRANDE Otra opción de verificar que la variable artificial sj de rj (originalmente una igualdad) tenga valor cero en la solución es modificar la función objetivo que se maximiza: f (x) = c1 x1 + . . . + cn xn − M · sj donde M ≫ 0 es un constante grande (más grande que todos los c). Cuando se miniza, se pone +M · sj para “ir en contra” de la dirección deseada cuando sj > 0. E L SEGUNDO PASO CON M GRANDE En el segundo paso inicial se elimina el número M de la fila de abajo que representa la función objetivo. Si hay más de una variable con M , se eliminan todas para llegar a tener cero en cada variable de la base. Como en el primer caso de la variable artificial, se pueden ignorar las columnas de las variables con coeficiente M cuando ya no están en la base y está resuelto el asunto de no cero en la fila de abajo. Después se inicia Simplex normalmente con la tabla que queda. E L EFECTO DEL M Tenemos una restricción sj ≥ 0 para la variable artificial que debe ser cero. La construcción de la función objetivo modificada es tal que su valor empeora cuando sj > 0. Como asignamos a M un valor muy grande, el óptimo de la función modificada ocurrirá donde sj = 0, si existe una solución factible al problema original. R ESTRICCIONES DE “ DIRECCI ÓN CONTRARIA ” ¿Qué pasa cuando tenemos restricciones rj de tipo ≥ en nuestro problema de maximización? Pues, se convierten en unos de tipo ≤, y con mala suerte, resultamos con unas cotas negativas bj < 0... pero no están permitidos en el Simplex básico. Ahora, si se trata de asignar sj = bj , esto viola la restricción sj ≥ 0 y entonces no se puede hacerlo. ¡Ya no tenemos una solución inicial básica con la cual iniciar Simplex! F ILA MALA Las filas que causan tales problemas se dicen filas malas: 1. Maximización: cada rj debe ser de tipo ≤; una restricción mala tiene bj < 0 2. Minimización: cada rj debe ser de tipo ≥; una restricción mala tiene bj < 0 Las cotas de las restricciones corresponden a los valores βj del lado derecha en las tablas de Simplex. Entonces, en las tablas, las filas malas son las que aparecen con βj < 0. S IMPLEX DE DOS PASOS Para eliminar filas malas (como hicimos con la variable artificial de una igualdad), se añede al Simplex un segundo paso inicial para buscar una solución básica inicial factible para empezar la iteración normal del método Simplex. Irónicamente, el segundo paso se realiza antes del primer paso. Escribimos nuestra tabla de Simplex como siempre, con las filas malas incluidas. La idea es primero correr Simplex hasta que quedan eliminadas todas la filas malas con βj < 0. La solución básica asociada a la tabla es factible solamante si no queda ninguna fila mala (o sea, no hay números negativos al lado derecho de la tabla). P ROBLEMA DE MINIMIZACI ÓN Dado un PL de minimización en forma estándar: A, b y c. Asignar xi = 0 para todas las variables originales y sj = bj no normalmente nos da una solución factible. Si la conversi´on a máx nos da mucho trabajo extra, podemos intentar de otra manera. L A OTRA MANERA Busca una base factible optimizando primero un problema auxiliar con variables auxiliares s1 , . . . , sk , función objetivo mı́n x k X si i=1 y restricciones [A|I][x|s] = [b] junto con ∀j ∈ {1, . . . , n} : xj ≥ 0, ∀i ∈ {1, . . . , k} : sj ≥ 0. L A BASE FACTIBLE Optimiza el problema auxiliar con Simplex e interpreta el resultado de la tabla final. Si tiene valor óptimo cero la solución del problema auxiliar (es decir, ∀i : si = 0, o sea, ninguna está en la base), el PL original está factible en la solución obtenida. Entonces ya cuentamos con una base factible para ejecutar Simplex con el PL original (es decir, cambiar la fila baja que representa la función objetiva). Si no es ası́, no hay solución factible para el PL. A CONTINUACI ÓN ... Herramientas que contienen (variaciones de) Simplex para solución de problemas de PL por computadora.