El Método Simplex y Fase I

Anuncio
Pontificia Universidad Católica
Escuela de Ingeniería
Departamento de Ingeniería Industrial y de Sistemas
Clase 20 • El Método Simplex
ICS 1102 • Optimización
Profesor : Claudio Seebach
16 de octubre de 2006
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 48
Pasos en el Método Simplex
• El método Simplex está compuesto por tres pasos:
Paso Inicial
Paso Iterativo
Prueba de Optimalidad
No óptima
Solución
Óptima
Fin
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 49
Pasos en el Método Simplex
• Los tres pasos son:
1. Paso inicial: Determinar una solución factible en un vértice.
2. Prueba de optimalidad: La solución factible en un vértice es óptima
cuando ninguna de las soluciones en vértices adyacentes a ella sean
mejores.
3. Paso iterativo: Traslado a una mejor solución factible en un vértice
adyacente (repetir las veces que sea necesario).
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 50
Ejercicio Simplex
• Recordemos el ejemplo de las planchas de aluminio:
P ) min −800x1 − 600x2
s.a 15x1 + 5x2
7x1 + 14x2
0, 3x1 + 0, 3x2
x 1 , x2
≤
≤
≤
≥
600
630
15
0
• Introducir tres variables de holgura:
P ) min −800x1 − 600x2
s.a. 15x1 + 5x2 + x3
7x1 + 14x2 + x4
0, 3x1 + 0, 3x2 + x5
x 1 , x2
x 3 , x4 , x 5
Apuntes de Clases • Optimización • Claudio Seebach
=
=
=
≥
≥
600 (minutos disponibles)
630 (m2 de aluminio)
15 (lts de pintura)
0
0
Programación Lineal • 51
Ejercicio Simplex
1. Paso Inicial:
Tipo 2
• Determinar una solución inicial factible.
• 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:
– Asignar un valor cero a cada una de las variables originales.
x1= x2=0
Tipo 1
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 52
Ejercicio Simplex
• Las variables básicas son x3, x4, x5 y las no básicas son x1, x2.
• En formato tableau:
v.b.
x1 x2 x3 x4 x5
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 última fila se denominan costos reducidos
• La casilla inferior derecha del tableau indica el inverso aditivo del
valor de la función objetivo.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 53
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.
• Esto se puede verificar observando la última fila del tableau (Z): si
todos los valores son positivos o cero, estamos en el óptimo, de lo
contrario regresamos al paso iterativo.
• Tanto la variable x1 como x2 mejoran la función objetivo si aumentan
en una unidad ya que sus coeficientes en la fila de la función objetivo
son estrictamente negativos, por lo que nos convendrá que una de
ellas (cualquiera) entre a la base.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 54
Ejercicio Simplex
3. Paso Iterativo:
3.1 Parte I: Determinar la variable no básica que entra a la base.
• Tı́picamente se escoge la variable cuyo coeficiente en la función
objetivo sea el más negativo.
• Sin embargo podrı́a escogerse cualquier variable con costo reducido
negativo y el método igual convergerı́a.
• En nuestro ejemplo, la variable que más aporta a la función objetivo es x1, por lo que ésta será la variable entrante.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 55
Ejercicio Simplex
3.2 Parte II: Se determina la variable básica que sale de la base:
• Se elige la variable básica que primero alcanza el valor cero cuando
se incrementa la variable básica entrante.
630 15
• La variable saliente es x3, de min{ 600
15 , 7 , 0,3 } = 40.
3.3 Parte III: Se determina la nueva solución básica factible.
x1 x2 x3 x4 x5
1
1
1
0 0
40
3
15
• El nuevo tableau es:
−7
0 35
1
0
350
3
15
• El nuevo valor óptimo es -32.000
1
−1
0
3
5
50 0 1
1000 800
0 − 3 15 0 0 32.000
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 56
Tipo 2
Ejercicio Simplex
µ2= -333.3
µ3= 53.3
x1= 40
x2= 0
Apuntes de Clases • Optimización • Claudio Seebach
Tipo 1
Programación Lineal • 57
v.b.
x1
x4
x5
Ejercicio Simplex
• Aún existe una variable no básica cuyo costo reducido es negativo: x2.
• Esta variable reduce en 1000
3 la función objetivo por cada unidad que
aumente su valor, por lo que conviene que entre a la base.
• ¿por qué una unidad extra del producto 2 agrega sólo $ 1000
3 a la función
objetivo siendo que su utilidad era $600?
• Dada la combinación actual de productos, y nula disponibilidad de recursos del tipo 1 (tiempo), cada unidad extra del producto 2 exige
dejar de producir 13 de unidad del producto 1. La utilidad neta es
$600 − 13 · $800, esto es $ 1000
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
Programación Lineal • 58
Ejercicio Simplex
x4 x5
35
0 −5
3
1 −175
175
3
0 5
15
5000
0 3 37.000
v.b.
x1
x4
x2
Tipo 2
• El tableau siguiente es:
x1 x2 x3
1
1 0 10
7
0 0 10
0 1 −1
10
0 0 20
µ3= 20
µ5= 1666.6
x2= 15
x1= 35
Apuntes de Clases • Optimización • Claudio Seebach
Tipo 1
Programación Lineal • 59
Ejercicio Simplex
• Prueba de optimalidad: todos los costos reducidos no básicos son positivos, por lo que estamos en una solución óptima.
• Por lo tanto, la solución obtenida es la siguiente:
x1
x2
x3
x4
x5
=
=
=
=
=
35
15
0 (Restricción activa)
175 (Holgura de aluminio)
0 (Restricción activa)
Y el valor óptimo es -$37.000 (este valor calza con lo que se esperaba:
−32.000 − 15 ∗ 1000
3 ).
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 60
Ejercicio Simplex
• La optimalidad de esta solución es evidente si uno transforma este
tableau en el problema de minimización correspondiente:
5000
x5 − 37.000
P ) min 20x3 +
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
ser inferior a -$37.000.
• Basta hacer x3 = x5 = 0 para obtener una solución factible que alcanza
la cota mı́nima para el valor óptimo −37.000.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 61
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
objetivo empeora en $20. Es decir, µ3 = 20.
• Análogamente, µ4 = 0 y µ5 = 1666, 6 lo que es consistente con nuestros
resultados previos.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 62
Solución Básica Factible Inicial
• El método Simplex 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, es fácil identificar una SIFB:
– Definir el conjunto de variables básicas como el conjunto de holguras
de las restricciones: !xholguras = !b, y las demás variables originales
(no básicas) iguales a cero.
• 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
Programación Lineal • 63
Solución Básica Factible Inicial
• 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ı́a entonces:
min −800x1 − 600x2
s.a
15x1 + 5x2 + x3
7x1 + 14x2 + x4
0, 3x1 + 0, 3x2 − x5
xi
=
=
=
≥
600
630
15
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
Programación Lineal • 64
Solución Básica Factible Inicial
Tipo 2
• Como podemos ver, no el problema no posee una SIFB trivial:
D
(0,0) no es factible
Apuntes de Clases • Optimización • Claudio Seebach
Tipo 1
Programación Lineal • 65
Primera Fase
• Solución: resolver el problema en dos fases:
– 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
encontrada.
• En la primera fase se procurará inventar una solución básica al problema
que sea evidente:
– Agregará una variable artificial yi no negativa en cada una de las
restricciones que no cumpla con el formato estándar.
– Esto genera inmediatamente una SBIF del nuevo problema.
• Cualquier solución a este nuevo problema sólo será factible en el problema original si todas las variables artificiales son nulas.
• Reemplazar, sólo durante la primera fase del algoritmo, la función objetivo del problema original por:
#
min
yi
i
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 66
Primera Fase
• Supongamos que el problema original es el siguiente:
min c!x
s.a. A1x
A2x
A3x
x
• El problema queda:
min
#
yi ∈a2
yi +
≤
≥
=
≥
#
yi ∈a3
b1
b2
b3
0
yi
s.a. A1x + h1
A2x − e2 + a2
A3x + a3
x, h1, e2, a2, a3
=
=
=
≥
b1
b2
b3
0
• La SIFB de este problema es evidente: h1, a2 y a3 como el conjunto de
variables básicas.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 67
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
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.
2. 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 indica que el dominio del problema original no admite soluciones factibles, es decir, es vacı́o.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 68
Primera Fase
• En una primera fase, nos interesa resolver el siguiente problema:
min y3
s.a
15x1 + 5x2 + x3
7x1 + 14x2 + x4
0, 3x1 + 0, 3x2 − x5 + y3
xi
y3
• Su tableau asociado es el siguiente:
x1
x2
15
5
7
14
0, 3 0, 3
0
0
−800 −600
Apuntes de Clases • Optimización • Claudio Seebach
x3
1
0
0
0
0
=
=
=
≥
≥
x4
0
1
0
0
0
600
630
15
0,
0
x5
0
0
−1
0
0
y3
0
0
1
1
0
i ∈ {1, 2, 3, 4, 5}
v.b.
600 x3
630 x4
15 y3
0
0
Programación Lineal • 69
Primera Fase
• Es útil 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
Fase 2, en la que se vuelve a la función objetivo original.
• La función objetivo de la Fase I está en la penúltima fila.
• La SBIF corresponde a x3 = 600, x4 = 630, y3 = 15. Las demás
variables (no básicas) son cero.
• Hay que ajustar la función objetivo en el tableau para que contenga
sólo ceros en las columnas asociadas a las variables básicas:
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
Programación Lineal • 70
Primera Fase
• La solución anterior no es óptima: x1 y x2 tienen costo reducido negativo
• Después de una iteración de Simplex en el pivote destacado se alcanza
el siguiente tableau:
x1
x2
0
1
0
0
−500 0
25
2
1
2
3
20
−3
20
x3 x4 x5 y3
1 −5
0 0 375
14
1
0 14
0 0 45
−3
0 140 −1 1 1, 5
3
0 140
1 0 −1, 5
600
0 14 0 0 27000
Apuntes de Clases • Optimización • Claudio Seebach
v.b.
x3
x2
y3
Programación Lineal • 71
Tipo 2
Primera Fase Gráficamente
(0,45)
D
Tipo 1
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 72
Primera Fase
• La solución básica anterior aún no es factible para el problema original
pues y3 aún es positiva.
• La solución no es óptima para la Fase I: el costo reducido de la variable
3
).
x1 es negativo (− 20
• Una iteración adicional y obtenemos:
x1
0
0
1
0
0
x2
0
1
0
0
0
x3 x4
1 10
7
0 17
0 −1
7
0 0
0 −200
7
x5
250
3
10
3
−20
3
0
y3
−250
3
−10
3
20
3
1
−10000 10000
3
3
v.b.
250 x3
40 x2
10 x1
0
32000
• La solución básica alcanzada es óptima para la Fase I, ya que todas las
variables artificiales han salido de la base.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 73
Tipo 2
Primera Fase Gráficamente
(0,45)
(10,40)
D
Tipo 1
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 74
Fin Primera Fase
• A través de operaciones fila transformamos el problema de la Fase I en
el siguiente:
s.a
min y3
20
250
250
x 3 + x4 +
x5 −
y3
14
3
3
1
10
10
x2 + x4 + x5 − y3
7
3
3
1
20
20
x1 − x4 − x5 + y3
7
3
3
xi
y3
= 250
= 40
= 10
≥ 0,
≥ 0
i ∈ {1, 2, 3, 4, 5}
• La solución óptima prescinde de la variable y3.
• La solución básica factible alcanzada es: x1 = 10, x2 = 40, x3 =
250, x4 = x5 = 0 y es factible para el problema original.
• Basta eliminar la variable artificial y3 y reemplazar la función objetivo
por la original para poder comenzar la segunda fase.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 75
Transición Fase I a Fase II
• Las v. b. x1, x2 de esta solución aparecen en la función objetivo original:
min −800x1 − 600x2
• Es necesario realizar operaciones adicionales para que la función objetivo
quede expresada sólo en función de las variables no básicas.
• Esto se obtiene gracias a mantener durante la primera fase la última fila
del tableau con la función objetivo original.
• Basta reemplazar el valor de las v. b. en la función objetivo original:
f (x1, x2) = −800x1 − 600x2
20
20
1
10
10
1
= −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 última fila del tableau.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 76
Descargar