Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Metodo simplex uc
1. Pontificia Universidad Católica
Escuela de Ingeniería
Departamento de Ingeniería Industrial y de Sistemas
Clase 20 • El M´todo Simplex
e
ICS 1102 • Optimizaci´n
o
Profesor : Claudio Seebach
16 de octubre de 2006
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 48
o
Pasos en el M´todo Simplex
e
• El m´todo Simplex est´ compuesto por tres pasos:
e a
Paso Inicial
Paso Iterativo
Prueba de Optimalidad
No óptima
Solución
Óptima
Fin
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 49
o
2. Pasos en el M´todo Simplex
e
• Los tres pasos son:
1. Paso inicial: Determinar una soluci´n factible en un v´rtice.
o e
2. Prueba de optimalidad: La soluci´n factible en un v´rtice es ´ptima
o e o
cuando ninguna de las soluciones en v´rtices adyacentes a ella sean
e
mejores.
3. Paso iterativo: Traslado a una mejor soluci´n factible en un v´rtice
o e
adyacente (repetir las veces que sea necesario).
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 50
o
Ejercicio Simplex
• Recordemos el ejemplo de las planchas de aluminio:
P ) min −800x1 − 600x2
s.a 15x1 + 5x2 ≤ 600
7x1 + 14x2 ≤ 630
0, 3x1 + 0, 3x2 ≤ 15
x 1 , x2 ≥ 0
• Introducir tres variables de holgura:
P ) min −800x1 − 600x2
s.a. 15x1 + 5x2 + x3 = 600 (minutos disponibles)
7x1 + 14x2 + x4 = 630 (m2 de aluminio)
0, 3x1 + 0, 3x2 + x5 = 15 (lts de pintura)
x 1 , x2 ≥ 0
x 3 , x4 , x 5 ≥ 0
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 51
o
3. Ejercicio Simplex
1. Paso Inicial:
• Determinar una soluci´n inicial factible.
o
• Si todas las restricciones son desigualdades de menor o igual, todas
las variables son no negativas y todos los recursos disponibles son no
negativos, existe una soluci´n factible trivial:
o
– Asignar un valor cero a cada una de las variables originales.
Tipo 2
x1= x2=0
Tipo 1
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 52
o
Ejercicio Simplex
• Las variables b´sicas son x3, x4, x5 y las no b´sicas son x1, x2.
a a
• En formato tableau:
x1 x2 x3 x4 x5 v.b.
15 5 1 0 0 600 x3
7 14 0 1 0 630 x4
0,3 0,3 0 0 1 15 x5
-800 -600 0 0 0 0 0
• Los coeficientes de la ultima fila se denominan costos reducidos
´
• La casilla inferior derecha del tableau indica el inverso aditivo del
valor de la funci´n objetivo.
o
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 53
o
4. Ejercicio Simplex
2. Prueba de Optimalidad:
• Si el valor de Z puede mejorar (en este caso disminuir) al hacer que
una de las variables no b´sicas crezca.
a
• Esto se puede verificar observando la ultima fila del tableau (Z): si
´
todos los valores son positivos o cero, estamos en el ´ptimo, de lo
o
contrario regresamos al paso iterativo.
• Tanto la variable x1 como x2 mejoran la funci´n objetivo si aumentan
o
en una unidad ya que sus coeficientes en la fila de la funci´n objetivo
o
son estrictamente negativos, por lo que nos convendr´ que una de
a
ellas (cualquiera) entre a la base.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 54
o
Ejercicio Simplex
3. Paso Iterativo:
3.1 Parte I: Determinar la variable no b´sica que entra a la base.
a
• T´ıpicamente se escoge la variable cuyo coeficiente en la funci´n
o
objetivo sea el m´s negativo.
a
• Sin embargo podr´ escogerse cualquier variable con costo reducido
ıa
negativo y el m´todo igual converger´
e ıa.
• En nuestro ejemplo, la variable que m´s aporta a la funci´n obje-
a o
tivo es x1, por lo que ´sta ser´ la variable entrante.
e a
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 55
o
5. Ejercicio Simplex
3.2 Parte II: Se determina la variable b´sica que sale de la base:
a
• Se elige la variable b´sica que primero alcanza el valor cero cuando
a
se incrementa la variable b´sica entrante.
a
• La variable saliente es x3, de min{ 600 , 630 , 0,3 } = 40.
15 7
15
3.3 Parte III: Se determina la nueva soluci´n b´sica factible.
o a
x1 x2 x3 x4 x5 v.b.
1 1
1 3 15 0 0 40 x1
• El nuevo tableau es:
0 35 −7 1 0 350
3 15 x4
• El nuevo valor ´ptimo es -32.000
o 1 −1
0 5 50 0 1 3 x5
1000 800
0 − 3 15 0 0 32.000
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 56
o
Ejercicio Simplex
Tipo 2
µ2= -333.3
µ3= 53.3
x1= 40 Tipo 1
x2= 0
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 57
o
6. Ejercicio Simplex
• A´n existe una variable no b´sica cuyo costo reducido es negativo: x2.
u a
• Esta variable reduce en 1000 la funci´n objetivo por cada unidad que
3 o
aumente su valor, por lo que conviene que entre a la base.
• ¿por qu´ una unidad extra del producto 2 agrega s´lo $ 1000 a la funci´n
e o 3 o
objetivo siendo que su utilidad era $600?
• Dada la combinaci´n actual de productos, y nula disponibilidad de re-
o
cursos del tipo 1 (tiempo), cada unidad extra del producto 2 exige
dejar de producir 1 de unidad del producto 1. La utilidad neta es
3
$600 − 1 · $800, esto es $ 1000 .
3 3
• La variable que sale de la base es x5:
40 350 3
min 1 , 35 , 1 = {120, 30, 15} = 15
3 3 5
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 58
o
Ejercicio Simplex
• El tableau siguiente es:
x1 x2 x3 x4 x5 v.b.
1 0 101
0 −53 35 x1
0 0 107
1 −175 175
3 x4
0 1 −1
10 0 5 15 x2
5000
0 0 20 0 3 37.000
Tipo 2
x2= 15 µ3= 20
µ5= 1666.6
x1= 35 Tipo 1
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 59
o
7. Ejercicio Simplex
• Prueba de optimalidad: todos los costos reducidos no b´sicos son po-
a
sitivos, por lo que estamos en una soluci´n ´ptima.
o o
• Por lo tanto, la soluci´n obtenida es la siguiente:
o
x1 = 35
x2 = 15
x3 = 0 (Restricci´n activa)
o
x4 = 175 (Holgura de aluminio)
x5 = 0 (Restricci´n activa)
o
Y el valor ´ptimo es -$37.000 (este valor calza con lo que se esperaba:
o
−32.000 − 15 ∗ 1000 ).
3
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 60
o
Ejercicio Simplex
• La optimalidad de esta soluci´n es evidente si uno transforma este
o
tableau en el problema de minimizaci´n correspondiente:
o
5000
P ) min 20x3 + x5 − 37.000
3
1 5
s.a x1 + x3 − x5 = 35
10 3
7 175
x3 + x4 − x5 = 175
10 3
1
x2 − x3 + 5x5 = 15
10
x 1 , x2 ≥ 0
x 3 , x4 , x5 ≥ 0
• Dado que las variables deben ser no negativas, el valor ´ptimo no puede
o
ser inferior a -$37.000.
• Basta hacer x3 = x5 = 0 para obtener una soluci´n factible que alcanza
o
ınima para el valor ´ptimo −37.000.
la cota m´ o
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 61
o
8. Ejercicio Simplex
• El tableau final entrega los multiplicadores asociados a cada uno de los
recursos necesarios para producir planchas de aluminio.
• µ1 y µ2 son los multiplicadores asociados a la no negatividad de las
variables x1 y x2, mientras que µ3, µ4 y µ5 los multiplicadores asociados
a las restricciones de minutos de trabajo, m2 de material y litros de
pintura, respectivamente.
• Los costos reducidos indican que si x3 aumenta en una unidad, la funci´n
o
objetivo empeora en $20. Es decir, µ3 = 20.
• An´logamente, µ4 = 0 y µ5 = 1666, 6 lo que es consistente con nuestros
a
resultados previos.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 62
o
Soluci´n B´sica Factible Inicial
o a
• El m´todo Simplex requiere de una soluci´n inicial factible b´sica (SIFB)
e o a
para comenzar a iterar.
• En cualquier problema de programaci´n lineal en forma est´ndar con
o a
b ≥ 0, es f´cil identificar una SIFB:
a
– Definir el conjunto de variables b´sicas como el conjunto de holguras
a
de las restricciones: xholguras = b, y las dem´s variables originales
a
(no b´sicas) iguales a cero.
a
• Los problemas que tienen restricciones de igualdad o desigualdades ”≥”,
tal que al asignar un valor cero a las variables originales del problema
no se obtiene un punto factible del dominio.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 63
o
9. Soluci´n B´sica Factible Inicial
o a
• En el ejemplo del aluminio, supongamos ahora que estamos forzados a
utilizar al menos 15 lts de pintura.
• El problema en forma est´ndar ser´ entonces:
a ı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.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 64
o
Soluci´n B´sica Factible Inicial
o a
• Como podemos ver, no el problema no posee una SIFB trivial:
Tipo 2
D
(0,0) no es factible Tipo 1
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 65
o
10. Primera Fase
• Soluci´n: resolver el problema en dos fases:
o
– En la primera fase se usa el Simplex para determinar una SIFB
– En la segunda fase se usa el m´todo Simplex a partir de la SIFB
e
encontrada.
• En la primera fase se procurar´ inventar una soluci´n b´sica al problema
a o a
que sea evidente:
– Agregar´ una variable artificial yi no negativa en cada una de las
a
restricciones que no cumpla con el formato est´ndar.
a
– Esto genera inmediatamente una SBIF del nuevo problema.
• Cualquier soluci´n a este nuevo problema s´lo ser´ factible en el prob-
o o a
lema original si todas las variables artificiales son nulas.
• Reemplazar, s´lo durante la primera fase del algoritmo, la funci´n ob-
o o
jetivo del problema original por:
min yi
i
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 66
o
Primera Fase
• Supongamos que el problema original es el siguiente:
min c x
s.a. A1x ≤ b1
A2x ≥ b2
A3x = b3
x ≥ 0
• El problema queda:
min yi + yi
yi ∈a2 yi ∈a3
s.a. A1x + h1 = b1
A2x − e2 + a2 = b2
A3x + a3 = b3
x, h1, e2, a2, a3 ≥ 0
• La SIFB de este problema es evidente: h1, a2 y a3 como el conjunto de
variables b´sicas.
a
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 67
o
11. Primera Fase
• Es posible aplicar Simplex directamente comenzando en dicha SIBF.
• Se pueden dar dos casos:
1. En la soluci´n ´ptima a este problema todos los elementos yi tanto
o o
de a2 como de a3 son nulos, entonces basta eliminar las variables
artificiales del problema y utilizar la soluci´n ´ptima como SIFB
o o
para el problema original.
2. La soluci´n ´ptima contempla alg´n yi > 0 significa que no es posi-
o o u
ble encontrar una soluci´n en que todos los yi sean nulos.
o
Esto indica que el dominio del problema original no admite solu-
ciones factibles, es decir, es vac´ıo.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 68
o
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:
x1 x2 x3 x4 x5 y3 v.b.
15 5 1 0 0 0 600 x3
7 14 0 1 0 0 630 x4
0, 3 0, 3 0 0 −1 1 15 y3
0 0 0 0 0 1 0
−800 −600 0 0 0 0 0
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 69
o
12. Primera Fase
• Es util incluir una fila adicional en la parte inferior del tableau con la
´
funci´n objetivo original. Esto facilita la transici´n entre la Fase 1 y la
o o
Fase 2, en la que se vuelve a la funci´n objetivo original.
o
• La funci´n objetivo de la Fase I est´ en la pen´ltima fila.
o a u
• La SBIF corresponde a x3 = 600, x4 = 630, y3 = 15. Las dem´s
a
variables (no b´sicas) son cero.
a
• Hay que ajustar la funci´n objetivo en el tableau para que contenga
o
s´lo ceros en las columnas asociadas a las variables b´sicas:
o a
x1 x2 x3 x4 x5 y3 v.b.
15 5 1 0 0 0 600 x3
7 14 0 1 0 0 630 x4
0, 3 0, 3 0 0 −1 1 15 y3
−0, 3 −0, 3 0 0 1 0 −15
−800 −600 0 0 0 0 0
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 70
o
Primera Fase
• La soluci´n anterior no es ´ptima: x1 y x2 tienen costo reducido negativo
o o
• Despu´s de una iteraci´n de Simplex en el pivote destacado se alcanza
e o
el siguiente tableau:
x1x2 x3 x4 x5 y3 v.b.
25
20 1 −5 0 0 375
14 x3
1 1
21 0 14 0 0 45 x2
3 −3
200 0 140 −1 1 1, 5 y3
−3 3
200 0 140 1 0 −1, 5
600
−500 0 0 14 0 0 27000
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 71
o
13. Primera Fase Gr´ficamente
a
Tipo 2
(0,45)
D
Tipo 1
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 72
o
Primera Fase
• La soluci´n b´sica anterior a´n no es factible para el problema original
o a u
pues y3 a´n es positiva.
u
• La soluci´n no es ´ptima para la Fase I: el costo reducido de la variable
o o
3
x1 es negativo (− 20 ).
• Una iteraci´n adicional y obtenemos:
o
x1 x2 x3 x4 x5 y3 v.b.
−250
0 0 1 107
250
3 3 250 x3
−10
0 1 0 1 7
10
3 3 40 x2
1 0 0 −17
−20
3
20
3 10 x1
0 0 0 0 0 1 0
0 0 0 −200
7
−10000 10000
3 3 32000
• La soluci´n b´sica alcanzada es ´ptima para la Fase I, ya que todas las
o a o
variables artificiales han salido de la base.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 73
o
14. Primera Fase Gr´ficamente
a
Tipo 2
(0,45)
(10,40)
D
Tipo 1
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 74
o
Fin Primera Fase
• A trav´s de operaciones fila transformamos el problema de la Fase I en
e
el siguiente:
min y3
20 250 250
s.a x 3 + x4 + x5 − y3 = 250
14 3 3
1 10 10
x2 + x4 + x5 − y3 = 40
7 3 3
1 20 20
x1 − x4 − x5 + y3 = 10
7 3 3
xi ≥ 0, i ∈ {1, 2, 3, 4, 5}
y3 ≥ 0
• La soluci´n ´ptima prescinde de la variable y3.
o o
• La soluci´n b´sica factible alcanzada es: x1 = 10, x2 = 40, x3 =
o a
250, x4 = x5 = 0 y es factible para el problema original.
• Basta eliminar la variable artificial y3 y reemplazar la funci´n objetivo
o
por la original para poder comenzar la segunda fase.
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 75
o
15. Transici´n Fase I a Fase II
o
• Las v. b. x1, x2 de esta soluci´n aparecen en la funci´n objetivo original:
o o
min −800x1 − 600x2
• Es necesario realizar operaciones adicionales para que la funci´n objetivo
o
quede expresada s´lo en funci´n de las variables no b´sicas.
o o a
• Esto se obtiene gracias a mantener durante la primera fase la ultima fila
´
del tableau con la funci´n objetivo original.
o
• Basta reemplazar el valor de las v. b. en la funci´n objetivo original:
o
f (x1, x2) = −800x1 − 600x2
1 20 20 1 10 10
= −800(10 + x4 + x5 − y3 ) − 600(40 − x4 − x5 + y3)
7 3 3 7 3 3
200 10000 10000
= −32.000 − x4 − x5 + y3
7 3 3
• Esto es la expresi´n que aparece en la ultima fila del tableau.
o ´
Apuntes de Clases • Optimizaci´n • Claudio Seebach
o Programaci´n Lineal • 76
o