Está en la página 1de 30

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 c >x
s.a. Ax = b
x ≥0

es equivalente a:
hP i
k P`
minimizar c> λ x
i=1 i i + µ d
j=1 j j
Pk
s.a. 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:
 −1   
> B b b̄
x̄ = (x1 , . . . , xm , 0, . . . , 0) = (x̄B> , x̄N> )> = := .
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

X
z = z̄ − (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)> , α > 0.

I El nuevo valor objetivo es: ẑ = z̄ − (zk − ck )α.


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:

b̄i
x̂B ≥ 0 ⇔ b̄ − αyk ≥ 0 ⇔ α ≤ ,
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 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 estándar:

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

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 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
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 −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 iteración)
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 iteración)
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 solución factible óptima es (2, 2, 2, 0, 0)> y el valor objetivo


Actualización de la tabla
Columna de la izquierda

b̄r
x̂i = b̄i − αyik = b̄i − yik
yrk
b̄r
x̂k = α = .
yrk

Valores yij

ak = y1k a1 + · · · + yrk ar + · · · + ymk am


y1k 1 ymk
ar = − a1 − · · · + ak − · · · − am
yrk yrk yrk
   
y1k yrj ymk
aj = y1j − yrj a1 + · · · + ak + · · · + ymj − yrj am
yrk yrk yrk
Actualización de la tabla
Valores yij

yrj
ŷij = yij − yik , si i 6= r ,
yrk
yrj
ŷrj =
yrk

Última fila:

m m  
X X yrj yrj
ẑj − ĉj = ci ŷij + ck ŷrj − cj = ci yij − yik + ck − cj
yrk yrk
r 6=i=1 i=1
m m
X yrj X yrj yrj
= ci yij − cj − ci yik + ck = (zj − cj ) − (zk − ck )
yrk yrk yrk
i=1 i=1
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 e >x a
s.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 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 x1a + x2a

s.a. 2x1 + x2 + 2x3 + x1a = 4


3x1 + 3x2 + x3 + x2a = 3
xi ≥ 0, xia ≥ 0
Fase 1
c 0 0 0 1 1
Variables x1 x2 x3 x1a x2a
x1a = 4 2 1 2 1 0
x2a = 3 3 3 1 0 1
zj − cj 5 4 3 0 0

c 0 0 0 1 1
Variables x1 x2 x3 x1a x2a
x1a = 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 x1a x2a
x3 = 3/2 0 -3/4 1 3/4 -1/2
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 1 5/4 0
x3 = 3/2 0 -3/4 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 4/5 1 0
x3 = 9/5 3/5 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 −x1 + 2x2 − 3x3

s.a. x1 + x2 + x3 = 6
−x1 + x2 + 2x3 = 4
2x2 + 3x3 = 10
x3 ≤ 2
xi ≥ 0

También podría gustarte