Vous êtes sur la page 1sur 33

Tema V: Optimizacion Lineal

Omar J. Casas Lopez


Diciembre 2003

Algoritmo Simplex

El objetivo del Algoritmo Simplex consiste en que partiendo de una Solucion


Factible Basica inicial, encontrar otra que mejore la Funcion Objetivo.
Problema:
min z
s.a. Ax
x
donde:
Amn ; r(A)

= ct x
= b
0
= m;

b Rm ;

c Rn

Cualquier punto del conjunto S = {x : Ax = b, x 0} es una combinacion


lineal convexa de sus puntos extremos, mas una combinacion lineal positiva
de sus direcciones extremas.
Teorema de Existencia de Soluciones
Sean x1 , x2 , ..., xk los puntos extremos del conjunto S y sean d1 , d2 , ..., dl sus
direcciones extremas. Entonces existe solucion optima finita x S si y solo
si:
ct dj 0 j = 1, 2, ..., l
Demostracion
Por el Teorema de Representacion se puede enunciar el problema de Programacion Lineal del siguiente modo equivalente:
min z = ct x
k
l
X
X
s.a. x =
i x i +
j dj
i=1

j=1

i 0,
j 0,
k
X

donde:
i = 1, 2, ..., k
j = 1, 2, ..., l
i = 1

i=1

Suponemos que existe un j 0 tal que ct dj 0 < 0


t

cx=

k
X

i c x i +

i=1

l
X

j ct dj

j=1

donde:
j 0, j = 1, 2, ..., k
j 0, j = 1, 2, ..., l
k
X
j = 1
j=1

Como el primer sumando siempre es acotado y el segundo tiende a


cuando j 0 tiende a , entonces no hay solucion optima finita, por tanto
tiene que cumplirse que:
ct dj 0
se cumple entonces que existe un optimo finito y se alcanza en un punto
extremo, porque:
k
l
X
X
ct x =
i c t x i +
j ct dj
i=1

j=1

para que sea mnimo hacemos j = 0 para todos los j, y i = 0 para


todos los i excepto aquel i0 en que el producto escalar ct x0i es mnimo, sea
0i = 1, luego:
ct xi0 = min ct xi
i = 1, 2, . . . , k
Es decir que xi0 es la solucion del problema.
Teoricamente podramos calcular todos los zj = ct xj , para cada uno de
los xj puntos extremos y elegir aquel xj que haga mnimo el producto, para
resolver el problema, pero esto puede resultar muy complicado y largo, salvo
casos muy simples, este metodo no es operativo, ya que el n
umero de puntos
extremos puede ser muy grande.

1.1

Algoritmo del M
etodo SIMPLEX

Es un metodo sistematico para pasar de un punto extremo a otro de tal


manera que se mejore la funcion objetivo.
Como los puntos extremos estan caracterizados por una base B, el metodo
de forma que el punto extremo
consiste en hacer un cambio de base B B,
correspondiente a la nueva base sea mejor que el anterior, las dos bases se
diferencian en un u
nico vector de modo que las operaciones necesarias para
realizar el cambio de base sean relativamente sencillas.
Partimos de una solucion factible basica inicial, o punto extremo
x = (xB1 , . . . , xBm , 0, . . . , 0)t
inicial asociado a la base B = (aB1 , . . . , aBm ).
x = (xB , xN )t = (B 1 b, 0)t
En muchos casos la obtencion de esta solucion inicial puede ser inmediata,
esto sucede cuando la submatriz B es unitaria, B = Im .
El valor de la funcion objetivo que le corresponde a x es:
z = ct x = ctB B 1 b
Sea x = (xB , xN )t un punto factible cualquiera:
Ax = b BxB + N xN = b xB = B 1 b B 1 N xN
El valor de la funcion objetivo para x es:
z = ct x
= ctB B 1 b ctB B 1 N xN + ctN xN
= z [ctB B 1 N ctN ]xN
Sea I el conjunto de ndices correspondientes a las columnas de la submatriz basica B y sea J el conjunto de los ndices correspondientes a la
submatriz no basica N .
X
z = z
[zj cj ]xj
donde zj =

jJ
t
cB B 1 aj

= ctB yj

Observacion:
yj = B 1 aj aj = Byj
= y1j aB1 + . . . + ymj aBm
Es decir , yj es el vector de coordenadas de la columna no basica aj
respecto a la base B.
3

1. Supongamos que zj cj 0 para todos los j J, FIN, la solucion


considerada x es optima.
2. Existen variables no basicas j tales que zj cj > 0, entonces es posible
mejorar la funcion objetivo cambiando de base, vamos a pasar de:
xt = (xB1 , . . . , xBm , 0, . . . , 0)t = (B11 b1 , . . . , Bm1 bm , 0, . . . , 0)t
a un nuevo punto extremo:
xt = (xB1 , . . . , xBm , 0, . . . , , . . . , 0)t
con > 0
Para hacer mnima la funcion objetivo, nos interesa aumentar aquella
variable no basica para la cual zj cj sea maxima.
Sea k tal que:
zk ck = max{zj cj : zj cj > 0}
jJ

Criterio de Entrada en la Base: Entra aquella variable k tal que:


zk ck zj cj

j J : zj cj > 0

Sea :
z = z (zk ck ) = z (ctB yk ck )
Hay que aumentar tanto como sea posible de forma que no salgamos
del conjunto factible.
xB
xN

=
=

z =

B 1 b B 1 N ek = B 1 b B 1 ak = B 1 b yk
ek
x = x + (yk , ek )t 0
ct x = z (ctB yk ck )

(a) Sea el vector yk 0 para los j J1 , siendo


J1 = {j J : zj cj > 0}
entonces podemos aumentar de manera indefinida, mejorando
la funcion objetivo y sin salir del conjunto de soluciones factibles,
por tanto no existe solucion optima finita: FIN.
Observacion: En este caso el vector d es proporcional al vector
(B 1 ak , ek )t , como B 1 ak 0, entonces es una direccion extrema, tal que ct d = zk + ck < 0 y no se cumple la condicion
necesaria y suficiente de existencia de soluciones optimas finitas.
4

(b) Si yk 6 0, para que x sea factible debe ocurrir que:


xB = B 1 b yk 0

B 1 bi
yik

i = 1, 2, . . . , m

el mayor valor de que podemos tomar es:


 1

B 1 br
B bi
= min
: yik > 0 =
i=1,...,m
yik
yrk
el nuevo punto extremo es:
x = x +

B 1 br
(yk , ek )t
yrk

es decir,
xBi = B 1 bi
xk =

B 1 br
yij
yrj

B 1 br
yrj

i = 1, 2, . . . , m

xj = 0 j 6= k

Note que la variable xBr ha salido de la base:


xBr = B 1 br

B 1 br
yrj = 0
yrj

Criterio de Salida de la Base: Sale la variable Br tal que:


 1

B 1 br
B bi
= min
: yik > 0
i=1,...,m
yrk
yik
ALGORITMO
1. Determinar una solucion factible basica inicial, sea I el conjunto de
subndices de las columnas de la matriz A pertenecientes a la submatriz
B, y J = {1, 2, . . . , n} \ I.
2. Calcular los yj y los zj cj para todos j J.
3. Analizar los signos de los zj cj para todos j J.
(a) Si zj cj 0 para todos los j J, FIN, la solucion considerada
x es optima.
5

(b) Considerar el conjunto J1 = {j J : zj cj > 0}


4. Analizar los vectores yj para los j J1 :
(a) En caso contrario, determinar k mediante la siguiente relacion
llamada Criterio de Entrada:
zk ck = max{zj cj }
jJ

y determinar l, por la relacion llamada Criterio de Salida:


 
xl
xs
= min
ylk s/ysk >0 ysk
(b) Si para todo j J1 se cumple que yj 0, FIN, no hay optimo
finito.
5. Considerar la nueva base B 0 = B {ak } \ {al }, siendo ylk el pivote,
actualizar la tabla utilizando las siguientes formulas:
 0
y y
ysj = ysj skylklj s I s 6= l
0
yj =
y
lj
ylj0 = ylk
volver al paso 3.
Ejemplo:
max z = 3x1 + x2 + 2x3
2x1 + x2 + x3 2
x1 + 2x2 + 3x3 5
2x1 + 2x2 + x3 6
x1 0; x2 0; x3 0
Expresado en forma estandar:
min z = 3x1 x2 2x3
2x1 + x2 + x3 + x4
= 2
x1 + 2x2 + 3x3 + x5
= 5
2x1 + 2x2 + x3
+ x6 = 6
xi 0
i
Solucion factible basica inicial:
x = (0, 0, 0, 2, 5, 6)t

B = (a4 , a5 , a6 )
6

z = 0

Criterio de Entrada:
z1 c1 = 3
z2 c2 = 1
z3 c3 = 2
Cualquiera de las tres variables que se seleccione, la funcion objetivo va
a mejorar, pero en este caso seleccionamos a la variable x1 para que entre en
la base, y el vector asociado y1 = (2, 1, 2)t > 0.
Criterio de Salida:


2
2 5 6
min
, ,
=
2 1 2
2
que corresponde a la variable x4 , por tanto es la que sale de la base.
Pivoteo: seleccionamos como pivote a y11 = 2 6= 0, al efectuar el pivoteo,
el sistema resultante es:
1
1
1
x1 + x2 + x3 + x4
= 1
2
2
2
3
5
1
x2 + x3 x4 + x5
= 4
2
2
2
x2 x4 + x6 = 4
xi 0
i
y la nueva solucion factible basica es:
x = (1, 0, 0, 0, 4, 4)t

z = 3

Para determinar si ya hemos llegado a la solucion optima o para detectar


que variable entra en la base hay que calcular los nuevos valores de zj cj
para j = 2, 3, 4.

1.2

Tabla del M
etodo Simplex

Para efectuar el paso del pivoteo en el algoritmo del metodo Simplex, necesitamos los siguientes elementos:
1. Los vectores yj que son las coordenadas de cada columna de la matriz
A respecto a la base actual B.
2. Las coordenadas del vector de los terminos independientes b respecto
a la base actual B.
3. Los correspondientes valores de zj cj para las variables no basicas.
7

Los elementos anteriores se disponen en forma de tablas, de la siguiente


manera:

cB
cB1
cB2
..
.

xB
xB1
xB2
..
.

cj
x = y0
xB1
xB2
..
.

c1
y1
y11
y21
..
.

c2
y2
y12
y22
..
.

cBl
..
.

xBl
..
.

xBl
..
.

yl1
..
.

yl2
..
.

cBm xBm
zj cj

xBm
z

ym1
ym2
z1 c1 z2 c2

...
...
...
...
...
...

ck
yk
y1k
y2k
..
.
ylk
..
.

...
...
...
...
...
...

cn
yn
y1n
y2n
..
.
yln
..
.

...
...
...
ymk
...
ymn
. . . zk ck . . . zn cn

La primera fila contiene el vector de costes cj o coeficientes de la funcion


objetivo.
La segunda fila es informativa, solo para saber a que variable corresponde
cada columna.
Las filas 3 a m + 2 corresponden a cada una de las variables de la base,
con las columnas yj correspondientes a las variables basicas y no basicas.
La u
ltima fila contiene los valores de zj cj de cada iteracion.
Ejemplo:
max z
x1 + x2
x1 + 2x2
2x1 + x2
x1 0; x2

4x1 + 3x2
2
6
6
0

Expresado en forma estandar:


min z = 4x1 3x2
x1 + x2 + x3
=2
x1 + 2x2 + x4 = 6
2x1 + x2
+ x5 = 6
xi 0 i
La tabla inicial del algoritmo Simplex, correspondiente a la base inicial
B = (a3 , a4 , a5 ) es:

cB
xB
0
x3
0
x4
0
x5
zj cj

cj 4 3 0 0 0
x y1 y2 y3 y4 y5
2 1 1 1 0 0
6 1
2 0 1 0
6 2
1 0 0 1
0 4
3 0 0 0

Entra en la base x1 , y sale x5 , por tanto el pivote es 2, efectuando el


pivoteo, obtenemos la nueva tabla:
cB
xB
0
x3
0
x4
4
x1
zj cj

cj 4 3 0 0 0
x
y1 y2 y3 y4 y5
3
5
0
1 0 12
2
3
3
0
0 1 1
2
2
1
1
3
1
0
0
2
2
12 0
1 0 0 2

Ahora entra en la base x2 y sale x4 , obteniendo:


cB
xB
0
x3
3
x2
4
x1
zj cj

cj 4 3 0 0
0
x
y1 y2 y3 y4 y5
2
0
0 1 1 1
2
0
1 0 23 1
3
2
2
1
0 0 1
3
3
2
5
14 0
0 0 3
3

La solucion optima es x = (2, 2, 2, 0, 0), suprimiendo las variables de


holgura queda x = (2, 2)

M
etodo de las dos Fases

Es un metodo que se utiliza para:


- Detectar si el conjunto de soluciones factibles es o no vaco.
- Comprobar si r(A) = m o si r(A) = k < m.
- Encontrar, de manera automatica, una solucion basica inicial.
Supongamos que no resulta inmediato obtener una submatriz B de rango
completo en el sistema Ax = b; x 0, podemos a
nadir unas variables
artificiales xa Rm cuyos coeficientes sean la matriz identidad de rango m:
Ax + Ixa = b

x 0;
9

xa 0

Es importante diferenciar las variables de holgura de las variables artificiales, las restricciones siguientes son equivalentes:
Ax b;

x 0 Ax + Ixh = b; x 0; xh 0

Sin embargo, las dos siguientes no son equivalentes:


Ax = b;

x0<

< Ax + Ixa = b; x 0; xa 0

Consideremos el problema artificial siguiente:


[P.A.] min w
min z
s.a. Ax + Ixa
x 0; xa

=
=
=

et xa
ct x
b
0

siendo e = (1, 1, . . . , 1)t Rm , note que [P.A.] es un problema expresado


en forma estandar y para el cual x = 0, xa = b, con B = I, es una Solucion
Factible Basica inicial obvia.
Si al resolver [P.A.] resulta una solucion en la cual xa 6= 0, entonces no
hay ning
un punto factible para el problema [P ].
a
Si x = 0, las variables artificiales habran salido de la base en la mayora
de los casos y habremos obtenido una base inicial para el problema original,
salvo en el caso de soluciones degeneradas.
Metodo de las Dos Fases:
1. Primera Fase resolver:
[P.A.] min w = et xa
s.a. Ax + Ixa = b
x 0; xa 0
2. Segunda Fase, tomando como base inicial, la base optima de la Fase 1
resolver:
min z = ct x
s.a. Ax = b
x 0
Al finalizar la Primera Fase podemos tener dos casos:

10

1. que w = 0 y no hay variables artificiales en la base, o si hay variables


artificiales en la base tienen valor 0 y los wj tj 0, entonces hay
Solucion Factible Basica y pasamos a la Segunda Fase, con la u
ltima
tabla obtenida en la Primera, cambiando los wj tj por los correspondientes zj cj .
2. que w > 0, hay variables artificiales positivas en la base y wj tj 0,
entonces no hay solucion.
Ejemplo:
min z
s.a. 2x1 + x2 + 2x3
3x1 + 3x2 + x3
x1 0; x2 0; x3
xa2 ,

=
=
=

4x1 + x2 + x3
4
3
0

Expresado en forma estandar, a


nadiendole las variables artificiales xa1 y
tenemos el problema:

s.a.

min z
2x1 + x2 + 2x3 + xa1
3x1 + 3x2 + x3 + xa2
xi 0 xai

=
=
=

xa1 + xa2
4
3
0 i

La tabla inicial del metodo Simplex, correspondiente a la Primera Fase


con base inicial B = (aa1 , aa2 ) es:
tB
xB
1
xa1
1
xa2
wj tj

tj 0 0 0 1 1
x y1 y2 y3 y1a y2a
4 2 1 2 1 0
3 3 3 1 0 1
7 5 4 3 0 0

Entra en la base x1 , y sale xa2 , por tanto el pivote es 3, efectuando el


pivoteo, obtenemos la nueva tabla:
tB
xB
1
xa1
0
x1
wj tj

tj 0 0 0 1 1
x y1 y2 y3 y1a y2a
2 0 1 43 1 2
3
1 1 1 13 0 13
2 0 1 43 0 5
3

Ahora entra en la base x3 y sale xa1 , obteniendo:


11

tB
xB
0
x3
0
x1
wj tj

tj 0 0 0 1
1
a
x y1 y2 y3 y1 y2a
3
0 3
1 34 1
2
4
2
1
5
1
1
1
0
2
4
4
2
0 0 0 0 1 1


La solucion optima de la primera fase es x = 12 , 0, 32 , 0, 0 , suprimiendo
las variables artificiales queda x = 12 , 0, 32 , con w
= 0, podemos pasar a la
Segunda Fase, partiendo de la u
ltima tabla obtenida.
cB
xB
1
x3
4
x1
zj cj

cj 4 1 1
x y1 y2 y3
3
0 3
1
2
4
1
5
1 4 0
2
7
0 13
0
2
4

Entra en la base x2 , y sale x1 , por tanto el pivote es 54 , efectuando el


pivoteo, obtenemos la nueva tabla:
1 1
y2 y3
9
3
0 1
5
5
2
4
1 0
5
5
11
13
0 0
5
5

La solucion optima del problema es x = 0, 25 , 95 , y el valor de la funcion
objetivo queda z = 11
5
cB
xB
1
x3
1
x2
zj cj

2.1

cj
x

4
y1

M
etodo de Penalidades o Big M

Al igual que el Metodo de las Dos Fases, se utiliza cuando no tenemos en el


problema original del Metodo Simplex, una Solucion Basica Inicial, se crea
el problema artificial, a
nadiendo variables artificiales penalizadas (multiplicadas por un escalar M tan grande como se quiera) y se agregan a la funcion
objetivo, una vez minimizada esta, e igualada a cero, se eliminan las columnas correspondientes a las variables artificiales y se resuelve por el metodo
Simplex, partiendo de la u
ltima tabla obtenida.
Sea el problema de programacion Lineal en forma general [P ]:
min z = ct x
s.a. Ax = b
x 0
12

y su problema artificial asociado:


[P.A.]

min w = c x +

m
X

M xai

i=1

s.a.

Ax + Ixa = b
x 0; xa 0

Entonces xa = b es una Solucion Factible Basica Inicial del problema


artificial [P.A.]
Pasos del Algoritmo:
1. Si no hay variables artificiales en la base o hay con valor nulo y los
coeficientes M 0, ir al Paso 3.
2. Si hay variables artificiales en la base con valor mayor que cero y los
coeficientes M 0, FIN, el problema no tiene solucion.
3. Continuar aplicando el metodo Simplex, hasta obtener el optimo.
Ejemplo:
min z
s.a. x1 + x2
4x1 + 3x2
x1 0; x2

4x1 x2
1
12
0

Expresado en forma estandar, a


nadiendole la variable artificial xa5 y las
variables de holgura x3 y x4 , tenemos el problema:
min z = 4x1 x2 + M xa5
s.a. x1 + x2 x3 + xa5
= 1
4x1 + 3x2
+ x4 = 12
a
xi 0 xi 0 i
La tabla inicial del metodo Simplex, correspondiente a la Primera Fase
con base inicial B = (aa5 , a4 ) es:
cj
4
1
0
0 M
cB
xB x
y1
y2
y3 y4 y5a
M
xa5 1
1
1
1 0 1
0
x4 12
4
3
0
1 0
zj cj
M M + 4 M + 1 M 0 0
13

Entra en la base x1 , y sale xa5 , por tanto el pivote es 1, efectuando el


pivoteo, obtenemos la nueva tabla:
cj 4 1 0 0
M
cB
xB x y1 y2 y3 y4
y5a
4
x1 1
1
1 1 0
1
0
x4 8
0 1 4 1
4
zj cj
4 0 3 4 0 M 4
En estos momentos la variable artificial esta fuera de la base, por tanto
podemos eliminar su columna correspondiente de la tabla, teniendo ahora
una Solucion Factible Basica para iniciar el metodo Simplex.
Entra en la base x3 , y sale x4 , por tanto el pivote es 4, efectuando el
pivoteo, obtenemos la nueva tabla:
cj 4 1 0 0
cB
xB
x
y1 y2 y3 y4
3
4
x1
3
1
0 14
4
0
x3
2
0 1
1 14
4
zj cj
12 0 2 0 1
La solucion optima y u
nica del problema es x = (3, 0, 2, 0), y el valor de
la funcion objetivo queda z = 12

Dualidad

Interpretacion del Problema Dual.


Ejemplo:
Un pastelero dispone de 150 kg de harina, 22 kg de az
ucar y 27.5 kg
de mantequilla para elaborar dos tipos de pasteles (A y B). Cada caja
de pasteles de tipo A requiere 3 kg de harina, 1 kg de az
ucar y 1 kg de
mantequilla y su venta le reporta un beneficio de 20 unidades monetarias
(UM). Cada caja de pasteles de tipo B requiere 6 kg de harina, 0.5 kg de
az
ucar y 1 kg de mantequilla y su venta le reporta un beneficio de 30 UM.
Cuantas cajas de cada tipo de pasteles debe producir el pastelero de
manera que se maximicen sus ganancias? Resolver el problema graficamente.
Planteamiento:
max z = 20x1 + 30x2
s.a. 3x1 + 6x2 150
14

1
x1 + x2 22
2
x1 + x2 27.5
x1 0 x2 0
Para 20x1 + 30x2 = c, con c = 600, una recta de nivel de la Funcion
Objetivo pasa por (30; 0) y por (0; 20), el resto de las rectas de nivel son
paralelas a esta.
Graficamente vemos que el punto P es la solucion optima, siendo P la
interseccion entre las rectas:
3x1 + 6x2 = 150

x1 + x2 = 27.5

resultando como solucion optima del problema:


x1 = 5

x2 = 22, 5

Con maximo beneficio: z = 20


x1 + 30
x2 = 775.
Para obtener este resultado maximo, ha utilizado toda la cantidad de
harina y de mantequilla, ambas restricciones se han saturado, sin embargo le
ha sobrado az
ucar, ya que de esta solo ha gastado:
1
22, 5
x1 + x2 = 5 +
= 16, 25kg
2
2
de los 22 kg de que dispona.
Supongamos que la cantidad de harina disponible aumenta en un kg.
Cuanto aumenta el beneficio del pastelero? Contestar a la misma cuestion
para un aumento de un kg en la cantidad de az
ucar y mantequilla.
Dado que la variacion en la cantidad de harina es muy peque
na, el punto
optimo sigue siendo la interseccion entre las restricciones de la harina y de
la mantequilla:
3x1 + 6x2 = 151

x1 + x2 = 27.5

resultando como solucion optima del problema:


x1 =

14
3

x2 =

137
6

Con maximo beneficio:


z = 20
x1 + 30
x2 =
luego el incremento es
z = u1 =

2335
10
= 775 +
3
3

10
3

15

Para el az
ucar es obvio que el incremento de 1 kg no modifica la solucion
optima del problema original, por tanto:

z = u2 = 0
Finalmente para la mantequilla, el nuevo optimo es la solucion de:
3x1 + 6x2 = 150

x1 + x2 = 28.5

resultando como solucion optima del problema:


x1 = 7

x2 = 21.5

Con maximo beneficio:


z = 20
x1 + 30
x2 = 785
luego el incremento es
z = u3 = 10
Pregunta: Supongamos que el pastelero quiere vender su negocio, para
aceptar la oferta que le hagan por los recursos de que dispone, debe obtener
un beneficio mayor o igual que el que obtendra si utilizara esos recursos
para producir pasteles. Sean u1 , u2 y u3 los precios por kg de harina, az
ucar
y mantequilla, respectivamente. El comprador se quiere gastar lo menos
posible, luego para hacer una oferta al pastelero, debe resolver el siguiente
problema:
min z = 150u1 + 22u2 + 27, 5u3
s.a. 3u1 + u2 + u3 20
1
6u1 + u2 + u3 30
2
u1 0; u2 0; u3 0
Si resolvemos este problema, introduciendo variables artificiales, obtenemos la solucion optima:
u1 =

10
3

u2 = 0

u3 = 10

Con mnimo coste:


z = 775
Observaciones:
1. La ganancia del pastelero es la misma si fabrica pasteles que si vende
el negocio.
16

2. Los precios justos a los que debe vender cada kg de los recursos de que
dispone coinciden con el beneficio adicional o marginal, de disponer de
1 kg mas de dichos recursos para producir pasteles. En particular como
la restriccion de az
ucar no se satura, hay excedente de az
ucar, el precio
del az
ucar es 0.
3. Al problema del comprador se le llama Problema DUAL [D], tiene
tantas restricciones como variables tenga el Problema PRIMAL [P ] y
tantas variables como restricciones tenga [P ]. La Teora de Dualidad
General estudia las relaciones existentes entre ambos problemas.
Resumen del Ejemplo:
Problema del Pastelero [P ]:
max z = 20x1 + 30x2
s.a. 3x1 + 6x2 150
1
x1 + x2 22
2
x1 + x2 27.5
x1 0 x2 0
Problema del Comprador [D]:
min z = 150u1 + 22u2 + 27, 5u3
s.a. 3u1 + u2 + u3 20
1
6u1 + u2 + u3 30
2
u1 0; u2 0; u3 0

3.1

Definici
on del Problema Dual

Se dan tres definiciones seg


un el formato en el que se representa el problema,
y posteriormente comprobamos que las tres definiciones son consistentes.
1. En forma estandar:
[P] : min z = ct x
s.a. Ax = b
x 0

[D] : max w = bt u
s.a. At u c
u
irrestricta
17

2. En forma canonica de maximizacion:


[P] : max z = ct x
s.a. Ax b
x 0

[D] : min w = bt u
s.a. At u c
u 0
3. En forma canonica de minimizacion:
[P] : min z = ct x
s.a. Ax b
x 0

[D] : max w = bt u
s.a. At u c
u 0
Las definiciones anteriores son consistentes, es decir, si escribimos un
problema en cualquiera de los tres formatos, su problema dual asociado siempre es el mismo.
Observaciones:
1. A cada restriccion primal le corresponde una variable dual.
2. El vector demanda o requerimiento b del problema primal P se convierte
en el vector de costo del dual D.
3. El vector de la funcion objetivo c del problema primal P se convierte
en el vector de requerimiento del problema dual D.
4. Se cambia la funcion objetivo de min a max.
5. Se cambia el sentido de las restricciones.

18

6. Si tenemos restricciones de igualdad y variables irrestrictas en signo,


entonces:
(a) A toda restriccion de igualdad del primal P le corresponde una
variable dual irrestricta en signo en el dual D.
(b) A toda variable del primal P irrestricta en signo le corresponde
una restriccion dual de igualdad.
Lema: El dual del problema dual es, de nuevo, el problema primal.
Demostracion:
Sea [P] : max z = ct x
s.a. Ax b
x 0
su problema dual asociado es:
[D] : min w = bt u
s.a. At u c
u 0
el dual de [D] es:
de nuevo [P]: max z = ct x
s.a. Ax b
x 0
Teniendo en cuenta que las definiciones son equivalentes, queda probado
el resultado. Como consecuencia, el papel que juegan [P ] y [D] en todos los
resultados es reversible, por lo cual es indiferente distinguir entre problema
primal y problema dual, en general podemos hablar de un par de problemas
duales.

3.2

Teorema Fundamental de Dualidad

Consideremos el problema primal:


[P] : min z = ct x
s.a. Ax = b
x 0
y su correspondiente problema dual:
[D] : max w = bt u
19

s.a. At u c ut A ct
u
irrestricta
El siguiente Lema demuestra que el mnimo del problema Primal es siempre mayor o igual que el maximo del problema Dual asociado, para cualquier
punto factible.
Lema: Sea x una solucion factible del problema primal y u una solucion
factible del problema dual, entonces:
c t x bt u
Demostracion:
ct x ut Ax = ut b = bt u
Como consecuencia del lema, si x es factible para el problema Primal
y u es factible para el problema Dual y ademas ct x = bt u, entonces x y u
son los optimos de sus respectivos problemas. Es decir, ct x = bt u, es una
condicion suficiente para que x y u sean optimos. El Teorema de Dualidad
demuestra que la condicion anterior, ademas de suficiente, debe cumplirse
necesariamente.
Teorema Fundamental de Dualidad de la Programacion Lineal.
Si P tiene una solucion optima finita, tambien la tiene D y los correspondientes valores de las funciones objetivos son iguales.
Si P no tiene solucion acotada, entonces D no tiene solucion factible.
Otra forma de Enunciarlo:
Dado un par de problema duales, una condicion necesaria y suficiente para
que una solucion factible x sea optima, es que exista una solucion factible u
del otro problema, tal que:
ct x = bt u
Ademas esta solucion u es tambien optima de su problema asociado.
Demostracion
La segunda parte es inmediata por el Lema:
Si D no tuviera solucion factible, existira u Rm tal que bt u ct x para
cualquier x que sea factible, lo cual es una contradiccion ya que hemos considerado la solucion de P no acotada.
Sea x la solucion optima finita de P , por tanto x esta asociada a una base
optima formada por las columnas de la matriz B:
x = (
xB ; xN )t = (B 1 ; 0)
Definimos ut = ctB B 1 Rm , entonces:
ut = ctB B 1 (B, N )
20

= (ctB , ctB B 1 N ) ct
ctB B 1 N ctN

zj cj
j R
zj cj 0
j R = {i : xi es no basica}
pero esta condicion se cumple puesto que x es el optimo, entonces u es
factible para D.
Ademas, por el lema, se cumple que:
ut = ctB B 1 b = ct x
Por tanto u es el optimo de D.
Observaciones:
1. Interpretacion Economica: El pastelero gana lo mismo si vende su negocio como si contin
ua produciendo pasteles, siempre que su problema
tenga solucion optima finita. Si el problema no estuviera acotado, por
ejemplo que pueda ganar infinito produciendo pasteles, no debera aceptar ninguna oferta, como consecuencia, el problema del comprador, el
dual, no tiene solucion factible.
2. Resolver P , encontrar la base optima B para P , equivale a resolver D
a traves de la expresion:
ut = ctB B 1
3. La condicion de factibilidad de u es equivalente a la de optimalidad de
x y recprocamente.

u factible
x factible

x optimo
u optimo

4. Sensibilidad y Solucion del Dual: Supongamos que queremos calcular la


variacion de la funcion objetivo ante peque
nos cambios de los recursos
t
b = (b1 , b2 , ..., bm ) en el problema P , esta variacion la podemos medir
mediante las derivadas:
z
= ui
bi

i = 1, 2, ..., m

ya que :
z =

ctB B 1 b

= u b =

t
X
i=1

21

ui bi

luego la solucion del problema dual puede interpretarse como el incremento de la funcion objetivo del primal ante peque
nas variaciones de
los recursos bi . De donde ui es el precio justo que debe pagar el comprador por cada unidad de recurso del negocio, llamado en economa
el precio sombra.
5. Si P no es factible, entonces se cumple que D no es acotado o D no es
factible, lo que no puede ocurrir es que D tenga solucion finita.

3.3

Algoritmo Dual-Simplex

1. Conocida una base B, con solucion x = B 1 b, tal que zj cj 0


(para problemas de min), llamada Solucion Dual Factible del Problema
Primal, y su tabla correspondiente.
2. Si xB 0, FIN, la solucion es optima.
3. Si existe un s I, tal que xs < 0, ir al Paso 4.
4. Analizar el signo de Ysj :
(a) Si Ysj 0, para todo j, FIN, no hay solucion factible.
(b) Si existe al menos un j, tal que Ysj < 0, ir al Paso 5.
5. Criterio de Salida o Condicion Dual de Factibilidad:
Calcular xl = min {
xs : xs < 0}, entonces sale de la base la variable xl .
6. Criterio de Entrada o Condicion Dual de Optimalidad:
Calcular k, tal que:


zk ck
zj cj
= min
: Ylj < 0
Ylk
Ylj
entra la variable xk en la base.
7. Utilizando Ylk como pivote, actualizar la tabla con la nueva base B 0 ,
obtenida al sustituir al por ak , calcular los nuevos valores de xB , Yj y
zj cj , luego ir al Paso 2.
Ejemplo:
max z
s.a. x1 + x2
2x1 + 3x2
x1 0; x2

22

3x1 x2
1
2
0

Expresado en forma estandar, a


nadiendole variables de holgura x3 y x4 ,
tenemos el problema:
max z = 3x1 x2
s.a. x1 + x2 x3
= 1
2x1 + 3x2 x4 = 2
xi 0 xai 0 i
Para tener las variables de holgura con coeficientes positivos, multiplicamos las ecuaciones por 1
max z = 3x1 x2
s.a.
x1 x2 + x3
= 1
2x1 3x2 + x4 = 2
xi 0 xai 0 i
La tabla inicial del metodo Dual del Simplex, con base inicial B = (a3 , a4 )
y solucion optima x = (0; 0; 1; 2), pero no factible, es:
cj 3 1 0 0
cB
xB x y1 y2 y3 y4
0
x3 1 1 1 1 0
0
x4 2 2 3 0 1
zj cj
0
3
1 0 0
En esta tabla todos los zj cj son no negativos y el problema es de calcular el maximo, ademas hay variables basicas con valores negativos,podemos
aplicar el algoritmo Dual del Simplex.
Sale de la base x4 , por ser el mas negativo, y entra x2 , por tanto el pivote
es 3, efectuando el pivoteo, obtenemos la nueva tabla:
cj
3 1 0
0
cB
xB
x
y1
y2 y3
y4
0
x3 1/3 1/3 0 1 1/3
1
x2 2/3
2/3
1 0 1/3
zj cj
2/3 7/3
0 0 1/3
Sale de la base x3 , y entre x4 , por tanto el pivote es 1/3, efectuando el
pivoteo, obtenemos la nueva tabla:

23

cj 3 1 0 0
cB
xB x y1 y2 y3 y4
0
x4 1
1
0 3 1
1
x2 1
1
1 1 0
zj cj
1 2
0
1 0
Como todos los x son no negativos, estamos en la solucion optima y
u
nica del problema es x = (0, 1, 0, 1), y el valor de la funcion objetivo queda
z = 1.
Ejemplo:
s.a.

min z
3x1 + 5x2
x1 + 3x2
x1 0; x2

2x1 3x2
5
4
0

Expresado en forma estandar, a


nadiendole variables de holgura x3 y x4 ,
y multiplicando por 1 en la primera restriccion, tenemos el problema:
min z = 2x1 3x2
s.a. 3x1 5x2 + x3
= 5
x1 + 3x2 + x4 = 4
xi 0 xai 0 i
La tabla inicial del metodo Dual del Simplex, con base inicial B = (a3 , a4 )
es:

cj
2 3 0 0
cB
xB x y1 y2 y3 y4
0
x3 5 3 5 1 0
0
x4 4
1
3 0 1
zj cj
0 2 3 0 0
En esta tabla existe un zj cj > 0 y el problema es de calcular el mnimo,
no contamos con las condiciones necesarias para aplicar el algoritmo Dual
del Simplex, hay que utilizar alguno de los algoritmos que utilizan variables
artificiales.
Siempre que en la funcion objetivo halla al menos un coeficiente de las
variables que sea negativo, no es posible aplicar el metodo Dual del Simplex.
El metodo Dual del Simplex no contempla solucion no acotada, debido
a que parte de que los zj cj 0 para toda j, esto implica que existe una
solucion factible del Dual y si P o D tienen solucion Factible, entonces el
problema correspondiente tiene Solucion finita, como el dual D tiene Solucion
Factible, entonces el primal P tiene solucion finita.
24

3.4

Holguras Complementarias

Teorema de las Holguras Complementarias


Dado un par de problemas duales, una condicion necesaria y suficiente
para que x y u, soluciones factibles de P y D respectivamente, sean optimas
es que:
u(A
x b) = 0
(c uA)
x = 0
Otra forma de enunciar el teorema anterior es:
n
X
ui (
aij xj bi ) = 0
j=1

(cj

n
X

aij ui )
xj = 0

j=1

Si :
xj > 0

cj

n
X

aij ui = 0

j=1

cj =

n
X

aij ui

j=1

Si :

n
X

aij ui > cj

xj = 0

j=1

P
En Economa la expresion nj=1 aij ui se puede interpretar como la ganancia
o beneficio esperado y el cj como el beneficio real.
Demostracion :
[=]
Como x y u son soluciones factibles de los problemas P y D respectivamente, entonces x 0 y u 0, ademas A
x b y uA c , por tanto
:
A
xb0

c uA 0

25

Luego :
= u(A
x b) 0
= (c uA)
x0
Sumando miembro a miembro obtenemos :
+ = c
x ub 0
Seg
un el Teorema de Dualidad, una condicion necesaria y suficiente para que
x y u sean optimas es que el miembro de la derecha de esta igualdad sea
0, o sea, tendramos que + = 0, pero como 0 y 0 se tiene
necesariamente que cumplir que = = 0, con lo cual queda demostrada
la implicacion hacia la derecha.
[=]
u(A
x b) = 0
(c uA)
x = 0
Sumando miembro a miembro obtenemos :
c
x ub = 0
de donde c
x = ub , seg
un el Teorema de Dualidad y la Propiedad, que
expresa que si el primal tiene optimo finito entonces el dual tambien lo tiene
y coinciden sus valores optimos, entonces x y u son soluciones optimas de los
problemas primal P y dual D respectivamente, con lo que queda demostrada
la segunda implicacion.

M
etodos de Punto Interior

Durante decadas el metodo Simplex ha sido el metodo de resolucion de los


problemas de Programacion Lineal, sin embargo desde el punto de vista
teorico, el tiempo de calculo requerido por este metodo crece de forma exponencial con el tama
no del problema, definido como la cantidad de variables
mas la cantidad de restricciones. Este crecimiento exponencial corresponde al
peor de los casos posibles, que no corresponde con lo que ocurre normalmente
en los casos reales.
Muchos investigadores han tratado de desarrollar algoritmos cuyos tiempos de calculo tuviesen un crecimiento polinomial con el tama
no del problema, como Frisch, Fiacco y McCormick y Khachiyan. Todos los intentos
26

fallaron, ya fuese desde el punto de vista teorico o desde el punto de vista


practico.
En 1984, Karmarkar propuso un algoritmo cuya complejidad computacional es polinomial y que resulto altamente competitivo frente al metodo
Simplex para resolver problemas de Programacion Lineal de gran tama
no.
Este algoritmo de Karmarkar origino multitud de trabajos alrededor de su
idea original que ha sido mejorada en muchos aspectos. Una de las mejores
variantes es el algoritmo de barrera primal-dual introducido por Meggido.
Consideremos el siguiente problema de Programacion Lineal, expresado
en forma estandar, como problema primal:
min zP = ct x
sujeta a : Ax = b
x 0
donde los vectores x, c Rn , b Rm , y la matriz A Rm Rn .
Su problema dual es:
max zD = bt u
sujeta a : At u c
u 0
Empleando variables de holgura, convertimos las desigualdades en igualdades, quedando el problema anterior de la siguiente forma:
max zD = bt u
sujeta a : At u + s = c
s 0
donde las variables duales son u Rm y s Rn
Para eliminar las restricciones de no negatividad, se emplea la funcion
barrera logartmica, entonces se aborda el problema de Programacion No
Lineal:
max

zD = b u +
sujeta a :

n
X

ln sj

j=1
t

A u+s = c

Notese que los sj nunca seran nulos para que la funcion de penalizacion
este bien definida.
27

Los metodos de punto interior resuelven el problema para diferentes valores del parametro , este parametro se define de manera que : 0 > 1 >
2 > ... > = 0, generando una sucesion de problemas cuya sucesion de
soluciones {xk } converge a la solucion del problema dual.
La funcion Lagrangiana de nuestro nuevo problema tiene la forma:
t

L(x, u, s, ) = b u +

n
X

ln sj X t (At u + s c)

j=1

Los multiplicadores x de Lagrange coinciden con las variables del problema


primal P . Empleando el Lagrangiano, las condiciones de optimalidad de
primer orden del problema son:
x L(x, u, s, )
u L(x, u, s, )
s L(x, u, s, )
donde : X
X
S
e

=
=
=

At u + s c = 0
Ax b = 0
XSe e = 0
diag(x1 , x2 , ..., xn )
diag(x1 , x2 , ..., xn )
diag(s1 , s2 , ..., sn )
(1, 1, ..., 1)t

la dimension del vector e es de n 1.


Para resolver este sistema de ecuaciones mediante el metodo de Newton,
las variables x, u y s son sustituidas por x + 4x, u + 4u y s + 4s respectivamente y eliminando los terminos de segundo orden, se obtiene el siguiente
sistema en los incrementos de las variables:
A4x = 0
A 4u + 4s = 0
S4x + X4s = e XSe
t

Las direcciones de b
usqueda primal y dual se obtienen resolviendo el
sistema anterior para las variables 4x, 4u y 4s:
4u = (AXS 1 At )1 AS 1 v()
4s = At 4u
4x = S 1 v() XS 1 4s
siendo v() = e XSe.

28

A continuacion se realiza una iteracion del metodo de Newton, incluyendo


el calculo de la longitud del paso, para obtener el nuevo punto:
uk+1 = uk + d 4u
sk+1 = sk + d 4s
xk+1 = xk + p 4x
donde p [0, 1] y d [0, 1] son las longitudes de paso primal y dual
respectivamente. El paso primal se aplica a la variable primal x, mientras
que el paso dual se aplica a las variables duales u y s.
La seleccion de p y de d se realiza de modo que x y s permanezcan
estrictamente positivos, mientras que u no ha de ser positivo. Para asegurar
que sean positivos se emplea el parametro (0, 1), entonces:


xi
x = min
tal que 4xi <
4xi
p = min{1, x }


sj
tal que 4sj <
s = min
4sj
d = min{1, s }
donde es un parametro de tolerancia (por ejemplo = 0.0001) y como se
suele tomar = 0.99995, estas limitaciones en la longitud de paso son muy
importantes para valores muy peque
nos de los incrementos 4x y 4s.
Por ser factibles x y u, la holgura dual se calcula mediante la expresion:
c t x bt u
que se emplea como medida de la proximidad a la solucion optima.
Si el punto inicial no es factible, aplicando el metodo de Newton al sistema
de las condiciones de primer orden, se llega al sistema incremental siguiente:
A4x = b Ax
A 4u + 4s = c At u s
S4x + X4s = e XSe
t

cuya solucion es:


4u = (AXS 1 At )1 (AS 1 v() AXS 1 rd rp )
4s = At 4u + rd
4x = S 1 v() XS 1 4s
29

donde rp = b Ax y rd = c At u s, son los residuos primal y dual


respectivamente.
Si el punto inicial no es factible, la factibilidad y la optimalidad se alcanzan simultaneamente a medida que el algoritmo de punto interior progresa,
es decir, los residuos y la holgura dual tienden a cero simultaneamente.

4.1

Actualizaci
on del par
ametro de penalizaci
on

Un posible eleccion de se obtiene de las condiciones de optimalidad, es la


siguiente igualdad:
st x
=
n
Para alcanzar un camino central, que evite una prematura aproximacion
a la frontera, se introduce el parametro , entonces el valor de queda
modificado:
st x
=
n
Los valores del parametro se ajustan experimentalmente mediante un
ensayo y error, una eleccion razonable es:

0.1 si ct x > bt u
=
0.1 si ct x < bt u
Si ct x = bt u, estamos en el punto optimo.

4.2

Criterio de Parada

El algoritmo finaliza cuando la holgura dual es suficientemente peque


na; es
decir, si:
|ct xk | |bt uk |
<
max {1, |ct xk |}
donde  es una tolerancia unitaria.
El numerador de la fraccion anterior representa la holgura dual, mientras
que el denominador es el maximo entre 1 y el valor de la funcion objetivo del
problema primal, esta eleccion evita dividir por cero.

4.3

Selecci
on del punto inicial

Si no se dispone de un punto inicial factible, el algoritmo heurstico de Vaderbei proporciona un buen punto de inicio.

30

1. Calcular el vector x mediante la igualdad:


1
kaj k2 + 1

xj =

donde aj es la j-esima columna de la matriz de restricciones A, y k k2


es la norma eucldea.
2. El escalar se calcula mediante:
=

kbk2 + 1
kA
x k2 + 1

3. El vector inicial x0 se calcula:


x0 = 10 x
4. El vector de variables duales u se hace nulo, el vector s de variables
duales se inicia en funcion del vector x:
(a) Si xj tiene una cota superior finita, entonces:

1 si cj < 0
sj =
cj + 1 en otro caso
(b) Si xj no esta acotado superiormente, entonces:

1 si cj < 1
sj =
cj en otro caso

4.4

Algoritmo de barrera logartmica primal-dual

1. Se toma k = 0 y se selecciona un punto inicial (xk , uk , k ), que puede


ser factible o no factible para el problema primal y/o dual, se calcula
el vector de holgura dual st = c At uk .
2. Se calculan las matrices diagonales Xk = diag(x1 , x2 , ..., xn )k y Sk =
diag(s1 , s2 , ..., sm )k .
3. Se calcula el vector v(k ) = k e X t S t e y los vectores residuos rp =
Axt b y rd = c At ut st . Si el punto actual es factible para los
problemas primal y dual, los residuos son cero.
4. Se resuelve el sistema de Newton para obtener las direcciones de b
usqueda
4uk , 4sk y 4xk .
31

5. Se calculan las longitudes de paso p y d .


6. Se actualizan las variables duales y primales.
7. Si la holgura dual es suficientemente peque
na, FIN, se ha llegado a la
solucion optima. En caso contrario se hace k = k + 1 y se contin
ua.
8. Se actualiza el parametro de penalizacion k y se va al PASO 2.

Otros Algoritmos

Limitaciones de la Programacion Lineal:


1. Proporcionalidad: En todos los problemas de Programacion Lineal se
supone proporcionalidad entre los productos y el costo, lo cual no se
cumple en la realidad, ya que a mayor oferta disminuye la demanda.
2. Aditividad: Se supone que todas las actividades o varias de ellas se
pueden efectuar al mismo tiempo, en la realidad existen actividades
antecedentes y actividades consecuentes.
3. Divisibilidad: En los problemas de Programacion Lineal hay variables
que pueden tomar cualquier valor en un intervalo, incluso fraccionario,
lo cual no siempre se corresponde con los problemas reales que necesitan
una solucion discreta.
4. Determinista: Los valores de los parametros A, b y c se consideran fijos
en Programacion Lineal, y al cambiar estos valores, no seran aplicables
los metodos.
Temas de Investigacion Operativa en los que se podra profundizar, que
resuelven algunas de las limitaciones de la Programacion Lineal :
1. Mejoras del metodo Simplex para realizar mas rapido los calculos.
- Metodo Simplex Revisado, introduce la funcion objetivo como una
restriccion mas del problema.
2. Especializacion del Metodo Simplex a problemas con estructuras especiales:
- Algoritmo de Transporte.
- Problemas de Flujos en Grafos.
3. Algoritmos de Programacion Entera o Discreta, resuelve en parte la
limitacion de Divisibilidad.
32

4. Otros enfoques para resolver problemas de Programacion Lineal.


5. Programacion Estocastica, donde algunos de los elementos del problema no son conocidos, sino que son variables aleatorias con una determinada distribucion.
6. Programacion Dinamica, asociada a Problemas de Programacion Lineal
de procesos continuos, donde los parametros A, b y c cambian.
Un problema de Programacion Linea con variables enteras, puede resolverse
utilizando el Metodo Simplex siempre que la matriz A sea escalonada y sus
elementos 0 y 1.

33

Vous aimerez peut-être aussi