Transparencias - Departamento de Matemáticas de la UAM

Anuncio
Tema 3
Optimización lineal. Algoritmo del simplex
José R. Berrendero
Departamento de Matemáticas
Universidad Autónoma de Madrid
Contenidos del tema 3
I
Teorema fundamental de la programación lineal.
I
Algoritmo del simplex.
I
Ejemplos.
I
La tabla del simplex. Pivoteo.
I
Método de las dos fases.
I
Optimización lineal con R
Teorema fundamental de la programación lineal
Por el teorema de representación, el problema lineal:
minimizar
s.a.
c >x
Ax = b
x ≥0
es equivalente a:
minimizar
s.a.
hP
i
P`
k
c>
λ
x
+
µ
d
i=1 i i
j=1 j j
Pk
i=1 λi = 1
λi ≥ 0, i = 1, . . . , k
µj ≥ 0, j = 1, . . . , `,
donde x1 , . . . , xk son los puntos extremos del conjunto factible y
d1 , . . . , d` son sus direcciones extremas.
Teorema fundamental de la programación lineal
Teorema: Consideremos un problema de optimización lineal en
forma estándar. Sean x1 , . . . , xk los puntos extremos del conjunto
factible y sean d1 , . . . , d` sus direcciones extremas. El problema
tiene solución factible óptima si y solo si c > dj ≥ 0, para todo
j = 1, . . . , `. Si esta condición se cumple, existe un punto extremo
que es solución factible óptima del problema.
I
Interpretación de la condición de existencia de solución.
I
¿Puede haber exactamente dos soluciones factibles óptimas?
I
Para resolver un problema lineal se podrı́a comprobar que
tiene solución, evaluar c > xi para todos los puntos extremos y
elegir el mejor de ellos. En la práctica este método no es útil
porque el número de puntos extremos puede ser muy grande.
El algoritmo del simplex
I
Es un método sistemático para pasar de un punto extremo a
otro de manera que siempre mejore el objetivo.
I
En cada paso se puede detectar si ya hemos llegado al óptimo
o aún tenemos que pasar a otro punto extremo. También se
puede detectar si el problema no tiene solución óptima.
I
Pasar de un punto extremo a otro corresponde a cambiar la
base B por una base nueva B̂.
I
En el simplex ambas bases difieren en un único vector de
modo que las operaciones del cambio de base son
relativamente sencillas.
El algoritmo del simplex
I
Solución factible básica inicial:
>
x̄ = (x1 , . . . , xm , 0, . . . , 0) =
(x̄B> , x̄N> )>
−1 B b
b̄
=
:=
.
0
0
I
b̄ es el vector de coordenadas de b respecto a la base B.
I
Valor objetivo inicial: z̄ = cB> B −1 b = cB> b̄.
I
Valor objetivo en cualquier otro punto factible x = (xB> , xN> )> :
z = cB> (b̄ − B −1 NxN ) + cN> xN = z̄ − (cB> B −1 N − cN> )xN
X
= z̄ −
(zj − cj )xj ,
j∈N
donde zj = cB> B −1 aj := cB> yj .
I
yj = B −1 aj ⇔ aj = y1j a1 + · · · + ymj am , es decir, yj es el
vector de coordenadas de la columna no básica aj respecto a
la base B.
El algoritmo del simplex
z = z̄ −
X
(zj − cj )xj .
j∈N
I
¿Qué ocurre si zj − cj ≤ 0, para todo j ∈ N?
I
Supongamos que existe k ∈ N con zk − ck > 0.
I
Vamos a pasar de x̄ a una nueva solución factible básica:
(r )
(k)
x̂ = (x̂1 , . . . , 0 , . . . , x̂m , 0, . . . , α , . . . , 0)> ,
I
El nuevo valor objetivo es: ẑ = z̄ − (zk − ck )α.
α > 0.
El algoritmo del simplex
I
Criterio de entrada: Entra a la base la variable k tal que
zk − ck = max{zj − cj : zj − cj > 0}.
j∈N
I
Hay que aumentar α tanto como sea posible sin salirnos del
conjunto factible: Ax̂ = b es equivalente a
−yk
x̂ = x̄ + α
, donde yk = B −1 ak .
ek
I
¿Qué ocurre si yk ≤ 0?
I
Supongamos que yk 0.
El algoritmo del simplex
I
Para que x̂ sea factible también hace falta x̂ ≥ 0:
x̂B ≥ 0 ⇔ b̄ − αyk ≥ 0 ⇔ α ≤
b̄i
,
yik
para todo i = 1, . . . , m tal que yik > 0.
I
El mayor valor posible de α es:
b̄i
b̄r
α = min
: yik > 0 :=
yik
yrk
I
Criterio de salida: sale de la base la variable r en la que se
alcanza el mı́nimo anterior.
Ejemplo
maximizar
s.a.
3x1 + x2 + 2x3
2x1 + x2 + x3
x1 + 2x2 + 3x3
2x1 + 2x2 + x3
x1 ≥ 0, x2 ≥ 0, x3
≤2
≤5
≤6
≥0
Pasamos primero a la forma estándar:
minimizar
s.a.
−3x1 − x2 − 2x3
2x1 + x2 + x3 + x4 = 2
x1 + 2x2 + 3x3 + x5 = 5
2x1 + 2x2 + x3 + x6 = 6
xi ≥ 0, i = 1, . . . , 6.
Ejemplo
Solución factible básica inicial: x̄ = (0, 0, 0, 2, 5, 6)> , para la
que el objetivo es z̄ = 0.
I
Escribe los valores de: B, b̄, cB , yj y zj − cj , para todo j ∈ N.
I
¿Es x̄ la solución factible óptima del problema?
I
¿Qué variable k entra en la base? ¿Qué yk le corresponde?
I
¿Qué variable r sale de la base?
Pivoteo
Necesitamos expresar los vectores aj y b respecto a la nueva base
B̂ = {a1 , a5 , a6 }. A esta operación se le llama pivoteo.
El pivote es el coeficiente yrk correspondiente a la fila de la
variable que sale y la columna de la que entra.
¿Cuál es el pivote en el ejemplo?
2x1 + x2 + x3 + x4 = 2
x1 + 2x2 + 3x3 + x5 = 5
2x1 + 2x2 + x3 + x6 = 6
Pivoteo
2x1 + x2 + x3 + x4 = 2
x1 + 2x2 + 3x3 + x5 = 5
2x1 + 2x2 + x3 + x6 = 6
I
I
La fila r se divide por el pivote para que el coeficiente de xk
sea 1.
Al resto de filas se les resta la fila r multiplicada por el valor
adecuado para que xk ya no aparezca en esa fila.
x1 + x2 /2 + x3 /2 + x4 /2 = 1
3x2 /2 + 5x3 /2 − x4 /2 + x5 = 4
Ejemplo
Solución factible básica actual: x̂ = (1, 0, 0, 0, 4, 4)> , para la
que el objetivo es ẑ = −3.
I
Escribe los valores de: cB , yj y zj − cj , para todo j ∈ N.
I
¿Es x̄ la solución factible óptima del problema?
I
¿Qué variable k entra en la base? ¿Qué yk le corresponde?
I
¿Qué variable r sale de la base?
Convergencia
Si en cada paso encontramos b̄ = B −1 b > 0, entonces x̄ y x̂ son
puntos extremos distintos.
Como hay un número finito de puntos extremos, el algoritmo
converge en un número finito de iteraciones.
Si en algún paso b̄r = 0, entonces α = 0. Cambia la base, pero el
punto extremo es el mismo.
Esto podrı́a ocurrir infinitas veces y entonces el algoritmo del
simplex no converge (se dice que ha ocurrido un ciclo).
Hay criterios de entrada y salida para evitar los ciclos: regla de
Bland
Tabla simplex
Los elementos para efectuar cada iteración se suelen disponer
ordenadamente en forma de tabla:
c
cB>
cN>
Variables
xB>
xN>
xB = b̄
Im×m
B −1 N
z −c
0
cB> B −1 N − cN>
I
Las columnas corresponden a variables básicas y no básicas.
I
Las filas corresponden a las variables básicas.
Ejemplo
minimizar
s.a.
−4x1 − 3x2
−x1 + x2 + x3 = 2
x1 + 2x2 + x4 = 6
2x1 + x2 + x5 = 6
xi ≥ 0, i = 1, . . . , 5.
Tabla inicial: B = (a3 , a4 , a5 ) = I3×3
c
-4
-3
0
0
0
Variables
x1
x2
x3
x4
x5
x3 = 2
x4 = 6
x5 = 6
-1
1
2
1
2
1
1
0
0
0
1
0
0
0
1
zj − cj
4
3
0
0
0
Aplica los criterios de entrada y salida a la base.
Ejemplo (primera iteración)
c
-4
-3
0
0
0
Variables
x1
x2
x3
x4
x5
x3 = 2
x4 = 6
x5 = 6
-1
1
2
1
2
1
1
0
0
0
1
0
0
0
1
zj − cj
4
3
0
0
0
c
-4
-3
0
0
0
Variables
x1
x2
x3
x4
x5
x3 = 5
x4 = 3
x1 = 3
0
0
1
3/2
3/2
1/2
1
0
0
0
1
0
1/2
-1/2
1/2
zj − cj
0
1
0
0
-2
Ejemplo (segunda iteración)
c
-4
-3
0
0
0
Variables
x1
x2
x3
x4
x5
x3 = 5
x4 = 3
x1 = 3
0
0
1
3/2
3/2
1/2
1
0
0
0
1
0
1/2
-1/2
1/2
zj − cj
0
1
0
0
-2
c
-4
-3
0
0
0
Variables
x1
x2
x3
x4
x5
x3 = 2
x2 = 2
x1 = 2
0
0
1
0
1
0
1
0
0
-1
2/3
-1/3
1
-1/3
2/3
zj − cj
0
0
0
-2/3
-5/3
La solución factible óptima es (2, 2, 2, 0, 0)> y el valor objetivo
Actualización de la tabla
Columna de la izquierda
x̂i = b̄i − αyik = b̄i −
x̂k = α =
b̄r
yik
yrk
b̄r
.
yrk
Valores yij
ak = y1k a1 + · · · + yrk ar + · · · + ymk am
y1k
1
ymk
ar = −
a1 − · · · +
ak − · · · −
am
yrk
yrk
yrk
yrj
y1k
ymk
aj = y1j −
yrj a1 + · · · +
ak + · · · + ymj −
yrj am
yrk
yrk
yrk
Actualización de la tabla
Valores yij
ŷij = yij −
ŷrj =
yrj
yik , si i 6= r ,
yrk
yrj
yrk
Última fila:
ẑj − ĉj =
=
m
X
r 6=i=1
m
X
ci ŷij + ck ŷrj − cj =
ci yij − cj −
i=1
m
X
ci
i=1
yrj
yrk
m
X
i=1
ci yik + ck
yrj
yij −
yik
yrk
+ ck
yrj
− cj
yrk
yrj
yrj
= (zj − cj ) −
(zk − ck )
yrk
yrk
Actualización de la tabla
En resumen:
I
La fila del pivote (fila r ) se divide por el pivote (yrk ). Ası́ se
consigue que ŷrk = 1.
I
A la fila i se les resta la fila r actualizada y multiplicada por
yik . Ası́ se consigue que ŷik = 0.
I
A la última fila se le resta la fila r actualizada y multiplicada
por zk − ck . Ası́ se consigue que ẑk − ĉk = 0
Método de las dos fases
Es un método útil para:
I
Encontrar una solución factible básica inicial.
I
Detectar si el conjunto factible es vacı́o.
I
Detectar si hay restricciones redundantes.
Fase 1: Se introducen variables artificiales y se minimiza su suma.
Fase 2: Si la suma óptima no es cero entonces el problema
original no es factible. En caso contrario las variables artificiales
habrán abandonado la base y dispondremos de una base inicial de
variables legı́timas.
Fase 1
Si e = (1, . . . , 1)> , se resuelve el problema:
minimizar
s.a.
e >x a
Ax + Ix a = b
x ≥ 0, x a ≥ 0
I
Variables artificiales son diferentes a variables de holgura.
I
Este problema tiene una solución factible básica obvia en la
que las variables básicas son las artificiales.
I
Sea (x̄, x̄ a ) el óptimo al final de la fase 1.
Fase 2
Caso 1: x̄ a 6= 0, el problema original no es factible (¿por qué?).
Caso 2: x̄ a = 0, pueden ocurrir a su vez dos casos
I
Ninguna variable artificial es básica. En este caso se
eliminan de la tabla las columnas de las variables artificiales.
Se calculan los valores zj − cj y se continúa como en el
método simplex habitual.
I
Hay alguna variable artificial en la base al nivel 0
(degeneración). Se busca en la fila un pivote para poder
sustituirla por una variable legı́tima. Se calculan los valores
zj − cj y se continúa como en el método simplex habitual.
Ejemplo
Problema original:
minimizar
s.a.
4x1 + x2 + x3
2x1 + x2 + 2x3 = 4
3x1 + 3x2 + x3 = 3
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
Problema a resolver en la fase 1:
minimizar
s.a.
x1a + x2a
2x1 + x2 + 2x3 + x1a = 4
3x1 + 3x2 + x3 + x2a = 3
xi ≥ 0, xia ≥ 0
Fase 1
0
c
0
0
1
1
x2a
Variables
x1
x2
x3
x1a
x1a = 4
x2a = 3
2
3
1
3
2
1
1
0
0
1
zj − cj
5
4
3
0
0
0
1
1
x2a
0
c
0
Variables
x1
x2
x3
x1a
x1a = 2
x1 = 1
0
1
-1
1
4/3
1/3
1
0
-2/3
1/3
zj − cj
0
-1
4/3
0
-5/3
c
0
0
0
1
1
x2a
-1/2
Variables
x1
x2
x3
x1a
x3 = 3/2
0
-3/4
1
3/4
Fase 2
I
Partimos de la solución factible básica en la última tabla de la
fase 1.
I
Se eliminan las variables artificiales.
I
Se actualizan la primera y la última fila de la tabla.
c
4
1
1
Variables
x1
x2
x3
x1 = 1/2
x3 = 3/2
1
0
5/4
-3/4
0
1
zj − cj
0
13/4
0
Para las variables básicas zj − cj = 0. Además,
5/4
z2 − c2 = (4, 1)
− 1 = 13/4.
−3/4
Fase 2
c
4
1
1
Variables
x1
x2
x3
x2 = 2/5
x3 = 9/5
4/5
3/5
1
0
0
1
zj − cj
-13/5
0
0
La solución factible óptima del problema viene dada por
x̄1 = 0, x̄2 = 2/5 y x̄3 = 9/5
y el valor objetivo óptimo es z̄ = 11/5.
Ejemplo
Aplica el método de las dos fases para resolver:
minimizar
s.a.
−x1 + 2x2 − 3x3
x1 + x2 + x3 = 6
−x1 + x2 + 2x3 = 4
2x2 + 3x3 = 10
x3 ≤ 2
xi ≥ 0
Descargar