El método Simplex, tal como lo hemos planteado aquí, requiere de una solución inicial factible básica (SIFB) para comenzar a iterar. En cualquier problema de programación lineal en forma estándar con b ≥ 0, resulta sencillo identificar una SIFB. Basta definir el conjunto de variables básicas como el conjunto de holguras de las restricciones. En ese caso se obtiene: xholguras = b, y
122 CHAPTER 3. PROGRAMACIÓN LINEAL Evidentemente esta situación es bastante particular. Muchos problemas lineales contienen re- stricciones de igualdad (ecuaciones) o desigualdades tales que al asignar un valor cero a las variables originales del problema no se obtiene un punto factible del dominio.
Volvamos al ejemplo inicial de este capítulo, en que debíamos determinar la producción de dos tipos de planchas de aluminio. Supongamos ahora que por alguna razón estamos forzados a utilizar al menos 15lts. de pintura. En este caso, el problema en forma estándar sería:
Min − 800x1− 600x2
s.a 15x1+ 5x2+ x3 = 600
7x1+ 14x2+ x4 = 630
0, 3x1+ 0, 3x2− x5 = 15
xi ≥ 0, i ∈ {1, 2, 3, 4, 5}
en que x3 y x4 son variables de holgura y x5 es de exceso.
Como podemos ver, no poseemos una SIFB. Ante estas situaciones se procederá a resolver el problema en dos fases. En la primera fase se procurará determinar una SIFB mientras que en la segunda fase se procederá con el método Simplex a partir de la SIFB encontrada.
En la primera fase se procurará inventar una solución básica al problema que sea aparente. Para esto se agregará una variable artificial yi no negativa en cada una de las restricciones que no
cumpla con el formato estándar; esto es en las restricciones de igualdad y en las restricciones que requirieron de variables de exceso. Agregar estas variables permite generar inmediatamente una solución básica al nuevo problema: el conjunto de variables no básicas quedaría compuesto por las variables originales y las variables de exceso, mientras las variables básicas serían las artificiales y las de holgura. Esta solución básica sería factible para el nuevo problema, pero no para el problema original. De hecho cualquier solución a este nuevo problema sólo será factible en el problema original si todas las variables artificiales son nulas. Por lo tanto en este nuevo problema se procurará identificar una solución factible básica en que todas las variables artificiales sean no básicas, es decir nulas (en este caso se habrá encontrado una SIFB al problema original). Por este motivo, se reemplazará (sólo durante la primera fase del algoritmo) la función objetivo del problema original por Min0yi.
Supongamos que el problema original es el siguiente: Min c⊺x
s.a. A1x ≤ b1
A2x ≥ b2 A3x = b3 x ≥ 0
3.2. EL MÉTODO SIMPLEX 123 (agregando variables de holgura y restando variables de exceso) y a continuación se prepara el problema para la primera fase agregando variables artificiales donde corresponda y modificando la función objetivo. En este caso el problema queda:
Min yi∈a2 yi+ yi∈a3 yi s.a. A1x+ h1 = b1 A2x− e2+ a2 = b2 A3x+ a3 = b3 x, h1, e2, a2, a3 ≥ 0
Como se observa, este nuevo problema tiene una SIFB evidente, pues basta considerar los vec- tores h1, a2 y a3como el conjunto de variables básicas. Así, es posible aplicar Simplex directamente
comenzando en dicha solución.
Si en la solución óptima a este problema todos los elementos yi tanto de a2 como de a3 son
nulos, entonces basta eliminar las variables artificiales del problema y utilizar la solución óptima como SIFB para el problema original. Si en cambio, la solución óptima contempla algún yi > 0
significa que no es posible encontrar una solución en que todos los yi sean nulos. Esto indicaría que
el dominio del problema original no admite soluciones factibles, es decir, es vacío. A continuación procederemos a aplicar esta metodología al problema del ejemplo. Primera fase
En una primera fase, nos interesa resolver el siguiente problema: Min y3 s.a 15x1+ 5x2+ x3 = 600 7x1+ 14x2+ x4 = 630 0, 3x1+ 0, 3x2− x5+ y3 = 15 xi ≥ 0, i ∈ {1, 2, 3, 4, 5} y3 ≥ 0
Su tableau asociado es el siguiente:
15 5 1 0 0 0 600
7 14 0 1 0 0 630
0, 3 0, 3 0 0 −1 1 15
0 0 0 0 0 1 0
−800 −600 0 0 0 0 0
124 CHAPTER 3. PROGRAMACIÓN LINEAL original. Esto permitirá facilitar la transición entre la fase 1 y la fase 2 en que se deberá volver a la función objetivo original. Sin embargo, se debe tener claridad que la fila en que se mantiene la función objetivo del problema de la fase 1 es la penúltima fila. Los elementos de dicha fila indicarán la eventual optimalidad de las soluciones alcanzadas. En este tableau, la SIFB corresponde a h1 = 600, h2= 630, y3 = 15, mientras las demás variables (no básicas) son cero. Sin embargo, resta
ajustar la función objetivo para que contenga sólo ceros en las columnas asociadas a las variables básicas. Para lograrlo es necesario restar la tercera fila a la cuarta fila obteniéndose el siguiente tableau: 15 5 1 0 0 0 600 7 14 0 1 0 0 630 0, 3 0, 3 0 0 −1 1 15 −0, 3 −0, 3 0 0 1 0 −15 −800 −600 0 0 0 0 0
La solución no es óptima pues x1 y x2 tienen costo reducido negativo (en ambos casos −0, 3).
Realizando una iteración de simplex en el pivote destacado se alcanza el siguiente tableau:
25 2 0 1 −514 0 0 375 1 2 1 0 1 14 0 0 45 3 20 0 0 140−3 −1 1 1, 5 −3 20 0 0 1403 1 0 −1, 5 −500 0 0 60014 0 0 27000
La solución básica alcanzada aún no es factible para el problema original pues y3 aún es positiva.
Observamos también que la solución no es óptima para la fase 1 pues el costo reducido de la variable x1 es negativo (−203 ). Por lo tanto realizamos una iteración adicional y obtenemos:
0 0 1 2014 2503 −2503 250 0 1 0 17 103 −103 40 1 0 0 −17 −203 203 10
0 0 0 0 0 1 0
0 0 0 −2007 −100003 100003 32000
La solución básica alcanzada en este caso es óptima para la fase 1 pues todas las variables artificiales (en este caso sólo una) han salido de la base. Es decir a través de operaciones fila hemos
3.2. EL MÉTODO SIMPLEX 125 transformado el problema de la fase 1 en el siguiente:
Min y3 s.a x3+20 14x4+ 250 3 x5− 250 3 y3 = 250 x2+1 7x4+ 10 3 x5− 10 3 y3 = 40 x1−1 7x4− 20 3 x5+ 20 3 y3 = 10 xi ≥ 0, i ∈ {1, 2, 3, 4, 5} y3 ≥ 0
cuya solución óptima prescinde de la variable y3. Así, la solución básica factible alcanzada (x1 =
10, x2 = 40, x3 = 250, x4 = x5 = 0) es factible para el problema original. Así, basta eliminar
la variable artificial (y3) y reemplazar la función objetivo por la original para poder comenzar la
segunda fase del problema. Es importante notar que las variables básicas de esta última solución aparecen en la función objetivo original, por lo que es necesario realizar operaciones adicionales para que la función objetivo quede expresada sólo en función de las variables no básicas. Es por este motivo que durante la primera fase mantuvimos la última fila del tableau con la función objetivo original. Para corroborar esta afirmación basta reemplazar el valor de las variables básicas en la función objetivo original:
f (x1, x2) = −800x1− 600x2 = −800(10 +17x4+20 3 x5− 20 3 y3 ) − 600(40 − 1 7x4− 10 3 x5+ 10 3 y3) = −32.000 −2007 x4−10000 3 x5+ 10000 3 y3
que es exactamente la expresión que aparece en la última fila del tableau. Es interesante notar también que en la penúltima fila correspondiente a la función objetivo artificial el único costo reducido distinto de cero es el de la variable artificial con coeficiente 1. Esto es esperable dado que la variable artificial está fuera de la base y la función objetivo consistía en minimizarla.
Para continuar con el problema basta eliminar la penúltima fila y la penúltima columna. De este modo se obtendrá un tableau inicial para la segunda fase que nos permite comenzar a iterar de inmediato en búsqueda de la solución óptima al problema.
126 CHAPTER 3. PROGRAMACIÓN LINEAL Segunda fase
Eliminando la cuarta fila y sexta columna del último tableau de la primera fase, obtenemos el tableau inicial para esta segunda fase:
0 0 1 2014 2503 250 0 1 0 17 103 40 1 0 0 −17 −203 10
0 0 0 −2007 −100003 32000
Así comenzamos desde la S.I.F.B.:
x1 = 10
x2 = 40
x3 = 250
x4 = 0
x5 = 0
Es decir, estamos comenzando desde un vértice del dominio del problema original. Al hacer una iteración del algoritmo obtenemos el siguiente tableau:
0 0 2503 1753 1 3 0 1 −125 17515 0 30 1 0 252 175−5 0 30 0 0 40 5000175 0 42000 que corresponde al óptimo del problema.