Tema 3 Optimización lineal. Algoritmo del simplex
-
Upload
truongcong -
Category
Documents
-
view
225 -
download
0
Transcript of Tema 3 Optimización lineal. Algoritmo del simplex
Tema 3
Optimizacion lineal. Algoritmo del simplex
Jose R. Berrendero
Departamento de Matematicas
Universidad Autonoma de Madrid
Contenidos del tema 3
I Teorema fundamental de la programacion lineal.
I Algoritmo del simplex.
I Ejemplos.
I La tabla del simplex. Pivoteo.
I Metodo de las dos fases.
I Optimizacion lineal con R
Teorema fundamental de la programacion lineal
Por el teorema de representacion, el problema lineal:
minimizar c>x
s.a. Ax = b
x ≥ 0
es equivalente a:
minimizar c>[∑k
i=1 λixi +∑`
j=1 µjdj
]s.a.
∑ki=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 programacion lineal
Teorema: Consideremos un problema de optimizacion lineal en
forma estandar. Sean x1, . . . , xk los puntos extremos del conjunto
factible y sean d1, . . . , d` sus direcciones extremas. El problema
tiene solucion factible optima si y solo si c>dj ≥ 0, para todo
j = 1, . . . , `. Si esta condicion se cumple, existe un punto extremo
que es solucion factible optima del problema.
I Interpretacion de la condicion de existencia de solucion.
I ¿Puede haber exactamente dos soluciones factibles optimas?
I Para resolver un problema lineal se podrıa comprobar que
tiene solucion, evaluar c>xi para todos los puntos extremos y
elegir el mejor de ellos. En la practica este metodo no es util
porque el numero de puntos extremos puede ser muy grande.
El algoritmo del simplex
I Es un metodo sistematico 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 optimo
o aun tenemos que pasar a otro punto extremo. Tambien se
puede detectar si el problema no tiene solucion optima.
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 unico vector de
modo que las operaciones del cambio de base son
relativamente sencillas.
El algoritmo del simplex
I Solucion factible basica inicial:
x = (x1, . . . , xm, 0, . . . , 0)> = (x>B , x>N )> =
(B−1b
0
):=
(b
0
).
I b es el vector de coordenadas de b respecto a la base B.
I Valor objetivo inicial: z = c>B B−1b = c>B b.
I Valor objetivo en cualquier otro punto factible x = (x>B , x>N )>:
z = c>B (b − B−1NxN) + c>N xN = z − (c>B B−1N − c>N )xN
= z −∑j∈N
(zj − cj)xj ,
donde zj = c>B B−1aj := c>B yj .
I yj = B−1aj ⇔ aj = y1ja1 + · · ·+ ymjam, es decir, yj es el
vector de coordenadas de la columna no basica aj respecto a
la base B.
El algoritmo del simplex
z = z −∑j∈N
(zj − cj)xj .
I ¿Que 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 solucion factible basica:
x = (x1, . . . ,(r)
0 , . . . , xm, 0, . . . ,(k)α , . . . , 0)>, α > 0.
I El nuevo valor objetivo es: z = z − (zk − ck)α.
El algoritmo del simplex
I Criterio de entrada: Entra a la base la variable k tal que
zk − ck = maxj∈N{zj − cj : zj − cj > 0}.
I Hay que aumentar α tanto como sea posible sin salirnos del
conjunto factible: Ax = b es equivalente a
x = x + α
(−ykek
), donde yk = B−1ak .
I ¿Que ocurre si yk ≤ 0?
I Supongamos que yk � 0.
El algoritmo del simplex
I Para que x sea factible tambien hace falta x ≥ 0:
xB ≥ 0⇔ b − αyk ≥ 0⇔ α ≤ bi
yik,
para todo i = 1, . . . ,m tal que yik > 0.
I El mayor valor posible de α es:
α = min
{bi
yik: yik > 0
}:=
br
yrk
I Criterio de salida: sale de la base la variable r en la que se
alcanza el mınimo anterior.
Ejemplo
maximizar 3x1 + x2 + 2x3
s.a. 2x1 + x2 + x3 ≤ 2
x1 + 2x2 + 3x3 ≤ 5
2x1 + 2x2 + x3 ≤ 6
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
Pasamos primero a la forma estandar:
minimizar −3x1 − x2 − 2x3
s.a. 2x1 + x2 + x3 + x4 = 2
x1 + 2x2 + 3x3 + x5 = 5
2x1 + 2x2 + x3 + x6 = 6
xi ≥ 0, i = 1, . . . , 6.
Ejemplo
Solucion factible basica 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 solucion factible optima del problema?
I ¿Que variable k entra en la base? ¿Que yk le corresponde?
I ¿Que 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 operacion 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.
¿Cual 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 La fila r se divide por el pivote para que el coeficiente de xk
sea 1.
I 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
x2 − x4 + x6 = 4
Ejemplo
Solucion factible basica actual: x = (1, 0, 0, 0, 4, 4)>, para la
que el objetivo es z = −3.
I Escribe los valores de: cB , yj y zj − cj , para todo j ∈ N.
I ¿Es x la solucion factible optima del problema?
I ¿Que variable k entra en la base? ¿Que yk le corresponde?
I ¿Que variable r sale de la base?
Convergencia
Si en cada paso encontramos b = B−1b > 0, entonces x y x son
puntos extremos distintos.
Como hay un numero finito de puntos extremos, el algoritmo
converge en un numero finito de iteraciones.
Si en algun paso br = 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 iteracion se suelen disponer
ordenadamente en forma de tabla:
c c>B c>NVariables x>B x>NxB = b Im×m B−1N
z − c 0 c>B B−1N − c>N
I Las columnas corresponden a variables basicas y no basicas.
I Las filas corresponden a las variables basicas.
Ejemplo
minimizar −4x1 − 3x2
s.a. −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 -1 1 1 0 0
x4 = 6 1 2 0 1 0
x5 = 6 2 1 0 0 1
zj − cj 4 3 0 0 0
Aplica los criterios de entrada y salida a la base.
Ejemplo (primera iteracion)
c -4 -3 0 0 0
Variables x1 x2 x3 x4 x5
x3 = 2 -1 1 1 0 0
x4 = 6 1 2 0 1 0
x5 = 6 2 1 0 0 1
zj − cj 4 3 0 0 0
c -4 -3 0 0 0
Variables x1 x2 x3 x4 x5
x3 = 5 0 3/2 1 0 1/2
x4 = 3 0 3/2 0 1 -1/2
x1 = 3 1 1/2 0 0 1/2
zj − cj 0 1 0 0 -2
Ejemplo (segunda iteracion)
c -4 -3 0 0 0
Variables x1 x2 x3 x4 x5
x3 = 5 0 3/2 1 0 1/2
x4 = 3 0 3/2 0 1 -1/2
x1 = 3 1 1/2 0 0 1/2
zj − cj 0 1 0 0 -2
c -4 -3 0 0 0
Variables x1 x2 x3 x4 x5
x3 = 2 0 0 1 -1 1
x2 = 2 0 1 0 2/3 -1/3
x1 = 2 1 0 0 -1/3 2/3
zj − cj 0 0 0 -2/3 -5/3
La solucion factible optima es (2, 2, 2, 0, 0)> y el valor objetivo
optimo es -14.
Actualizacion de la tabla
Columna de la izquierda
xi = bi − αyik = bi −br
yrkyik
xk = α =br
yrk.
Valores yij
ak = y1ka1 + · · ·+ yrkar + · · ·+ ymkam
ar = −y1k
yrka1 − · · ·+
1
yrkak − · · · −
ymk
yrkam
aj =
(y1j −
y1k
yrkyrj
)a1 + · · ·+
yrjyrk
ak + · · ·+(
ymj −ymk
yrkyrj
)am
Actualizacion de la tabla
Valores yij
yij = yij −yrjyrk
yik , si i 6= r ,
yrj =yrjyrk
Ultima fila:
zj − cj =m∑
r 6=i=1
ci yij + ck yrj − cj =m∑i=1
ci
(yij −
yrjyrk
yik
)+ ck
yrjyrk− cj
=m∑i=1
ciyij − cj −yrjyrk
m∑i=1
ciyik + ckyrjyrk
= (zj − cj)−yrjyrk
(zk − ck)
Actualizacion de la tabla
En resumen:
I La fila del pivote (fila r) se divide por el pivote (yrk). Ası se
consigue que yrk = 1.
I A la fila i se les resta la fila r actualizada y multiplicada por
yik . Ası se consigue que yik = 0.
I A la ultima fila se le resta la fila r actualizada y multiplicada
por zk − ck . Ası se consigue que zk − ck = 0
Metodo de las dos fases
Es un metodo util para:
I Encontrar una solucion factible basica 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 optima no es cero entonces el problema
original no es factible. En caso contrario las variables artificiales
habran abandonado la base y dispondremos de una base inicial de
variables legıtimas.
Fase 1
Si e = (1, . . . , 1)>, se resuelve el problema:
minimizar e>xa
s.a. Ax + Ixa = b
x ≥ 0, xa ≥ 0
I Variables artificiales son diferentes a variables de holgura.
I Este problema tiene una solucion factible basica obvia en la
que las variables basicas son las artificiales.
I Sea (x , xa) el optimo al final de la fase 1.
Fase 2
Caso 1: xa 6= 0, el problema original no es factible (¿por que?).
Caso 2: xa = 0, pueden ocurrir a su vez dos casos
I Ninguna variable artificial es basica. En este caso se
eliminan de la tabla las columnas de las variables artificiales.
Se calculan los valores zj − cj y se continua como en el
metodo simplex habitual.
I Hay alguna variable artificial en la base al nivel 0
(degeneracion). Se busca en la fila un pivote para poder
sustituirla por una variable legıtima. Se calculan los valores
zj − cj y se continua como en el metodo simplex habitual.
Ejemplo
Problema original:
minimizar 4x1 + x2 + x3
s.a. 2x1 + x2 + 2x3 = 4
3x1 + 3x2 + x3 = 3
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
Problema a resolver en la fase 1:
minimizar xa1 + xa
2
s.a. 2x1 + x2 + 2x3 + xa1 = 4
3x1 + 3x2 + x3 + xa2 = 3
xi ≥ 0, xai ≥ 0
Fase 1
c 0 0 0 1 1
Variables x1 x2 x3 xa1 xa
2
xa1 = 4 2 1 2 1 0
xa2 = 3 3 3 1 0 1
zj − cj 5 4 3 0 0
c 0 0 0 1 1
Variables x1 x2 x3 xa1 xa
2
xa1 = 2 0 -1 4/3 1 -2/3
x1 = 1 1 1 1/3 0 1/3
zj − cj 0 -1 4/3 0 -5/3
c 0 0 0 1 1
Variables x1 x2 x3 xa1 xa
2
x3 = 3/2 0 -3/4 1 3/4 -1/2
x1 = 1/2 1 5/4 0 -1/4 1/2
zj − cj 0 0 0 -1 -1
Fase 2
I Partimos de la solucion factible basica en la ultima tabla de la
fase 1.
I Se eliminan las variables artificiales.
I Se actualizan la primera y la ultima fila de la tabla.
c 4 1 1
Variables x1 x2 x3
x1 = 1/2 1 5/4 0
x3 = 3/2 0 -3/4 1
zj − cj 0 13/4 0
Para las variables basicas zj − cj = 0. Ademas,
z2 − c2 = (4, 1)
(5/4
−3/4
)− 1 = 13/4.
Fase 2
c 4 1 1
Variables x1 x2 x3
x2 = 2/5 4/5 1 0
x3 = 9/5 3/5 0 1
zj − cj -13/5 0 0
La solucion factible optima del problema viene dada por
x1 = 0, x2 = 2/5 y x3 = 9/5
y el valor objetivo optimo es z = 11/5.
Ejemplo
Aplica el metodo de las dos fases para resolver:
minimizar −x1 + 2x2 − 3x3
s.a. x1 + x2 + x3 = 6
−x1 + x2 + 2x3 = 4
2x2 + 3x3 = 10
x3 ≤ 2
xi ≥ 0