Tema 3 Optimización lineal. Algoritmo del simplex

30
Tema 3 Optimizaci´ on lineal. Algoritmo del simplex Jos´ e R. Berrendero Departamento de Matem´ aticas Universidad Aut´onoma de Madrid

Transcript of Tema 3 Optimización lineal. Algoritmo del simplex

Page 1: 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

Page 2: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 3: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 4: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 5: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 6: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 7: Tema 3 Optimización lineal. Algoritmo del simplex

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)α.

Page 8: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 9: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 10: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 11: Tema 3 Optimización lineal. Algoritmo del simplex

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?

Page 12: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 13: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 14: Tema 3 Optimización lineal. Algoritmo del simplex

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?

Page 15: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 16: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 17: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 18: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 19: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 20: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 21: Tema 3 Optimización lineal. Algoritmo del simplex

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)

Page 22: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 23: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 24: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 25: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 26: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 27: Tema 3 Optimización lineal. Algoritmo del simplex

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

Page 28: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 29: Tema 3 Optimización lineal. Algoritmo del simplex

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.

Page 30: Tema 3 Optimización lineal. Algoritmo del simplex

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