Intro. Simplex

Anuncio
Pontificia Universidad Católica
Escuela de Ingeniería
Departamento de Ingeniería Industrial y de Sistemas
Clase 19 • El Método Simplex
ICS 1102 • Optimización
Profesor : Claudio Seebach
11 de octubre de 2005
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 37
Problemas Lineales en Formato Estándar
• Condiciones:
1. Restricciones de no negatividad en todas las variables
2. Todas las restricciones son de igualdad
3. El vector b tiene todos los componentes positivos
• Ejemplo:
P) max z = −3x1 +2x2
s.a.
−3x1 +3x2 +x3
=6
−4x1 +2x2
+x4 = 2
x1 ,
x2 , x3 , x4 ≥ 0
• Se traduce al siguiente formato matricial que denominaremos tableau:
x1
−3
−4
−3
Apuntes de Clases • Optimización • Claudio Seebach
x2
3
2
2
x3
1
0
0
x4
0 =6
1 =2
0
Programación Lineal • 38
Variables Básicas y Fuera de Base
• Consideremos el sistema A!x = !b, con A de dimensión m × n, que define
m ecuaciones lineales.
• Una solución básica se obtiene al igualar a 0 a n−m variables, y resolver
para las m restantes, suponiendo que son linealmente independientes.
• La elección de distintas bases lleva a distintas soluciones al sistema.
• Ejemplo:
x1 +x2
=3
−x2 +x3 = −1
• Consideremos la base {x1, x2} y fuera de base {x3}, o sea x3 = 0, por
lo tanto el sistema queda:
x1 +x2 = 3
−x2 = −1
• Por lo tanto x1 = 2, x2 = 1, x3 = 0 es una solución básica para el
sistema de ecuaciones inicial.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 39
Variables Básicas y Fuera de Base
• Algunas elecciones de bases pueden no llevar a una solución. Ejemplo:
x1 +2x2 +x3 = 1
2x1 +4x2 +x3 = 3
• La elección de la base {x1, x2}, lleva a tener que solucionar:
x1 +2x2 = 1
2x1 +4x2 = 3
• Este sistema no tiene solución con esa base.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 40
Soluciones a un problema de LP
Definición 1 Una solución básica en la cual todas las variables son
no negativas se le denomina una solución básica factible
Teorema 1 Un punto en la región factible de un problema de LP es un
punto extremo si y solo si es una solución básica factible al problema.
Teorema 2 En un problema de prog. lineal en formato estándar,
con soluciones básicas factibles !b1, !b2, . . . , !bk . Todo punto de la región
factible se puede escribir de la forma:
!x = d! +
k
!
σi!bi
i=1
k
!
i=1
σi = 1, σi ≥ 0
donde d! es !0 o una dirección no acotada.
Teorema 3 Si un problema de programación lineal tiene solución óptima,
entonces tiene una solución básica factible óptima.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 41
El Algoritmo Simplex
• Consideremos el siguiente problema de LP:
P) max z = 60x1
s.a.
8x1
4x1
2x1
x1 ,
+30x2
+6x2
+2x2
+1, 5x2
x2
x2 ,
+20x3
+x3
≤ 48
+1, 5x3 ≤ 20
+0, 5x3 ≤ 8
≤5
x3
≥0
• Se traduce al siguiente formato canónico, con las variables básicas
{s1, s2, s3, s4} y fuera de base {x1, x2, x3}, i.e. x1, x2, x3 = 0:
8x1 +6x2
+x3 +s1
= 48
4x1 +2x2 +1, 5x3
+s2
= 20
2x1 +1, 5x2 +0, 5x3
+s3
=8
x2
+s4 = 5
z −60x1 −30x2 −20x3
=0
Apuntes de Clases • Optimización • Claudio Seebach
s1 = 48
s2 = 20
s3 = 8
s4 = 5
z=0
Programación Lineal • 42
El Algoritmo Simplex
• Lo anterior se puede resumir en el siguiente tableau canónico, con
las variables básicas {s1, s2, s3, s4} y fuera de base {x1, x2, x3}.
z x 1 x2
8 6
4 2
2 1,5
1
1 -60 -30
x 3 s1 s2 s3 s4
v.b.
1 1
= 48 s1
1,5
1
= 20 s2
= 8 s3
0,5
1
0,5
1 = 5 s4
-20
• ¿es óptima la actual solución básica factible? No.
• De la ecuación z = 60x1 + 30x2 + 20x3 podemos observar que aumentar
cualquiera de las variables fuera de base, aumenta el valor de z.
• Aumentar x1 desde 0 es lo que más aumenta z por cada unidad, ya que
c1 es el mayor de los tres coeficientes ci.
• Al dejar x1 de ser igual a 0, entra a la base, por lo que denominaremos
x1 la variable entrante.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 43
El Algoritmo Simplex
• En un problema de maximización (minimización), elegiremos la variable
con el coeficiente más positivo (negativo ) en la última fila del tableau
como la variable entrante. Si hay empate podemos elejir al azar.
• En nuestro ejemplo, si x1 entra a la base, ¿quien sale?
• Al aumentar x1, las variables en la base disminuyen, por lo que debemos
revisar que se mantenga la condición de no negatividad:
s1
s2
s3
s4
≥0
≥0
≥0
≥0
⇒ 48 − 8x1 ≥ 0
⇒ 20 − 4x1 ≥ 0
⇒ 8 − 2x1 ≥ 0
⇒ s4 = 5
x1 ≤ 48
8 = 6
x1 ≤ 20
4 = 5
8
x1 ≤ 2 = 4
para todo x1
20 8
• Por lo tanto, el mayor valor que x1 puede tomar es min{ 48
8 , 4 , 2 , ·} = 4.
Entonces si tomamos x4 = 4 ⇒ s3 = 0. s3 es la variable saliente.
• En resumen, la variable saliente será aquella que se hace 0 al aumentar
b
la variable entrante xk al valor minj { a j }
jk
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 44
El Algoritmo Simplex
• La nueva base será {s1, s2, x1, s4} y fuera de base quedan {s3, x2, x3}.
• Pivoteando el tableau anterior para obtener
x1
0
0
1
0
0
x2
0
−1
0, 75
1
15
x3
−1
0, 5
0, 25
0
−5
s1
1
0
0
0
0
s2
0
1
0
0
0
s3
−4
−2
0, 5
0
30
s4
0
0
0
1
0
=
=
=
=
16
4
4
5
240
v.b.
s1
s2
x1
s4
• ¿es óptima la actual solución básica factible? No, porque el coeficiente
asociado a x3 es negativo aún.
• x3 es la nueva variable entrante.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 45
El Algoritmo Simplex
• Revisemos que se mantenga la condición de no negatividad:
s1 ≥ 0
s2 ≥ 0
x1 ≥ 0
s4 ≥ 0
⇒ s1
⇒ s2
⇒ s3
⇒ s4
= 16 + x3 ≥ 0
= 4 − 0, 5x3 ≥ 0
= 4 − 0, 25x3 ≥ 0
=5
para todo x3
4
x3 ≤ 0,5
=8
4
x3 ≤ 0,25 = 16
para todo x3
• Por lo tanto, el mayor valor que x1 puede tomar es min{·, 8, 16, ·} = 8.
Entonces si tomamos x3 = 8 ⇒ s2 = 0. s2 es la variable saliente.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 46
El Algoritmo Simplex
• La nueva base será {s1, x3, x1, s4} y fuera de base quedan {x2, s2, s3}.
• Pivoteando el tableau anterior para obtener la nueva base:
z x 1 x 2 x 3 s1 s2 s3 s4
-2
1 2 -8
= 24
-2 1
2 -4
= 8
= 2
1 1,25
-0,5 1,5
1
1 = 5
1
5
10 10
280
v.b.
s1
x3
x1
s4
• ¿es óptima la actual solución básica factible? Si, porque todos los coeficientes de la primera fila son positivos.
• La solución óptima es:
x1 = 2, x2 = 0, x3 = 8, s1 = 24, s2 = 0, s3 = 0, s4 = 5.
• El valor óptimo es z ∗ = 280.
Apuntes de Clases • Optimización • Claudio Seebach
Programación Lineal • 47
Descargar