Sie sind auf Seite 1von 15

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 ≤ 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 Programación Lineal • 51


Ejercicio Simplex

1. Paso Inicial:
• 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.

Tipo 2

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:
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 ú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 obje-
tivo 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.
• La variable saliente es x3, de min{ 600 630 15
15 , 7 , 0,3 } = 40.

3.3 Parte III: Se determina la nueva solución básica factible.


x1 x2 x3 x4 x5 v.b.
1 1
1 3 15 0 0 40 x1
• El nuevo tableau es: −7
0 35 3 15 1 0 350 x4
• El nuevo valor óptimo es -32.000 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 Programación Lineal • 56

Ejercicio Simplex
Tipo 2

µ2= -333.3
µ3= 53.3
x1= 40 Tipo 1
x2= 0

Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 57


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 re-
cursos 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

• El tableau siguiente es:


x1 x2 x3 x4 x5 v.b.
1 0 101
0 −53 35 x1
0 0 107
1 −175
3 175 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 Programación Lineal • 59


Ejercicio Simplex

• Prueba de optimalidad: todos los costos reducidos no básicos son po-


sitivos, por lo que estamos en una solución óptima.
• Por lo tanto, la solución obtenida es la siguiente:
x1 = 35
x2 = 15
x3 = 0 (Restricción activa)
x4 = 175 (Holgura de aluminio)
x5 = 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
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
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 = 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 Programación Lineal • 64

Solución Básica Factible Inicial

• Como podemos ver, no el problema no posee una SIFB trivial:


Tipo 2

(0,0) no es factible Tipo 1

Apuntes de Clases • Optimización • Claudio Seebach 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 prob-
lema original si todas las variables artificiales son nulas.
• Reemplazar, sólo durante la primera fase del algoritmo, la función ob-
jetivo 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 ≤ 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.
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 posi-
ble encontrar una solución en que todos los yi sean nulos.
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 Programación Lineal • 68

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 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:
x1x2 x3 x4 x5 y3 v.b.
25
20 1 −5
14 0 0 375 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 Programación Lineal • 71


Primera Fase Gráficamente

Tipo 2
(0,45)

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 x2 x3 x4 x5 y3 v.b.
−250
0 0 1 107
250
3 3 250 x3
−10
0 1 0 17 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
variables artificiales han salido de la base.

Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 73


Primera Fase Gráficamente

Tipo 2
(0,45)
(10,40)

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:
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.
• 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
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 última fila del tableau.

Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 76

Das könnte Ihnen auch gefallen