Sei sulla pagina 1di 6

Metodo Simplex Revisado con Cotas

Daniel Severin

Esta vez, vamos a resolver un ejercicio cuyo enunciado es:

Resolver el siguiente problema mediante el metodo simplex revisado con cotas.


max z = x1 x2
s/a
x1 2x2 2
x1 + x2 10
x1 4
2 x2 5

Preliminares. Lo primero que hacemos es convertir el problema a su


forma standard:
max z = x1 x2
s/a
x1 2x2 + x3 = 2
x1 + x2 + x4 = 10
x1 4
2 x2 5
0 x3
0 x4

Matricialmente,
max z = c.x
s/a
A.x = b
lxu

1
donde,
    x 1
1 2 1 0 2 x2
A= ,b = ,x =
1 1 0 1 10 x3
x4
y c = (1, 1, 0, 0). Las cotas inferiores y superiores son l = (, 2, 0, 0) y
u = (4, 5, +, +) respectivamente.

Busqueda primer soluci on factible. El metodo es el siguiente: Se


propone una solucion basica y, si es factible, se comienza a trabajar con ella
como primer solucion factible. Si, en cambio, resulta no factible, se resuelve
primero el problema de inicializacion.

A primera vista, la funcion objetivo muestra que conviene hacer crecer x1


tanto como se pueda, y conviene hacer decrecer x2 tambien. As que propo-
nemos como solucion basica, la que enva x1 a su cota superior y x2 a su cota
inferior. Es decir,
x1 = 4, x2 = 2, x3 = 2, x4 = 4.
Sin embargo, es no factible pues x3 se vuelve negativa. Entonces, vamos a
resolver un problema auxiliar. Cuando a cada restriccion le corresponde una
slack, un metodo posible es agregar tantas variables artificiales como restric-
ciones se violen (en nuestro ejercicio se viola la primera restriccion) y tomar
como variables basicas a las artificiales mas las slacks cuyas restricciones aso-
ciadas no se violan (en nuestro ejercicio, x4 ).
max v = x5
s/a
x1 2x2 + x3 + x5 = 2
x1 + x2 + x4 = 10
x1 4
2 x2 5
0 x3
0 x4
x5 0
La variable artificial agregada es x5 . La idea es que x5 alcance su cota superior
que vale cero. Las matrices y vectores que conforman el problema auxiliar

2
son
x1
    x2
1 2 1 0 1 2
A= ,b = ,x = x3
1 1 0 1 0 10
x4
x5
y c = (0, 0, 0, 0, 1). Las cotas inferiores y superiores son l = (, 2, 0, 0, )
y u = (4, 5, +, +, 0) respectivamente. Ahora, la primer base factible es

B = [a5 , a4 ] = I = B 1 , N1 = [a2 , a3 ], N2 = [a1 ]

(recordar que x1 tomaba su cota superior y x2 su cota inferior, y gracias a la


adjuncion de la variable artificial, x3 puede tomar su cota inferior). En todo lo
que sigue, N1 corresponderan a las columnas de la no-base correspondientes
a las variables que toman su cota inferior. Y N2 corresponderan a las colum-
nas de la no-base correspondientes a las variables que toman su cota superior.

Test de optimalidad. Recordemos que

v = cB .B 1 .b + (cN1 cB .B 1 .N1 ).xN1 + (cN2 cB .B 1 .N2 ).xN2

Debemos investigar los coeficientes de la funcion objetivo. Llamemos w al


vector que resulta del producto cB .B 1 . Utilizando la primer solucion facti-
ble hallada, w = (1, 0).I = (1, 0).
Lo siguiente es evaluar los coeficientes de la funcion objetivo hasta encontrar
una variable no basica que, al modificarse, pueda mejorar el objetivo:
c1 w.a1 = 1 < 0, por lo tanto entra x1 a la base y dejamos de buscar
en los coeficientes de la funcion objetivo.

NOTA: Las variables que esten en sus cotas superiores deben tener coefi-
cientes negativos para entrar a la base. Las variables que esten en sus cotas
inferiores deben tener coeficientes positivos para entrar a la base.

Test de factibilidad. Ahora tenemos que hallar la variable saliente que


mas restriccion impone, cuando x1 comienza a decrecer. Supongamos que
x1 x1 , con 0. Entonces, el cambio que efect uan las variables
basicas es
xB xB + B 1 .a1 ..

3
Es decir, si x1 4 entonces
x5 x5 + 1. = 2 + ,
x4 x4 + 1. = 4 + .

NOTA: Dividiremos este test en 4 partes. En la primer parte estudiaremos


xB lB y asignaremos 1 al mas restringido que podamos obtener. En la
segunda parte estudiaremos xB uB y asignaremos 2 al mas restringido
que podamos obtener. En la tercer parte estudiaremos x1 l1 y asignare-
mos 3 al mas restringido que podamos obtener. Finalmente, calcularemos
= mn(1 , 2 , 3 ) y, si = + el problema es no acotado. Por otra parte,
si = 3 entonces x1 no entra a la base, saltando de su cota superior a su
cota inferior simplemente. En el resto de los casos, x1 entrara a la base con
valor x1 y existira una variable basica que saldra (justamente, aquella
que imponga la mayor restriccion).

PRIMERA PARTE. Las restricciones son x5 = 2 + , y x4 =


4 + 0. Como ninguna acota a , 1 = +.

SEGUNDA PARTE. Las restricciones son x5 = 2 + 0, y x4 = 4 +


+. Por lo tanto, x5 es una posible candidata a salir de la base y 2 = 2.

TERCERA PARTE. La restriccion es x1 = 4 . Nuevamente,


3 = +.

PARTE FINAL. Tenemos a = mn(+, 2, +) = 2. En consecuencia,


x5 resulta ser la variable saliente. Cabe aclarar que x5 va a pasar a su cota
superior.

Actualizaci on. Para poder pasar a la proxima iteracion (la cual comien-
za con el test de optimalidad) debemos actualizar la base:
 
1 1 0
B = [a1 , a4 ], B = , N1 = [a2 , a3 ], N2 = [a5 ]
1 1
Algunas observaciones son:
Dado que x5 pasa a valer su cota superior, el problema auxiliar alcanza
su optimo. Ademas, este optimo es cero lo que quiere decir que la
solucion basica que tenemos es factible en el problema original. De este
modo, en la siguiente iteracion ya podemos volver al problema original.

4
Sirve de algo mantener x5 en el problema original? NO! Es una variable
que no aporta nada; su valor es cero. Podemos quitarla de la no-base.
Por lo tanto, consideraremos N2 = [ ] y c = (1, 1, 0, 0).

Test de optimalidad. Debemos investigar otra vez los coeficientes de


la funcion objetivo. Sea w = cB .B 1 = (1, 0).
Ahora procedemos a evaluar los coeficientes de la funcion objetivo:
c2 w.a2 = 1 + 2 = 1 > 0, por lo tanto entra x2 a la base y dejamos de
buscar en los coeficientes de la funcion objetivo.

Test de factibilidad. Supongamos que x2 x2 + , con 0. En-


tonces, el cambio que efect
uan las variables basicas es
xB xB B 1 .a2 ..
Es decir, si x2 2 + entonces
x1 x1 (2). = 2 + 2,
x4 x4 3. = 6 3.
Al valor del x2 previo ya lo conocamos por que sabamos que estaba en su
cota inferior (x2 = 2). A los valores de las variables basicas los podemos
calcular usando B 1 .b B 1 .N1 .xN1 B 1 .N2 .xN2 :
             
x1 1 0 2 1 0 2 1 2 2
= . . . =
x4 1 1 10 1 1 1 0 0 6
PRIMERA PARTE. Las restricciones son x1 = 2 + 2 , y x4 =
6 3 0. Por lo tanto, x4 es una posible candidata a salir de la base y
1 = 2.

SEGUNDA PARTE. Las restricciones son x1 = 2 + 2 4, y x4 = 6 3


+. Por lo tanto, x1 es una posible candidata a salir de la base y 2 = 1.

TERCERA PARTE. Debemos verificar que x2 (que actualmente esta en su


cota inferior) no sobrepase su cota superior. La restriccion es x2 = 2 + 5,
lo que genera 3 = 3.

PARTE FINAL. Tenemos a = mn(2, 1, 3) = 1. En consecuencia, x1 re-


sulta ser la variable saliente. Cabe aclarar que x1 va a pasar a su cota superior.

5
Actualizacion. Para poder pasar a la proxima iteracion debemos actua-
lizar la base:
 
1/2 0
1
B = [a2 , a4 ], B = 1/2
, N1 = [a3 ], N2 = [a1 ]
1

Test de optimalidad. Sea w = cB .B 1 = (1/2, 0).


Ahora procedemos a evaluar los coeficientes de la funcion objetivo:
c3 w.a3 = 0 1/2 = 1/2 0,
c1 w.a1 = 1 1/2 = 1/2 0.

Como no encontramos ninguna variable en N1 (i.e. x3 ) con coeficiente po-


sitivo estricto, ni ninguna variable en N2 (i.e. x1 ) con coeficiente negativo
estricto, se cumple la condicion de optimalidad.

Resultado. Como solo nos interesa saber x1 y x2 , podemos aprovechar la


ltima iteracion. x1 paso a su cota superior, as que x1 = 4.
informacion de la u
Tambien, x2 entro a la base con el valor 2 + , es decir x2 = 3. Con esto es
suficiente para computar la funcion objetivo, z = x1 x2 = 1.

NOTA: La forma general de calcular los resultados es apelando al u


ltimo
diccionario,
xB = B 1 .b B 1 .N1 .xN1 B 1 .N2 .xN2
.
z = cB .B .b + (cN1 cB .B 1 .N1 ).xN1 + (cN2 cB .B 1 .N2 ).xN2
1

OTRA NOTA: En realidad, en este ejercicio hubo una restriccion que se


podra haber eliminado. Notese que x1 2x2 2, x1 4 y 2 x2 5
implican x1 + x2 9 (se puede observar claramente si se dibuja el poliedro).
Es decir, que la segunda restriccion del ejercicio siempre se cumple. Y ademas,
no se cumple por igualdad. En el metodo simplex, una restriccion as solo
genera una fila extra en la matriz A y una variable slack in util (en este caso,
x4 ) pues nunca puede salir de la base.