simplex de dos pasos

Anuncio
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.
Descargar