Você está na página 1de 133

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales 1/133

Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3


Matemticas de EspecialidadIngeniera Elctrica

Programacin Lineal. El Mtodo Smplex

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_simplex_2016.pdf
ndice 2/133

 Introduccin
 Condiciones de punto ptimo
 Mejora de una solucin bsica factible
 El algoritmo Smplex
 Degeneracin y ciclado
 Solucin bsica factible inicial
 Anlisis de sensibilidad
 El mtodo Smplex para variables acotadas
 Implementaciones comerciales del mtodo Smplex
 El mtodo Smplex en forma de tableau
 Otras variantes y mejoras del Smplex
 Complejidad computacional del mtodo Smplex
3/133

Introduccin

 Para encontrar el ptimo del problema de PL

min. c T x
s. a Ax D b
x  0;
se podran estudiar, uno a uno, los vrtices o puntos extremos del politopo

P D fx 2 Rn W Ax D b; x  0; A 2 Rmn; b 2 Rng

y determinar aqul en el que la funcin objetivo se hace mnima.

n
 Para m y n grandes, considerar todos es prohibitivo pues son m.n m/
:
 En 1947 George B. Dantzig culmin la investigacin de un importante 4/133

equipo de ingenieros, matemticos y economistas formulando el Mtodo


Smplex.

George B. Dantzig, EE.UU. 1914-2005.

 Sigue una estrategia de bsqueda del punto ptimo que no estudia todos los
vrtices de un problema. Sus claves:
 Encontrar un vrtice desde el que comenzar: solucin bsica factible del
politopo P ;
 Desplazarse desde ese punto extremo a otro, a lo largo de alguna arista de
P , mejorando con ello la funcin objetivo.
 Repetir el paso anterior cuantas veces sea necesario hasta que se alcance la
solucin ptima o la arista escogida lleve a 1.
5/133

Condiciones de punto ptimo

Teorema Condiciones de Karush-Kuhn-Tucker x 2 Rn es el ptimo del pro-


grama lineal
min. c T x
s. a Ax D b
x  0;
si y slo si existen vectores  2 Rm y  2 Rn tales que

(i) Ax D b; x  0; (factibilidad del problema primal)


T
(ii) c D A  C ;   0; (factibilidad del problema dual)
(iii) i xi D 0; i D 1; : : : ; n: (holguras complementarias o gap de dualidad)

 La condicin i es la de factibilidad del problema, tal como est planteado.


6/133

 La Funcin de Lagrange del problema es


Joseph-Louis Lagrange, Turin,
T T T 1736- Pars, 1813.
L.x; ; / D c x  .Ax b/  x:

Su vector gradiente con respecto a x es c A T  .


Igualado ste a 0 es la segunda condicin, ii.
 El vector  es el de los multiplicadores de Lagrange de las condiciones
Ax D b.
 El vector , el de los multiplicadores de Lagrange de las condiciones x  0.

 La condicin iii se conoce como la de complementariedad de holguras, u


holguras complementarias.
Exige que sean cero aquellos multiplicadores de las condiciones de no
negatividad que no estn activas (no sean cero) en el ptimo; o, lo
que es equivalente, que sea cero el denominado gap de dualidad: la
diferencia entre el valor de la funcin objetivo del primal y del dual.
 Todas estas condiciones fueron formuladas por Harold William Kuhn, EE.UU., 7/133

1925-2014, y Albert William Tucker, Canad, 1905-1995, en 1951, con el fin de


extender la teora de Lagrange a la caracterizacin de los puntos ptimos de
problemas de programacin lineal y no lineal sometidos a restricciones.

 Posteriormente se descubri que en 1939 William Karush, EE.UU., 1917-1997,


ya haba trabajado sobre estas condiciones, por lo que desde ese momento se les
pas a denominar
264
condicionesRichard
de Karush-Kuhn-Tucker,
W. Cottle
o KKT.

William Karush, circa 1987 Fritz John at NYU, circa 1987

 Las condiciones KKT generalizan la de la existencia de un mnimo de una


funcin sin restricciones; es decir, que rx f .x / D 0.
8/133

 Si A se ordena de la forma A D B N , y en concordancia c D T


cBT cNT ,
como en el ptimo la condicin i xi D 0, i D 1; : : : ; n, implica que Bi D 0,
i D 1; : : : ; m (pues las variables bsicas son positivas), la condicin ii de KKT
se puede reescribir as:
   T  
cB B 0
D  C ; N  0:
cN NT N

 Esto equivale a que cB D B T  y que

cN D  N C N T ;  N  0:

Es decir, a que
cN NTB T
cB  0
Este vector se denomina de costes reducidos: tienen que ser no negativos en el
punto ptimo.
9/133

 Vectores y condiciones clave en PL:

xB D B 1 b
 N D cN NTB T
cB  0
T
DB cB

1. A  N , vector de multiplicadores de Lagrange de las condiciones activas de


x  0, se le denomina de costes reducidos.
2. Que se cumpla que todos los costes reducidos sean positivos, o cero, es la
condicin de haber alcanzado el ptimo.
3. A , vector de multiplicadores de Lagrange de las condiciones Ax D b, se
le denomina de multiplicadores smplex.
Interpretacin econmica de los multiplicadores 10/133

smplex
h i h i
 xB 1
 Supongamos que x D 0 D B
0
b
es una solucin ptima no degenerada
de min. c T x
s. a Ax D b
x  0:

 Al suponer xB > 0, un cambio suficientemente pequeo 4b en b no debe


modificar la base ptima B; la solucin ptima sera
   1 
 xO B B .b C 4b/
xO D D :
0 0
y el cambio en la funcin objetivo 4z D cBT B 14b D T 4b, donde  D B T cB
es el ptimo del vector de multiplicadores smplex.
i indica cmo cambia la funcin objetivo al incrementar una unidad la cantidad disponible
del recurso bi de la condicin i-sima.
Su valor es un precio o valor marginal del recurso i-simo en el ptimo: el mximo
que se puede estar dispuesto a pagar por incrementar una unidad su disponibilidad.
ndice 11/133

 Introduccin
 Condiciones de punto ptimo
 Mejora de una solucin bsica factible
 El algoritmo Smplex
 Degeneracin y ciclado
 Solucin bsica factible inicial
 Anlisis de sensibilidad
 El mtodo Smplex para variables acotadas
 Implementaciones comerciales del mtodo Smplex
 El mtodo Smplex en forma de tableau
 Otras variantes y mejoras del Smplex
 Complejidad computacional del mtodo Smplex
12/133

Mejorar una solucin bsica factible

 Supongamos que:
 Partimos de una solucin bsica factible: punto extremo o vrtice del
problema.
 La matriz A 2 Rmn .m < n/ es de rango completo y la regin factible no
es el conjunto vaco.
 En la solucin bsica factible los m primeros coeficientes del vector x son
los que forman la base: todos positivos.
13/133

 Ordenando la matriz A D B N y, de la misma manera, c T D cBT cNT , se


tiene que
BxB C N x N D b:
Despejando xB ,
xB D B 1 b B 1N x N

 El valor de la funcin objetivo para este vector es


 
x
z D cBT ; cNT B D cBT B 1b C .cNT
xN cBT B 1N /x N :
cost
es re
duc
idos

 Para que se pueda mejorar la funcin objetivo desde el punto extremo que
define ese vector, debe haber costes reducidos negativos.
 En el punto que define ese xB confluyen n m aristas; est en la interseccin 14/133

en Rn de los m hiperplanos correspondientes a las condiciones Ax D b y los


n m correspondientes a x N D 0 (no degenerada).

 Para mejorar la funcin objetivo, de esas posibles n m aristas habr que


escoger una que consiga hacer decrecer la funcin objetivo desplazndose por
ella hasta otro vrtice.

 Esa arista la definir un coste reducido, de los de las variables no en la base,


cNj D cj cBT B 1aj ; j >m
que sea negativo, pues har decrecer la funcin objetivo aumentando el valor de
la variable no bsica correspondiente. Si por ejemplo cNj < 0, la funcin objetivo
decrece al ritmo que marca el incremento desde cero de la variable no bsica xj .

 Como a coste reducido ms negativo, decrecimiento ms rpido, se escoge para


la base aquella variable no bsica que tenga el coste reducido ms negativo.
15/133

 OJO! Si la solucin es bsica degenerada, pues el valor de alguna variable


bsica es cero, puede ocurrir que en alguna direccin cualquier desplazamiento
 haga que
x. / D x C  y
viole la factibilidad del problema.
Esto que ocurre pues en una solucin bsica degenerada confluyen ms de m
hiperplanos.
53
13

12
0

42

d 1 es una direccin de movimiento factible; d 2 no.


16/133

 Ejemplo Consideremos el programa lineal:


min. x1 C x2
s. a x1 C 2x2  4
x2  1
x1; x2  0:

 Aadamos las variables de holgura x3 y x4 para transformarlo en forma estndar:


min. x1 C x2
 
s. a x1 C 2x2 C x3 D 4 1210
I A D a1; a2; a3; a4 D 0 1 0 1 :
x2 C x4 D 1
x1 ; x2 ; x3 ; x4  0:
 Consideremos B D a1; a2: 17/133

    1      
x1 12 4 1 2 4 2
xB D D B 1b D D D I
x2 01 1 0 1 1 1
   
x 0
xN D 3 D :
x4 0

 La solucin bsica factible que estamos considerando se puede ver en la figura.


02
79

79
7
5
62
61
3
78
01
45 9
 Los costes reducidos de las variables no bsicas son 18/133
  
1 2 1
cN3 D c3 cBT B 1a3 D 0 1; 1 D 1 y
0 1 0
  
1 2 0
cN4 D c4 cBT B 1a4 D 0 1; 1 D 1:
0 1 1

 La funcin objetivo decrece siguiendo la direccin (d 2 en la figura) que


determina el coste reducido cN3: la de incrementar la variable no bsica x3.

 Las variables bsicas se deben mover de la forma


xB D B 1 b  B 1 a3 I
es decir, en la direccin opuesta a (o una cantidad negativa en)
    
1 2 1 1
B 1 a3 D D
0 1 0 0
que es la direccin d 2 de la figura anterior.
19/133

 Elegida la variable no bsica, xq , de coste reducido ms negativo, que entrar


en la base, cunto moverse en la direccin de la arista que ha definido ese
coste reducido?

 La respuesta es hasta que en ese movimiento una variable bsica llegue a su


lmite cero, y bloquee el posible desplazamiento en la direccin escogida: se
habr llegado a otro vrtice.

 Siguiendo las ideas que manejamos ya en optimizacin, la direccin de


movimiento del mtodo es la opuesta a

y D B 1 aq

y en ella se avanza una cantidad  , amplitud de paso.


 De las expresiones de x. / y xB . / se deduce que se mantendr la factibilidad
20/133

del problema, es decir,


x. /  0;
si y slo si
xB  y  0 y   0:

 Si las variables bsicas se modifican segn


xB D B 1 b  y;
o, desarrollando,
bO1
2 3 2 3 2 3
xB1 y1
6xB2 7 6bO2 7 6y 7
6 7 6 7 6 7
6 :: 7 D 6 :: 7  6 ::2 7 ;
4 : 5 4 : 5 4 : 5
xBm bOm ym
donde bO D B 1b, ese valor mximo de movimiento negativo, vendr dado por
nO o x
bi B
 D xN q D mKn yi W yi > 0; 1  i  m D ypp :
21/133

 El valor de la variable no bsica xq se ver incrementado despus de este paso


desde cero a xN q , pasando a ser bsica en detrimento de la variable xBp que
pasar a ser no bsica y por tanto cero.

 Para completar una iteracin del mtodo Smplex resta reemplazar el vector ap
por el aq en la base, es decir, hacer

BN D B C .aq ap /epT :

quedando
BN D aB1 ; aB2 ; : : : ; aBp 1 ; aq ; aBpC1 ; : : : ; aBm :
22/133

El Algoritmo Smplex

 El algoritmo Smplex para resolver


min. c T x
s. a Ax D b
x0
parte de una solucin bsica factible xB correspondiente a
B D aj1 ; aj2 ; : : : ; ajm .

 B D fj1; : : : ; jmg es el conjunto de ndices de las variables bsicas; xji designa


la variable bsica i -sima; N el de las variables no bsicas.
23/133

Paso 1 Asignacin de precios. Comprobacin de ptimo.


(a) Calcular los multiplicadores smplex resolviendo el sistema B T  D cB .
(b) Calcular los costes reducidos de las variables no bsicas, cNj D cj T aj , para todo j 2 N .
(c) Comprobar que se ha llegado al ptimo: si cNj  0 para todo j 2 N , PARAR: la solucin es ptima.
Paso 2 Determinar columna de pivotacin.
(a) Determinar la variable no bsica xq que debe entrar en la base (encontrar una direccin de descenso):
escoger q 2 N tal que cNq D mKnj 2N fcNj < 0g:
(b) Resolver
By D aq :
Si y  0, PARAR; hay un rayo factible de soluciones a lo largo del cual c T x ! 1. Si no, seguir.
Paso 3 Determinar fila de pivotacin. Anlisis de Ratios. Determinar la variable bsica xjp que sale de la
base: calcular
xjp
 
xji
D D mKn W yi > 0 :
yp 1i m yi

Paso 4 Pivotacin. Adaptar la solucin, la matriz B y las estructuras de datos. Hacer:


xq  D xjp =yp
xji xji yi ; 1i m
B B C .aq ajp /epT
B B [ fqgnfjp g
N N [ fjp gnfqg; e ir al paso 1.
Algoritmo Smplex revisado
24/133

function [sol fobj la c_r iters B N Binv] = ProgLineal_3(c,A,b,eps1,bfs)


% Resuelve min. cx sujeto a Ax=b, x >= 0 (problema estndar)
% B_i, vector de columnas de A en la base = B; bfs=base factible
% N_i, vector de columnas de A fuera de la base = N
disp(It. Sale B Entra B Cos. red. fobj Inf. dual);
[m n]=size(A); iters=0; c=c(:); B_i=bfs; N_i=setdiff(1:n,B_i);
[L U]=lu(A(:,B_i)); % LU de la base inicial
while 1==1 % Itera Smplex
xb =U\(L\b); % xb=B^-1*b vector solucin actual
la =L\(U\c(B_i)); % Multiplicadores smplex
c_r=zeros(n,1);
c_r(N_i)=c(N_i)-A(:,N_i)*la; % Costes reducidos: c_r=c_N-c_B*B^-1*N
[cj j]=min(c_r); % Cos. redu. ms negativo; entra j. Bland implcita
if cj>-eps1 % si todos cj >= 0, ptimo;
sol=zeros(n,1); sol(B_i)=xb; % dar solucin
fobj=c(B_i)*xb;
N = N_i; B=B_i;
if nargout==8, Binv=U\(L\eye(m)); end
return % Salir; FIN algoritmo
end
y=U\(L\A(:,j)); % y = B^-1 * a[j]
zz=find(y>eps1); % Sale de base: mn d(i)/y(i), y(i)>0;
if isempty(zz), error(Problema no acotado.); end % Direc. de no acotado
[yy ii]=min((xb(zz)./y(zz))); % Sale i
i=zz(ii); % Regla de Bland implcita: primera i
k=B_i(i); B_i(i)=j; N_i(j==N_i)=k; % Adaptacin datos
[L U]=lu(A(:,B_i)); iters=iters+1; Di=norm(c_r(c_r<0));
fprintf(%3d%6d%7d %20.6f %20.6f %20.6f\n,iters,k,j,cj,c(B_i)*xb,Di); % Info. itera
end
end
 Ejemplo 1 Resolvamos el problema de programacin lineal: 25/133

min. x1 3x2
s. a 2x1 C 3x2  6
x1 C x2  1
x1; x2  0:

 Introduciendo variables de holgura, la base queda:


min. x1 3x2
   
s. a 2x1 C 3x2 C x3 D6 10 23
I B D a3; a4 D 0 1 y N D a1 ; a2 D
11
:
x1 C x2 C x4 D 1
x1 ; x2 ; x3 ; x4  0:

 La solucin inicial, xB D B 1b, x N D 0, es pues


2 3 23
x1 0 hi
4x25 D 405 I y la funcin objativo zD cBT B 1b D 0; 0
6
D 0:
x3 6 1
x4 1
Iteracin 1. Paso 1 26/133

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1   
10 0 0
D D :
01 0 0

 Los costes reducidos de las variables no bsicas son


 
2
cN1 D c1 T a1 D 1 0; 0 D 1 y
1
 
3
cN2 D c2 T a2 D 3 0; 0 D 3:
1

 Todava no se ha llegado al ptimo pues los costes reducidos de las variables no


bsicas son negativos.
Iteracin 1. Paso 2 27/133

 Elijamos la variable no bsica x2 como aquella que ha de entrar en la base pues


tiene el coste reducido ms negativo.

 Resolvamos el sistema By D a2:


  1   
10 3 3
yD D :
01 1 1

Iteracin 1. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


   
xB1 xB2 6 1
 D mKn ; D mKn ; D 1:
y1 y2 3 1
28/133

 Es decir, saldr xB2 D x4. Esto se puede deducir tambin analizando la expresin
       
xB1 x 6 3
D 3 D B 1b  y D  ;
xB2 x4 1 1
comprobndose que x4 es la primera variable que llega a cero al incrementar x2.

Iteracin 1. Paso 4

 Readaptemos la solucin y las estructuras correspondientes:


x2  D1
x3 x3 y1 D 6 13D3
x4 x4 y2 D 1 1  1 D 0:
29/133

La solucin queda, por tanto,


2 3 2 3
x1 0
6x27 617
6 7 6 7
6 7D6 7
4x35 435
x4 0
con    
13 20
B D a3; a2 D y N D a1; a4 D :
01 11

 La nueva funcin objetivo es


  
1 3 6
z D cBT B 1b D 0; 3 D 3:
0 1 1
30/133

Iteracin 2. Paso 1

 Calculemos los nuevos multiplicadores smplex resolviendo B T  D cB :


  1      
10 0 10 0 0
D D D :
31 3 31 3 3

 Los costes reducidos de las variables no bsicas son


 
2
cN1 D c1 T a1 D 1 0; 3 D 4 y
1
 
0
cN4 D c4 T a4 D 0 0; 3 D 3:
1
Como todava existe un coste reducido negativo, no se ha llegado al ptimo.
Iteracin 2. Paso 2 31/133

 Elegimos la nica variable no bsica capaz de mejorar la funcin objetivo, x1,


como aquella que ha de entrar en la base.

 Resolvamos el sistema By D a1:


  1      
13 2 1 3 2 5
yD D D :
01 1 0 1 1 1

Iteracin 2. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


   
xB1 3 3
 D mKn D mKn D :
y1 5 5
Es decir, saldr xB1 D x3.
 Analizando el porqu de esto mediante la expresin 32/133
       
xB1 x3 3 5
D D B 1b  y D  ;
xB2 x2 1 1
se comprueba que x3 es la primera variable que llega a cero al incrementar x1.

Iteracin 2. Paso 4

 Readaptemos la solucin y las estructuras correspondientes:


x1  D 35
3 8
x2 x2 y2 D 1 5
 . 1/ D 5
3
x3 x3 y1 D 3 5
 5 D 0:
La solucin queda: 2 3 2 3
x1 3=5
6x27 68=57
6 7 6 7
6 7D6 7
4x35 4 0 5
x4 0
con     33/133
23 10
B D a1; a2 D y N D a3; a4 D :
11 01

 La nueva funcin objetivo es


  1 
23 6
z D cBT B 1b D 1; 3 D
11 1
" #
1 3  
5 5 6 27
D 1; 3 1 2 D :
5 5
1 5

Iteracin 3. Paso 1

 Calculemos los nuevos multiplicadores smplex resolviendo B T  D cB :


  1   " 1 1#    
2 1 1 5 5 1 4=5
D D 3 2 D :
3 1 3 5 5
3 3=5
34/133

 Los costes reducidos de las variables no bsicas son


 
1
cN3 D c3 T a3 D 0 4=5; 3=5 D 54 y
0
 
0
cN4 D c4 T a4 D 0 4=5; 3=5 D 53 :
1
Todos los costes reducidos son positivos por lo que se ha llegado al nico
ptimo del problema.

 La solucin ptima es 2 3 2 3
x1 3=5
6x27 68=57
6 7 6 7
6 7D6 7:
4x35 4 0 5
x4 0
La funcin objetivo
 
6 27
z D cBT B 1b D T b D 4=5; 3=5 D :
1 5
35/133

 Las soluciones bsicas factibles que se han ido obteniendo en el proceso se


indican en la figura.
569
8
02 9

578

3
568 01
7
4

 Con el programa ProgLineal_3 de Matlab que hemos presentado antes sera:


min. x1 3x2
>> cEje1=[-1 -3 0 0];
>> AEje1=[2 3 1 0;-1 1 0 1];
s. a 2x1 C 3x2 C x3 D6 >> bEje1=[6;1];
x1 C x2 C x4 D 1 >> bfsEje1=[3 4];
>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...
sqrt(eps),bfsEje1)
x1 ; x2 ; x3 ; x4  0:
36/133

>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...


sqrt(eps),bfsEje1)
It. Sale B Entra B Cos. red. fobj Inf. dual
1 4 2 -3.000000 -3.000000 3.162278
2 3 1 -4.000000 -6.000000 4.000000
sol =
0.600000000000000
1.600000000000000
0
0
fobj =
-5.400000000000000
 Se obtiene: pi =
-0.800000000000000
-0.600000000000000
cr =
0
0
0.800000000000000
0.600000000000000
iters =
2
B =
1 2
N =
3 4
 Con la rutina linprog de Matlab, la sesin sera la1 siguiente. 37/133

>> cEje1=[-1 -3 0 0];


>> AEje1=[2 3 1 0;-1 1 0 1];
>> bEje1=[6;1];
>> lb=[0 0 0 0];
>> options = optimset(LargeScale, off, Simplex, on, Display, Iter);
>> [x fval exitflag output]=linprog(cEje1,[],[],AEje1,bEje1,lb,[],[],options)
Phase 1: Compute initial basic feasible point.
Iter Infeasibility
0 1
1 -0

Phase 2: Minimize using simplex.


Iter Objective Dual Infeasibility
f*x A*y+z-w-f
0 -5.4 0
Optimization terminated.
x =
0.6000
1.6000
0
0
fval =
-5.4000
exitflag =
1
output =
iterations: 0
algorithm: medium scale: simplex
cgiterations: []
message: Optimization terminated.

1
Obsrvese que con Matlab no sera necesario suministrar el problema en forma estndar pues admite dos conjuntos de
condiciones: de igualdad y desigualdad. Si, en cambio, hay que explicitar que las cotas inferiores de las variables son cero.
 Ejemplo 2 Solucin no acotada. Hay que resolver: 38/133

min. x1 3x2
s. a x1 2x2  4
x1 C x2  3
x1; x2  0:

 Con las variables de holgura, la base inicial queda:


min. x1 3x2
   
s. a x1 2x2 C x3 D4 10 1 2
I B D a3; a4 D 0 1 y N D a1 ; a2 D
1 1
:
x1 C x2 C x4 D 3
x1 ; x2 ; x3 ; x4  0:

 La solucin inicial, xB D B 1b, x N D 0, es


2 3 23
x1 0 hi
4x25 D 405 ; de funcin objetivo zD cBT B 1b D 0; 0
4
D 0:
x3 4 3
x4 3
 La regin factible de este problema es la que se ilustra en la figura. 39/133

02


9
3

6
 01
45 78
79

Iteracin 1. Paso 1

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1   
10 0 0
D D :
01 0 0
 Los costes reducidos de las variables no bsicas son 40/133

 
1
cN1 D c1 T a1 D 1 0; 0 D 1 y
1
 
2
cN2 D c2 T a2 D 3 0; 0 D 3:
1
Al ser negativos los costes reducidos, esta solucin no es ptima.

Iteracin 1. Paso 2

 Elegimos la variable no bsica x2 como aquella que ha de entrar en la base pues


su coste reducido es el ms negativo.

 Resolvamos el sistema By D a2:


  1   
10 2 2
yD D :
01 1 1
41/133

Iteracin 1. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


   
xB2 3
 D mKn D mKn D 3:
y2 1
Es decir saldr xB2 D x4.
Como venimos haciendo, esto tambin de puede comprobar a partir de la
expresin        
xB1 x 4 2
D 3 D B 1b  y D  ;
xB2 x4 3 1
constatndose que, efectivamente, x4 es la primera variable que llega a cero al
incrementar x2.
42/133

Iteracin 1. Paso 4

 Readaptemos la solucin y las estructuras correspondientes:


x2  D3
x3 x3 y1 D 4 3  . 2/ D 10
x4 x4 y2 D 3 3  1 D 0:

 La solucin queda: 2 3 2 3
x1 0
6x27 6 37
6 7 6 7
6 7D6 7
4x35 4105
x4 0
con    
1 2 10
B D a3; a2 D y N D a1; a4 D :
0 1 11
43/133

Iteracin 2. Paso 1

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1      
10 0 10 0 0
D D D :
21 3 21 3 3
Los costes reducidos de las variables no bsicas son
 
1
cN1 D c1 T a1 D 1 0; 3 D 4 y
1
 
0
cN4 D c4 T a4 D 0 0; 3 D 3:
1
Como existe un coste reducido negativo, todava no se ha alcanzado el ptimo.
44/133

Iteracin 2. Paso 2

 Elegimos la nica variable no bsica posible, x1, como aquella que ha de entrar
en la base.

 Resolvamos el sistema By D a1:


  1      
1 2 1 12 1 1
yD D D :
0 1 1 01 1 1

 Como todos los yi ; i D 1; 2 son negativos, hay un rayo de soluciones factibles a


lo largo del cual c T x ! 1. La solucin es pues no acotada. u
 Ejemplo 3 Soluciones ptimas alternativas. Hay que resolver: 45/133

min. 2x1 4x2


s. a x1 C 2x2  4
x1 C x2  1
x1; x2  0:

 Introduzcamos las variables de holgura x3 y x4. El problema queda:


min. 2x1 4x2
s. a x1 C 2x2 C x3 D 4
x1 C x2 C x4 D 1
x1; x2; x3; x4  0:

 Escojamos como base de partida


   
10 21
B D a1; a4 D y N D a2; a3 D :
11 10
46/133

 La solucin inicial, xB D B 1b, x N D 0, es pues


    1      
x1 10 4 10 4 4
D D D
x4 10 1 11 1 5
y    
x2 0
D :
x3 0

 La funcin objetivo para esta solucin es


 
4
z D cBT B 1b D 2; 0 D 8:
5
47/133

Iteracin 1. Paso 1

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1      
1 1 2 11 2 2
D D D :
0 1 0 01 0 0

 Los costes reducidos de las variables no bsicas son


 
2
cN2 D c2 T a2 D 4 2; 0 D0 y
1
 
1
cN3 D c3 T a3 D 0 2; 0 D 2:
0

 Hemos llegado a un punto ptimo.


48/133

 El ptimo, sin embargo, no es nico.

02 34567849

4 8
!" 
#!"


$  

01


 Si incrementamos x2, manteniendo x3 D 0, las variables x1 y x4 se modifican


de la siguiente manera:
h i h ih i h ih i hi hi
x1 1 1 10 4 10 2 4 2
x4 D B b B a2 x 2 D 11 1 11 1 x 2 D 5 3 x2 :
49/133

 Para cualquier x2 < 35 , la solucin


2 3 2 3
x1 4 2x2
6x27 6 x2 7
6 7 6 7
6 7D6
4x35 4 0 5
7
x4 5 3x2

es ptima con funcin objetivo z D 8.


50/133

Degeneracin y ciclado

 Aunque hasta ahora se ha supuesto que la solucin bsica x de un programa


lineal no es degenerada, el que lo sea no causa grandes dificultades prcticas
en el proceso de obtencin del ptimo.

 Lo peor que puede ocurrir es que. en el Paso 3, la variable que salga de la base,
xjp , tenga un valor cero, lo que dar lugar a una iteracin con desplazamiento
 D 0: x no cambiar.

 Aunque x no cambie, si lo har la base.

 Como x, y por tanto c T x, no cambian, es tericamente posible que el


algoritmo entre en un ciclo infinito a travs de una sucesin de bases, y sus
correspondientes soluciones, volviendo a esta base.
 El problema 51/133

3 1 El ptimo es x D 3=4; 0; 0; 1; 0; 1; 0T y su funcin


min. x
4 4
C 20x5 x
2 6
C 6x7 objetivo ptima -5/4.

s. a x1 C 14 x4 8x5 x6 C 9x7 D 0
x2 C 21 x4 12x5 1
x
2 6
C 3x7 D 0
x3 C x6 D1
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:
expuesto por E.M.L. Beale en 1955, muestra cmo el mtodo Smplex puede
quedar atrapado en un ciclo infinito, si se escoge como variable a entrar en la
base aquella que posee el coste reducido ms negativo y para salir de ella una de
las que proporcionan el mnimo  .

 Si se comienza a resolver partiendo de la base B D a1; a2; a3, siguiendo el


mtodo Smplex ordinario se obtienen las bases a4; a2; a3, a4; a5; a3,
a6; a5; a3, a6; a7; a3, a1; a7; a3 y otra vez a1; a2; a3.

 Si se vuelve a utilizar la misma secuencia de variables a entrar y salir de la base,


el mtodo entra en un ciclo infinito.
52/133

La regla de Bland (1977) Robert G. Bland, EE.UU. 1948-.

 Mediante esta regla la ms habitualmente usada se elige como variable que


ha de entrar en la base, de entre las de coste reducido negativo, aquella con
menor ndice.

 Para salir de la base, si el ratio es igual en varias, tambin aquella con menor
ndice.
ndice 53/133

 Introduccin
 Condiciones de punto ptimo
 Mejora de una solucin bsica factible
 El algoritmo Smplex
 Degeneracin y ciclado
 Solucin bsica factible inicial
 Anlisis de sensibilidad
 El mtodo Smplex para variables acotadas
 Implementaciones comerciales del mtodo Smplex
 El mtodo Smplex en forma de tableau
 Otras variantes y mejoras del Smplex
 Complejidad computacional del mtodo Smplex
54/133

Solucin bsica factible inicial

 Cmo obtener una eficazmente?

 Si las condiciones del problema son de la forma Ax  b; x  0, donde b tiene


todos sus coeficientes no negativos, el problema es trivial: aadiendo las
variables de holgura a las condiciones se tendr que
Ax C x h D b
x; x h  0:

 Una solucin bsica factible ser x h D b, x D 0; la matriz bsica


correspondiente, B D I.
55/133

 Normalmente no es tan sencillo. Por ejemplo, si se diesen las mismas


condiciones de antes pero el vector b tuviese algn coeficiente negativo, la
solucin obtenida no sera vlida pues violara la condicin de no negatividad.

 Si las condiciones son de la forma Ax  b; x  0, aadiendo el vector de


variables de holgura, x h, se tendra que Ax x h D b; x  0; x h  0.

 Si el vector b no tuviese todos sus coeficientes negativos o cero, difcilmente


se podra determinar una base B a partir de la matriz A I, de tal forma
que xB D B 1b cumpliese la condicin de no negatividad.
56/133

 Ejemplo 1 Consideremos las condiciones siguientes:


x1 C 2x2  4
x1 C x2  1
x1; x2  0:

 Aadiendo las variables de holgura x3 y x4 las condiciones se transforman en


x1 C 2x2 C x3 D 4
x1 C x2 C x4 D 1
x1; x2; x3; x4  0:
Una solucin inicial bsica factible sera
       
10 x3 1 0 4
D B 1b D
 
B D a3 ; a4 D W xB D 41 D y
01 x4 01 1
   
x 0
xN D 1 D :
x2 0
57/133

 Ejemplo 2 Sean ahora las siguientes condiciones:


x1 C x2 C x3  6
2x1 C 3x2 C 3x3  3
x2; x3  0:

 Cuando como aqui x1 una variable no est restringida a tomar valores no


negativos, podemos sustituirla por xi0 xi00, xi0  0, xi00  0. Si lo hacemos e
introducimos las variables de holgura x4 y x5, las condiciones quedan:
x10 x100 C x2 C x3 C x4 D6
2x10 C 2x100 C 3x2 C 3x3 x5 D 3
x10 ; x100; x2; x3; x4; x5  0:
No es inmediato determinar una base B que nos permita obtener una solucin
inicial bsica factible.
58/133

 Ejemplo 3 Consideremos ahora las siguientes condiciones:


x1 C x2 2x3  3
2x1 C x2 C 3x3  7
x1; x2; x3  0:

 Si para hacer todos los coeficientes del vector b no negativos multiplicamos la


primera condicin por 1 e introducimos las variables de holgura x4 y x5, las
condiciones resultarn:
x1 x2 C 2x3 x4 D3
2x1 C x2 C 3x3 C x5 D 7
x1; x2; x3; x4; x5  0:
Tampoco de aqu se puede determinar de una manera sencilla una base inicial
del problema.
59/133

Variables artificiales

 La forma ms inmediata de determinar una solucin bsica factible de partida


consiste en introducir temporalmente, adems de las variables de holgura, un
nuevo conjunto similar de variables artificiales.
Si el problema es
min. c T x
s. a Ax D b
x  0;
donde, sin prdida de generalidad, se supone que b  0, se le aade un vector
de variables artificiales, x a , resultando

Ax C x a D b;

con x  0 y x a  0.
 Si se quiere conseguir una solucin factible del problema original habr que 60/133

forzar a que los coeficientes del vector x a sean cero. Es decir, resolver tambin
con el mtodo Smplex el problema
m
X
min. x ai
iD1
s. a Ax C x a D b
x; x a  0:

 Si el problema original admite una solucin factible, en la solucin del


transformado se tendr que x a D 0.
 Si tal solucin factible no existe, el problema transformado acabar con
algn coeficiente de x a positivo.

 El mtodo Smplex completo, por consiguiente, consta de las dos fases que se
indican en la tabla.
61/133

Fase I Partiendo de la solucin inicial x D 0, x a D b, resolver


m
X
min. xai
i D1
s. a Ax C x a D b
x; x a  0:

Si x a 0, parar: el problema no tiene solucin bsica factible.


Si x a D 0, ir a la fase II tomando como B inicial la de la ltima iteracin de
esta fase.
Fase II Partiendo de xB D B 1 b y x N D 0, resolver

min. cBT xB C cNT x N


s. a BxB C N x N D b
xB ; x N  0:
Algoritmo Smplex revisado en dos Fases
62/133

 Al final de la Fase I, si la solucin tiene alguna variable artificial en la base y


xai D 0 (degenerada), dicha variable se puede intercambiar por una no bsica
de las originales xj , o suprimirse sin ms que eliminar la condicin redundante
correspondiente. Concretamente:

 Si la variable bsica xak D 0 y se cumple que e Tk B 1aj 0, la variable xak


se puede reemplazar por la xj .
 Si para todo aj 2 N , e Tk B 1aj D 0, el sistema Ax D b tiene una
condicin redundante y se puede eliminar la fila k-sima de la matriz A
original (as como la fila y columna k-simas de B).

 Circunstancias de este tipo se evitan con un mecanismo de preproceso para


aligerar el problema de redundancias, incoherencias, etc.
63/133

 Ejemplo Hay que resolver el siguiente problema:


min. x1 2x2
s. a x1 C x2  2
x1 C x2  1
x2  3
x1; x2  0:

 Para empezar, introduzcamos como siempre las variables de holgura:


min. x1 2x2
s. a x1 C x2 x3 D2
x1 C x2 x4 D1
x2 C x5 D 3
x1; x2; x3; x4; x5  0:
64/133

 Como la base de partida no es de fcil obtencin, introducimos las variables


artificiales y planteamos el siguiente problema dentro de la fase I:
min. x6 C x7
s. a x1 C x2 x3 C x6 D2
x1 C x2 x4 C x7 D 1
x2 C x5 D3
x1; x2; x3; x4; x5; x6; x7  0:
Obsrvese que en la tercera condicin no es necesario introducir variable
artificial alguna.

 Del problema as planteado se puede obtener inmediatamente la base de partida;


sta es
0 1 0   1 1 1 0
B D a5; a6; a7 D 0 0 1 y N D a1; a2; a3; a4 D 1 1 0 1 :
100 01 0 0
65/133

 La solucin inicial, xB D B 1b, x N D 0, es:


x  0 1 0 1 2 0 0 1 2 3
5
x6 D 0 0 1 1 D 100 1 D 2 :
x7 100 3 010 3 1

Por tanto, 2 3 2 3
x1 0
6x27 607
6x37 607
6 7 6 7
6x47 D 607 :
6 7 6 7
6x57 637
4x 5 425
6
x7 1
Fase I. Iteracin 1. Paso 1 66/133

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


2 3 12 3 2 32 3 2 3
001 0 010 0 1
 D 41 0 05 4 15 D 40 0 15 4 15 D 41 5 :
010 1 100 1 0

 Los costes reducidos de las variables no bsicas son


2 3
1
cN1 D c1 T a1 D 0 1; 1; 0 4 15 D 0;
0
2 3
1
cN2 D c2 T a2 D 0 1; 1; 0 415 D 2;
1
2 3
1
cN3 D c3 T a3 D 0 1; 1; 0 4 05 D 1 y
0
2 3
0
cN4 D c4 T a4 D 0 1; 1; 0 4 15 D 1:
0
67/133

 No se ha llegado todava al ptimo pues existe un coste reducido negativo.

Fase I. Iteracin 1. Paso 2

 Elegimos la nica variable no bsica posible, x2, como aquella que ha de entrar
en la base.

 Resolvemos el sistema By D a2:


2 3 12 3 2 32 3 2 3
010 1 001 1 1
y D 40 0 15 415 D 41 0 05 415 D 415 :
100 1 010 1 1
68/133

Fase I. Iteracin 1. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


   
xB1 xB2 xB3 3 2 1
 D mKn ; ; D mKn ; ; D 1I
y1 y2 y3 1 1 1
es decir, saldr xB3 D x7.
O, como solemos utilizar, de evaluar la expresin xB D B 1b  y.

 Es decir, 2 3 2 3 2 3 2 3
xB1 x5 3 1
4xB2 5 D 4x65 D 425  415 ;
xB3 x7 1 1
comprobndose que x7 es la primera variable que llega a cero al incrementar x2.
69/133

Fase I. Iteracin 1. Paso 4

 Readaptemos la solucin y las estructuras de datos:


x2  D1
x5 x5 y1 D 3 11D2
x6 x6 y2 D 2 11D1
x7 x7 y3 D 1 1  1 D 0:

 La solucin queda por tanto,


2 3 2 3
x1 0
6x27 617
6x37 607
6 7 6 7
6x47 D 607
6 7 6 7
6x57 627
4x 5 415
6
x7 0
70/133

siendo 2 3
011
B D a5; a6; a2 D 40 0 15
101
y 2 3
10 1 0
N D a1; a7; a3; a4 D 4 1 1 0 15 :
00 0 0

Fase I. Iteracin 2. Paso 1

 Calculemos de nuevo los multiplicadores smplex resolviendo B T  D cB :


2 3 12 3 2 32 3 2 3
001 0 0 10 0 1
 D 41 0 05 4 15 D 4 1 1 1 5 4 15 D 4 1 5 :
111 0 1 00 0 0
 Los costes reducidos de las variables no bsicas son 71/133

2 3
1
cN1 D c1 T a1 D 0 1; 1; 0 4 15 D 2;
0
2 3
0
cN7 D c7 T a7 D 1 1; 1; 0 15 D 2;
4
0
2 3
1
cN3 D c3 T a3 D 0 1; 1; 0 4 05 D 1 y
0
2 3
0
cN4 D c4 T a4 D 0 1; 1; 0 4 15 D 1:
0

No se ha llegado todava al ptimo; hay dos costes reducidos negativos.

Fase I. Iteracin 2. Paso 2

 Elegimos la variable no bsica x1 para entrar en la base pues su coste reducido


es el ms negativo.
 Resolvemos el sistema By D a1: 72/133

2 3 12 3 2 32 3 2 3
011 1 0 11 1 1
y D 40 0 15 4 15 D 41 1 05 4 15 D 4 25 :
101 0 0 10 0 1

Fase I. Iteracin 2. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


nx x o
B B
 D mKn y11 ; y22 D mKn 21 ; 21 D 12 I

es decir, saldr xB2 D x6. Esto se deduce tambin de


2 3 2 3 2 3 2 3
xB1 x5 2 1
4xB2 5 D 4x65 D B 1b  y D 415  4 25 ;
xB3 x2 1 1
constatndose que x6 es la primera variable que llega a cero al incrementar x1.
Fase I. Iteracin 2. Paso 4 73/133

 Readaptemos la solucin y las estructuras de datos correspondientes:


x1 D  D 21
1
x5 D x5 y1 D 2 2
 1 D 23
1
x6 D x6 y2 D 1 2
2D0
1
x2 D x2 y3 D 1 2
 . 1/ D 23 :

 La solucin queda por tanto


2 3 2 3
x1 1=2
6x27 63=27
6x37 607
6x47
6x 7 D 607
63=27
4 55 4 5
x6 0
x7 0

siendo 2 3 2 3
0 1 1 10 1 0
B D a5 ; a1 ; a2 D 0
4 1 1 y N D a6 ; a7 ; a3 ; a4 D 0 1
5 4 0 15 :
1 0 1 00 0 0
74/133

Fase I. Iteracin 3. Paso 1

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


12 3 2 1 3
2 3 1 1 2 3 2 3
0 01 0 2 2 2 0 0
1 1 17 4 5
D 1
4 1 05 4 05 D 6
4 2 2 25
0 D 05:
4
1 11 0 1 00 0 0

 Los costes reducidos de las variables no bsicas son


2 3
1
cN6 D c6 T a6 D 1 0; 0; 0 405 D 1;
0
2 3
0
cN7 D c7 T a7 D 1 0; 0; 0 15 D 1;
4
0
2 3
1
cN3 D c3 T a3 D 0 0; 0; 0 4 05 D 0; y
0
2 3
0
cN4 D c4 T a4 D 0 0; 0; 0 4 15 D 0:
0
 Todos los costes reducidos son no negativos: ptimo de la fase I. 75/133

 La base de partida de la fase II es


   
0 11 1 0
B D a5; a1; a2 D 0 11 y N D a3; a4 D 0 1 :
1 01 0 0

Fase II. Iteracin 1. Paso 1

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


12 3 2 1 1 1 2
3
1=2
2 3 3 2 3
0 0 1 0 2 2 2 0
D 1
4 1 05 4 21
4 15 D 6 1
2
17 4
25
15 D 4 3=25 :
1 1 1 2 1 0 0 2 0

Los costes reducidos de las variables no bsicas son


2 3
1
cN3 D c3 T a3 D 0 1=2; 3=2; 0 4 05 D 1
2; y
2 03
0
cN4 D c4 T a4 D 0 1=2; 3=2; 0 4 15 D 3
2:
0
Como cN3 y cN4 son negativos, no se ha llegado an al ptimo. 76/133

Fase II. Iteracin 1. Paso 2

 Elegimos la variable no bsica x4 como la que entra en la base.

 Resolvamos el sistema By D a4:


12 1 1
1
2 3 3 2 32 3 2 3
0 1 1 0 2 2 0 1=2
1 1
yD 0
4 1 15 4 15 D 4
2 2
05 4 15 D 4 1=25 :
1 0 1 0 1 1
0 0 1=2
2 2

Fase II. Iteracin 1. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


( )
  3 1
xB1 xB2
 D mKn ; D mKn 21 ; 21 D 1:
y1 y2 2 2
77/133

Es decir, saldr xB2 D x1. Si se analiza la expresin


2 3 2 3 2 3 2 3
xB1 x5 3=2 1=2
4xB2 5 D B 1 b y D 4x1 5 D 41=25  4 1=25 ;
xB3 x2 3=2 1=2

tambin se comprueba que, efectivamente, la primera variable que llega a cero


al incrementar x4 es x1, con  D 1.

Fase II. Iteracin 1. Paso 4

 Readaptemos la solucin y las estructuras de datos:


x4  D1
3
x5 x5 y1 D 2
1  12 D 1
1
x1 x1 y2 D 2
1  12 D 0
3
x2 x2 y3 D 2
C 1  12 D 2:
78/133

 La nueva solucin es, por tanto,


2 3 2 3
x1 0
6x27 627
6x37 D 607
6 7 6 7
4x45 415
x5 1

con 0 01 1 1
  
B D a5; a4; a2 D 0 11 y N D a3; a1 D 0 1 :
1 01 0 0

Fase II. Iteracin 2. Paso 1

 Calculemos los multiplicadores smplex resolviendo B T  D cB :


2 3 12 3 2 32 3 2 3
0 01 0 1 11 0 2
 D 40 1 05 4 05 D 4 0 1 05 4 05 D 4 0 5 :
1 11 2 1 00 2 0
Los costes reducidos de las variables no bsicas son 79/133

2 3
1
cN3 D c3 T a3 D 0 2; 0; 0 4 05 D 2; y
2 03
1
cN1 D c1 T a1 D 1 2; 0; 0 4 15 D 3:
0
Todava no se ha llegado al ptimo.

Fase II. Iteracin 2. Paso 2

 Elegimos la variable no bsica x3 como la que entra en la base.

 Resolvemos el sistema By D a3:


2 3 12 3 2 32 3 2 3
0 0 1 1 1 0 1 1 1
yD 0
4 1 15 4 05 D 4 1 1 0 5 4 0 D
5 4 15 :
1 0 1 0 1 0 0 0 1
80/133

Fase II. Iteracin 2. Paso 3

 La variable bsica a salir de la base se obtendr de calcular


   
xB1 1
 D mKn D mKn D 1I
y1 1
es decir, saldr xB1 D x5. Vindolo a partir de la expresin
2 3 2 3 2 3 2 3
xB1 x5 1 1
4xB2 5 D 4x45 D b 1b  y D 415  4 15 ;
xB3 x2 2 1
se comprueba tambin que la primera variable que llega a cero al incrementar x3
es x5.
81/133

Fase II. Iteracin 2. Paso 4

 Readaptemos la solucin y las estructuras de datos:


x3  D1
x5 x5 y1 D 1 1  1 D 0
x4 x4 y2 D 1 C 1  1 D 2
x2 x2 y3 D 2 C 1  1 D 3:
La nueva solucin es 2 3 2 3
x1 0
6x27 637
6x37 D 617 :
6 7 6 7
4x45 425
x5 0
 Las nuevas matrices: 82/133

3 2 2 3
1 01 0 1
B D a3; a4; a2 D 4 0 1 15 I N D a5; a1 D 40 15 :
0 01 1 0

Fase II. Iteracin 3. Paso 1

 Calculemos los multiplicadores; resolvamos B T  D cB :


2 3 12 3 2 32 3 2 3
1 0 0 0 1 0 0 0 0
D 4 0 1 05 4 05 D 4 0 1 0 5 4 0 D
5 4 05:
1 1 1 2 1 1 1 2 2

Los costes reducidos de las variables no bsicas son


2 3
0
cN5 D c5 T a5 D 0 0; 0; 2 05 D 2;
4 y
1
2 3
1
cN1 D c1 T a1 D 1 0; 0; 2 4 15 D 1:
0
83/133

 Todos los costes reducidos de las variables no bsicas son positivos por lo que se
ha alcanzado el nico ptimo del problema.

 La solucin final es 2 3 2 3
x1 0
6x27 637
6x37 D 617 :
6 7 6 7
4x45 425
x5 0

 El valor ptimo de la funcin objetivo es cBT B 1b D 6.


84/133

 El proceso iterativo que se ha seguido se representa en la figura

5 28 568
x

7 7
3
5 8 59
68
9 7
6
x1
4
85/133

Mtodo de penalizacin o de la M grande

 Consiste en combinar en un proceso nico las fases I y II del mtodo Smplex y


resolver n m
X X
min. ci xi C M xaj
i D1 j D1

s. a Ax C x a D b
x; x a  0:
La constante M se elige suficientemente grande de tal forma que est muy
penalizado que en el ptimo x a 0.

 Eventualmente, si existe solucin factible del problema original, las variables


artificiales tendern a cero en el proceso de obtencin del ptimo de este
problema.
86/133

 Esta alternativa tiene dos pegas:


 La necesidad de escoger un determinado valor fijo de M que asegure que las
variables artificiales no van a estar en la base de la solucin ptima.
 Un valor excesivamente grande de M, con respecto a los coeficientes del
vector c y de la matriz A, puede hacer que los errores de redondeo de los
clculos y la inestabilidad numrica del proceso lleguen a ser importantes.
 Que el nmero de variables del problema se incrementa notablemente.
 Resolvamos con esta tcnica un ejemplo anterior: 87/133

min. x1 2x2 1000x6 C 1000x7


s. a x1 C x2 x3 C x6 D2
x1 C x2 x4 C x7 D 1
x2 C x5 D3
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:

 Con el programa ProgLineal_3 de Matlab que usamos sera:


sol =
0
3
1
2
>> cM=[1 -2 0 0 0 1000 1000]; 0
>> AM=[1 1 -1 0 0 1 0;-1 1 0 -1 0 0 1;0 1 0 0 1 0 0]; 0
>> bM=[2;1;3]; 0
fobj =
>> bfsM=[5 6 7]; -6
>> [sol fobj pi cr iters B N]=ProgLineal_3(cM,AM,bM,sqrt(eps),bfsM) pi =
It. Sale B Entra B Cos. red. fobj 0
0
1 7 2 -2002.000000 1998.000000 -2
2 6 1 -2001.000000 -1.000000 cr =
3 1 4 -1.500000 -3.000000 1000 1000 2 1
iters =
4 5 3 -2.000000 -4.000000 4
B =
3 4 2
N =
6 7 5 1
Anlisis de sensibilidad
88/133

 La solucin ptima que obtiene el mtodo Smplex de un problema de PL es


como una fotografa fija de una situacin real que habitualmente evoluciona en
el tiempo, incluso a corto o muy corto plazo.

 Con un pequeo esfuerzo, una vez obtenida la solucin con el Smplex, se puede
conocer hasta qu punto ese ptimo seguir sindolo y qu pueden representar,
en costes o beneficios, determinadas variaciones de los parmetros del problema.

 Esto es frecuente estudiarlo cuando los costes de produccin de un artculo


deben variar en el tiempo al fluctuar el precio de una materia prima o, en
general, cuando los datos del problema son estimaciones ms o menos
imprecisas de una realidad en la que oscilan entre determinados mrgenes.
Estudiemos cmo afecta a la solucin de un problema de PL el que varen los
coeficientes de la funcin objetivo c o el vector b.
89/133

Cambios en el vector de costes

 Consideremos la familia de programas, funcin de un vector de parmetros ,


definida por
min. c C T x
s. a Ax D b
x  0:

 La base B de la solucin ptima del problema original (sin los parmetros)


seguir sindolo mientras los costes reducidos de las variables no bsicas sigan
siendo no negativos; es decir, mientras que

cN C  N T cB C  B T B 1N  0T :
90/133

 Consideraremos los dos casos ms generales: 1. Que la variable cuyo coeficiente


de coste vara no est en la base; 2. Que est en la base.
1. La variable cuyo coeficiente de coste vara no est en la base. Para que los
costes reducidos sigan siendo ptimos, es decir,

cN C  N T cBT B 1N  0T ;

se tiene que cumplir que

cNT cBT B 1N C  TN D cNNT C  TN  0T :

Esto obliga a que el coeficiente del vector coste slo pueda variar hacia
abajo (decrecer), en una cantidad i igual al coste reducido de la variable i
que vara. Es decir
i  cNi :
Hacia arriba podra variar hasta el infinito.
91/133

2. La variable cuyo coeficiente de coste vara est en la base. La condicin de


optimalidad para los costes reducidos es ahora

cNT cB C  B T B 1N D cNNT  BT B 1N  0T :

El intervalo de valores  i ;  i de la posible variacin en el coste de una


variable en la base ser
 
 i D mKax mKax f cNk =dk ; dk > 0g ; 1   
1kn m
 
mKn mKn f cNk =dk ; dk < 0g ; 1 D  i
1kn m

 T
1
expresin en la que d D B.i;W/ N ,es el vector fila i -simo del producto
de la inversa de B por N .
92/133

Cambios en el vector b

 Consideremos el problema:
min. c T x
s. a Ax D b C
x  0:
Al cambiar b, la solucin ptima variara as
h iT
T T T N B 1 T 0T

x D xB x N D bC ;

donde bN D B 1b y B es la base ptima.

 Esa base seguir siendo ptima en tanto y cuando sus coeficientes sigan siendo
no negativos.
93/133

 Para cada modificacin i del coeficiente i del vector b, si


2 3
0
6 ::: 7
6 7
16 7
d D B 617 i D B 1e i ; vector
de la
columna i -simo
inversa de la base
6 :: 7
4:5
0

el intervalo i ; i en el cual la solucin sigue siendo ptima es


 
bNk =dk ; dk > 0 ; 1  

i D mKax mKax
1km
 
bNk =dk ; dk < 0 ; 1 D i

mKn mKn
1km
94/133

 Ejemplo Supongamos que hemos resuelto el problema


min. 40x C 53y
s. a 60x C 80y  360
160x C 120y  680
x; y  0:

 La solucin completa es
2 3
2    
637 60 80 1 1 120 80
xB D 6
405 ; B D 160 120 ; B D 5600
7 ;
160 60
0
     
1 0 1 368 1 368
N D ;  D 560 y cN D 560 :
0 1 2 2

La funcin objetivo es 239.


1. Para que rango de costes de x la solucin sigue siendo ptima. 95/133

 Como x est en la base, cualquier cambio cx cx C  afecta al vector


N
 y al vector de costes reducidos de las variables no bsicas, c.
 El vector d de las expresiones anteriores es
 
1 1
  1 0
d D B.1;W/ N D 5600 120 80
0 1
1
 
D 5600 120 80 :
 Los costes reducidos variarn de la siguiente manera.
1   1  
cN 368 2 C  120 80 :
560 5600

 Para que la solucin ptima anterior lo siga siendo, debe cumplirse que

3680 120   0
20 C 80   0:

 Esto se cumple en  ;  D 1=4; 92=3. El coeficiente de x puede


moverse pues en el rango 39;75 70;67 para que la solucin siga siendo
ptima.
2. Cunto puede variar el coeficiente 360 del trmino independiente sin 96/133

que cambie la base ptima, es decir b1 b1 C .


 El vector d es en este caso
   
1 1 120
d DB 1 D ;
0 5600 160
   
2 1 120
por lo que xB C 5600 .
3 160
 La base ptima original seguir siendo ptima mientras xB sea positiva;
es decir, mientras ( 120
2 5600
0
160
3C 5600
 0:

 Esto se cumple en el intervalo ; D 105 280=3, por lo que el


coeficiente 360 puede variar entre 360 105 y 360 C 280=3 sin que cambie
la solucin ptima del problema original.
 El valor del multiplicador smplex 1 indica cmo vara la funcin objetivo
cuando coeficiente 360 se mueve en ese rango de valores:
368 33
z zC D 239 C :
560 35
El mtodo Smplex para variables acotadas 97/133

 Nos ocupamos ahora del problema


min. c T x
s. a Ax D b
l  x  u:
Las variables estn as acotadas, encajadas o box constrained. Si la xj tiene
lj D 1 y uj D 1, se dice libre.

 Se podran introducir variables de holgura y aplicar el mtodo habitual,


min. cT x
s. a Ax D b
Actuando as, el nmero de variables se triplica
x C x1 D u y el nmero de condiciones pasa a ser m C 2n.
x x2 D l
x; x 1 ; x 2  0:
98/133

 Considrese a continuacin el sistema de inecuaciones


Ax D b
l  x  u;
donde la matriz A mn es, sin prdida de generalidad, de rango m.

Definicin Una solucin bsica factible de ese sistema es aquella en la que n m


variables no bsicas tienen el valor de uno de sus lmites, l u, y las restantes m variables
bsicas corresponden a vectores columnas linealmente independientes de A.

 Descompongamos la matriz A en B Nl Nu, con rango.B/ D m, y el vector x


en xBT x TNl x TNu :
99/133

 Un vector x se dice solucin bsica factible del sistema de inecuaciones


Ax D b
l  x  u;
si xB es solucin del sistema
BxB D b;
y
x Nl D l Nl
x N u D uN u :

 Si adems l B < xB < uB , entonces x es una solucin bsica factible no


degenerada; si algn coeficiente de xBj es igual a lj o uj , la solucin se dice
bsica factible degenerada.
 Expresemos las condiciones de la forma BxB C Nl x Nl C Nux Nu D b. El vector 100/133

xB es entonces:
xB D B 1 b B 1 N l x Nl B 1 N u x Nu :
La funcin objetivo:
z D c T x D cBT xB C cNT l x Nl C cNT u x Nu
D cBT B 1b B 1Nl x Nl B 1Nux Nu C cNT l x Nl C cNT u x Nu



D cBT B 1b C cNT l cBT B 1Nl x Nl C cNT u cBT B 1Nu x Nu :


cost.
cost. reducid
reducid os
o s

 Supongamos que partimos de una solucin bsica factible.


 En ese punto se examinan los costes reducidos de las variables2 no bsicas.
 Si puede ser mejorada en un problema de minimizacin, alguna variable
no bsica que est en su lmite inferior tendr un coste reducido negativo, u
otra en su lmite superior un coste reducido positivo.
2
En uno de sus lmites.
101/133

 La funcin objetivo se puede mejorar (decrementar) si


T 1

cj cB B aj < 0 para alguna xj D lj o
T 1

cj cB B aj > 0 para alguna xj D uj :

 Si se elige una variable no bsica, xq por ejemplo, como aquella que ha de


mejorar la funcin objetivo, y su valor se modifica desde la cota en el que est
en la direccin hacia la otra cota, la funcin objetivo mejorar (decrecer)
mientras se puedan modificar las variables bsicas de tal manera que persista la
factibilidad del problema (se satisfagan las condiciones); es decir, hasta que:
a) una variable bsica llegue a uno de sus lmites, en cuyo caso se har no
bsica, pasando a ocupar su sitio en la base la no bsica que se modifica; o
b) la variable no bsica que se modifica llegue al lmite opuesto del que parte
antes de que ocurra lo anterior. La base entonces no se modifica.
Si ocurren a) y b) a la vez: solucin bsica factible degenerada.
 Si Nl es el conjunto de los ndices de las variables no bsicas en su lmite inferior 102/133

y Nu el de las no bsicas en su lmite superior, y se modifica xq , se tendr que


xB D B 1 b B 1 Nl x Nl B 1 Nu x Nu  B 1 aq
D bO  y;
con bO D B 1
b B 1 Nl x Nl B 1 Nu x Nu y y D B 1 aq . Opciones: que q 2 Nu; o q 2 Nl .

 Si q 2 Nl , el incremento posible,  , de xq desde su lmite inferior lq , ha de ser


positivo para seguir manteniendo la factibilidad; el mximo ser
8   
bO i lBi
 D mK n W y > 0I 1 W y  0

1

1i m yi i i



<   
 D mKn bO i uBi

2
D mK n1i m yi W y i < 0I 1 W y i  0





uq lq :
:

 Si q 2 Nu, el incremento desde uq ha de ser negativo. El mximo:


  
bO i lBi
8



1 D mKn1i m yi W yi < 0I 1 W yi  0

<   
 D mKn bO i uBi
2 D mKn1i m
yi W yi > 0I 1 W yi  0



lq uq :
:
103/133

 El ltimo paso es modificar las estructuras de datos correspondientes, a fin de


reflejar los cambios habidos en la base.

 Todos los cdigos comerciales del mtodo Smplex lo hacen para variables
acotadas:

 En un ordenador, una variable en forma estndar, xj  0, en realidad se


trata como si 0  xj  1020, por ejemplo, ya que en una mquina que
trabaje con precisin finita la cantidad 1020 es suficientemente grande.

 En la tabla que sigue se expone el algoritmo Smplex revisado para variables


acotadas.
Paso 1 Asignacin de precios. Comprobacin de ptimo. 104/133
(a) Calcular los multiplicadores smplex resolviendo el sistema B T  D cB .
(b) Calcular los costes reducidos de las variables no bsicas, cNj D cj T aj , para todo j B.
(c) Comprobar que se ha llegado al ptimo: si cNj  0 para todo j 2 Nl y cNj  0 para todo j 2 Nu , PARAR; la
solucin es ptima.
Paso 2 Obtener columna de pivotacin.
(a) Determinar la variable no bsica xq que debe entrar en la base (encontrar una direccin de descenso): escoger
q B tal que  
cNq D mKax j mKn fcNj < 0gj; mKax fcNj > 0g :
j 2Nl j 2Nu

(b) Resolver By D aq . Si q 2 Nl , ir al paso 3; si q 2 Nu , al 3.


Paso 3 Obtener fila de pivotacin. Determinar qu variable bsica xjp sale de la base: calcular  W
     
xji lji xji uji
 D mKn mKn W yi > 0 ; mKn W yi < 0 ; uq lq :
1i m yi 1i m yi

Si   T ol:: PARAR; el problema es no acotado. Si no, ir al paso 4.


Paso 3 Obtener fila de pivotacin. Determinar qu variable bsica xjp sale de la base: calcular  W
     
xji uji xji lji
 D mKn mKn W yi > 0 ; mKn W yi < 0 ; lq uq :
1i m yi 1im yi

Si   T ol:: PARAR; el problema es no acotado.


Paso 4 Pivotacin. Adaptar la solucin y la matriz B e ir al paso 1:
xq lq C  uq C  ;
xji xji yi ; 1  i  m ;
B B C .aq ajp /epT ; (slo si  6D uq lq )
B B [ fqgnfjp g ; (slo si  6D uq lq )
Nl Nl [ fjp gnfqg ; (slo si  6D uq lq y q 2 Nl )
Nu Nu [ fjp gnfqg ; (slo si  6D uq lq y q 2 Nu )
jp q; (slo si  6D uq lq ).
function [fobj niters x] = Rsimplex_1(file,A,b,c,lb,ub);
% Resuelve min cx st Ax=b, lb<=x<=ub con Simplex revisado en dos FASES
function [x niters B N L U] = rsmbdd(A,b,c,lb,ub,B,N,fase,niters) 105/133
if nargin>2 % Rutina de Smplex revisado para min cx s.a Ax=b, lb<=x<=ub.
if nargin<4, error(Si no se lee de fichero, se requieren al menos,... % B vector 1xm con los ndices de las variables (columnas) en la base.
cuatro argumentos en entrada); end % N vector 1x(l-m) con los ndices de las variables no bsicas,
if nargin<6, ub = Inf*ones(size(c)); end % es decir, en sus lmites (+/-1).
if nargin<5, lb = zeros(size(c)); end
A = sparse(A); [m l] = size(A); f=fopen(Salida_Rsimplex,a);
else % Lectura de los datos desde fichero file en MPS zer_tol = 1.0e-5; piv_tol = 1.0e-8;
eval([!copy file d:\Matlab2010b\work\tmp\in.mps]);
LIPSO = d:\Matlab2010b\work; exit=mps2mat(LIPSO); fprintf(\n); [L U] = lu(A(:,B));
load d:\Matlab2010b\work\tmp\default; if any(abs(diag(U))<piv_tol), error(La base inicial no es invertible); end
lb=lbounds; ub=ubounds; x = lb; upper = N(N>0); x(upper) = ub(upper);
end x(B) = U\(L\(b-A(:,abs(N))*x(abs(N))));
[m n] = size(A); zer_tol = 1.0e-5; piv_tol = 1.0e-8; niters=0; t=cputime;
while 1
f=fopen(Salida_Rsimplex,w); if any(x(B)<lb(B)-zer_tol | x(B)>ub(B)+zer_tol), error(Punto no factible); end
fprintf(f, It. Fase Sinf/Fobj Nopt\n); u = L\(U\c(B));
fprintf(f,----------------------------------\n); c_r = c(abs(N))-u*A(:,abs(N)); % Costes reducidos no bsicas
if ~any(c_r.*N>zer_tol), return, end % SE HA LLEGADO A UNA SOLUCIN
% FASE I Nopt=sum(c_r.*N>zer_tol);
v = zeros(n,1);
lbdd = find(lb>-Inf); v(lbdd) = lb(lbdd); free = setdiff(1:n,lbdd); [min_red_cost s] = max(c_r.*sign(N)); % Entra var. s no bsica con>coste reducido
ubdd = free(ub(free)<Inf); v(ubdd) = ub(ubdd); blk = abs(N(s));
if isempty(ubdd), N = -lbdd; % Var no en la base: en cota inf. No hay en u min_ratio = ub(blk) - lb(blk); order = -sign(N(s)); % Puede s ir de u a l o l a u
else N = [-lbdd ubdd]; free = setdiff(free,ubdd); d = order*U\(L\A(:,blk));
end; block_lb = find(d>=piv_tol & lb(B)>-1e32); % Comprobar bsica que llega a lb
f = length(free); if ~isempty(block_lb)
if f>0 % OJO! Hay variables libres [min_lb index_r] = min((x(B(block_lb))-lb(B(block_lb)))./d(block_lb));
[L U P Q] = lu(A(:,free)); % Q es matriz de permutacin if min_lb<min_ratio
free = free*Q; r=block_lb(index_r);
i = length(find(abs(diag(U))>piv_tol)); j = free(i+1:f); min_ratio = min_lb;
if ~isempty(j) blk = B(r);
N = [N j]; free = setdiff(free,j); f = length(free); end
lb(j) = zeros(size(j)); ub(j) = zeros(size(j)); end
end; block_ub = find(d<=-piv_tol & ub(B)<1e32); % Comprobar bsica que llega a ub
[k i] = find(P(1:f,:)); % relies on diag(U) having zeros at end if ~isempty(block_ub)
v(free) = U(1:f,1:f)\(L(1:f,1:f)\(P(1:f,:)*(b - A*v))); [min_ub,index_r] = min((x(B(block_ub))-ub(B(block_ub)))./d(block_ub));
k = setdiff(1:m,k); m = m-f; B = [free n+1:n+m]; if min_ub<min_ratio
A = [A sparse(k,1:m,sign(b(k)-A(k,:)*v+eps),m+f,m)]; r=block_ub(index_r);
else % No hay variables libres min_ratio = min_ub;
B = n+1:n+m; j = []; A = [A sparse(1:m,1:m,sign(b-A*v+eps*ones(size(b))))]; blk = B(r);
end end
lb = [lb; zeros(m,1)]; ub = [ub; Inf*ones(m,1)]; end
w = [zeros(n,1); ones(m,1)]; % Variables + artificiales para FASE I if min_ratio>1e32, error(Problema no acotado); end
[x niters B N L U] = rsmbdd(A,b,w,lb,ub,B,N,1,niters); % FASE I
if w*x>zer_tol, error(El problema no es factible); end % Readaptar solucin y datos
x(B) = x(B)-min_ratio*d;
% Adaptar para FASE II x(abs(N(s))) = x(abs(N(s))) + order*min_ratio;
ub(n+1:n+m) = zeros(m,1); c = [c; zeros(m,1)]; if blk == abs(N(s)), N(s) = -N(s); % Se bloquea la no bsica
if ~isempty(j) else swap = B(r); B(r) = abs(N(s)); N(s) = -sign(d(r))*swap;
c_r = c(j)-c(B)*(U\(L\A(:,j))); [L U] = lu(A(:,B));
if norm(c_r,inf)>zer_tol, error(Problema no acotado); end end
end niters=niters+1;
[x niters] = rsmbdd(A,b,c,lb,ub,B,N,2,niters); % FASE II fprintf(f,%5d%4d%18.9e%6d\n,niters,fase,c*x,Nopt);
x = x(1:n); fobj=c(1:n)*x; end
fclose(all);
fprintf([m n]=[%g %g]. Tiempo CPU:%10.4f; fun. obj.=%17.4e\n,m,n,cputime-t,fobj);
 Ejemplo Resolvamos min. 2x1 4x2 x3 106/133

s. a 2x1 C x2 C x3  10
x1 C x2 x3  4
0  x1  4
0  x2  6
1  x3  4:

 Se introducen las variables de holgura:


min. 2x1 4x2 x3
s. a 2x1 C x2 C x3 C x4 D 10
x1 C x2 x3 C x5 D 4
0  x1  4
0  x2  6
1  x3  4
x4; x5  0:

 Como es inmediato obtener una solucin factible y una base de partida,


entramos directamente en la fase II del mtodo Smplex.
107/133

 Partiremos de:
 
10
B D a4; a5 D ; Nl D a1; a2; a3 ; Nu D ;
01

y de la solucin inicial x D 0; 0; 1; 9; 5T . La funcin objetivo en este punto es


1.

Iteracin 1. Paso 1

 Calculemos los multiplicadores smplex:


    
10 0 0
 D B T cB D D :
01 0 0
108/133

 Los costes reducidos de las variables no bsicas son:


 
2
cN1 D c1 T a1 D 2 0; 0 D 2;
1
 
1
cN2 D c2 T a2 D 4 0; 0 D 4 y
1
 
1
cN3 D c3 T a3 D 1 0; 0 D 1:
1
Todava no se ha llegado al ptimo del problema pues las variables x1, x2 y x3
estn en sus lmites inferiores y sus costes reducidos son negativos.

Iteracin 1. Paso 2

 Se elige la variable x2 para entrar en la base por ser la no bsica de coste


reducido ms negativo.
109/133

 Se resuelve By D a2:
    
10 1 1
y D B 1 a2 D D :
01 1 1

Iteracin 1. Paso 3

 La variable a salir de la base de determinar de calcular el incremento  :


(    )
xB1 lB1 xB2 lB2 9 0 5 0
1 D mKn ; D ;
 D mKn y1 y2 1 1 D 5:
u2 l2 D 6 0

 Saldr, por tanto, la variable de nmero de ndice 2 en la base, x5, pues es la


que antes llega a su lmite inferior.
110/133

Iteracin 1. Paso 4

 Readaptemos la solucin y las estructuras de datos:


x2 l2 C  D 0 C 5 D 5
x4 x4 y1 D 9 5  1 D 4
x5 x5 y2 D 5 5  1 D 0:

La nueva solucin es x D 0; 5; 1; 4; 0T , con


 
11
B D a4; a2 D ; Nl D a1; a3; a5 y Nu D ;:
01
La nueva funcin objetivo es 21.
Iteracin 2. Paso 1 111/133

 Calculemos los multiplicadores smplex:


  1      
10 0 10 0 0
 D B T cB D D D :
11 4 11 4 4

 Los costes reducidos de las variables no bsicas son:


 
2
cN1 D c1 T a1 D 2 0; 4 D 2;
1
 
1
cN3 D c3 T a3 D 1 0; 4 D 5 y
1
 
0
cN5 D c5 T a5 D 0 0; 4 D 4:
1
Como la variable x3 est en su lmite inferior y su coste reducido es negativo,
todava no se ha llegado al ptimo.
Iteracin 2. Paso 2 112/133

 Se elige la variable x3 para entrar en la base. Se resuelve By D a3:


    
1 1 1 2
y D B 1 a3 D D :
0 1 1 1

Iteracin 2. Paso 3

 La variable a salir de la base de determinar de calcular  :


8 nx l o 9
B B


1 D mKn 1y1 1 D 4 2 0 > >
>

< >
nx u o =
 D mKn 2 D mKn B2 B2 D 5 6 D 1:

y2 1 >
>

>
>
u3 l3 D 4 1
: ;

Saldr, por tanto, la variable de nmero de ndice 2 en la base, x2, pues es la


que antes llega a uno de sus lmites: el superior.
113/133

Iteracin 2. Paso 4

 Readaptemos la solucin y las estructuras de datos:


x3 l3 C  D 1 C 1 D 2
x4 x4 y1 D 4 1  2 D 2
x2 x2 y2 D 5 C 1  1 D 6:

La nueva solucin es x D 0; 6; 2; 2; 0T , con


 
1 1
B D a4; a3 D ; Nl D a1; a5 y Nu D a2:
0 1
La nueva funcin objetivo es 26.
114/133

Iteracin 3. Paso 1

 Calculemos los multiplicadores smplex:


  1      
1 0 0 1 0 0 0
 D B T cB D D D :
1 1 1 1 1 1 1
Los costes reducidos de las variables no bsicas son:
 
2
cN1 D c1 T a1 D 2 0; 1 D 3;
1
 
1
cN2 D c2 T a2 D 4 0; 1 D 5 y
1
 
0
cN5 D c5 T a5 D 0 0; 1 D 1:
1
Como las variables x1 y x5, que estn en sus lmites inferiores, tienen costes
reducidos negativos, todava no se ha llegado al ptimo del problema.
Iteracin 3. Paso 2 115/133

 Se elige la variable x1 para entrar en la base. Se resuelve By D a1:


  1      
1 1 2 1 1 2 3
y D B 1 a1 D D D :
0 1 1 0 1 1 1

Iteracin 3. Paso 3

 La variable a salir de la base de determinar de calcular  :


8 nx l o 9
B1 B1


 1 D mK
n y1
D 230 > >
>
>
< nx u o = 2
 D mKn 2 D mKn B2 B2 D 2 4 D :

y 2 1 >
> 3

>
>
u1 l 1 D 4 0
: ;

Saldr x4 pues es la que antes llega a uno de sus lmites: el inferior.


116/133

Iteracin 3. Paso 4

 Readaptemos la solucin y las estructuras de datos:


x1 l1 C  D 0 C 2=3 D 2=3
x4 x4 y1 D 2 .2=3/  3 D 0
x3 x3 y2 D 2 C .2=3/  1 D 8=3:

 La nueva solucin es: 2 3 2 3


x1 2=3
6x27 6 6 7
6x37 D 68=37 :
6 7 6 7
4x45 4 0 5
x5 0
117/133

 Tambin,
 
2 1
B D a1; a3 D ; Nl D a4; a5 y Nu D a2:
1 1
La nueva funcin objetivo es 28.

Iteracin 4. Paso 1

 Calculemos los nuevos multiplicadores smplex:


  1      
2 1 2 1=3 1=3 2 1
 D B T cB D D D :
1 1 1 1=3 2=3 1 0
118/133

 Los costes reducidos de las variables no bsicas son:


 
1
cN2 D c2 T a2 D 4 1; 0 D 3;
1
 
1
cN4 D c4 T a4 D 0 1; 0 D1 y
0
 
0
cN5 D c5 T a5 D 0 1; 0 D 0:
1

 Los costes reducidos de las variables no bsicas en sus lmites inferiores, x4 y x5,
son 1 y 0, y el de la variable en su lmite superior, x2, es -3.

 Se ha llegado, por tanto, a un ptimo del problema, aunque no es el nico.


119/133

 En efecto, si se incrementa x5, manteniendo x2 D 6 y x4 D 0 fijos, las variables


x1 y x3 se modificarn de la forma:
     
x1 2=3 1=3
D B 1 b B 1 a5 x 5 D x:
x3 8=3 2=3 5

 Para cualquier x5 < 2, la solucin


2 3 2 3
x1 2=3 1=3x5
6x27 6 6 7
6x37 D 68=3 C 2=3x57
6 7 6 7
4x45 4 0 5
x5 0

es ptima. El valor de la funcin objetivo ptimo es 28. u


120/133

 Con el programa Rsimplex_1 presentado antes, se consigue esto:


>> A=[2 1 1;1 1 -1];
>> b=[10;4];
>> c=[-2 -4 -1];
>> l=[0 0 1];
>> u=[4 6 4];

>> [fobj niters x]=Rsimplex_1([],A,b,c,l,u)


[m n]=[2 3]. Tiempo CPU: 0.0312; fun. obj.= -2.8000e+001
fobj =
-28
niters =
4
x =
0.666666666666667
6.000000000000000
2.666666666666667

 Para otro ejemplo mucho ms grande:


[fobj niters]=Rsimplex_1(etam-mi.mps)
1 archivo(s) copiado(s).
NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat doneStatus=0
[m n]=[400 816]. Tiempo CPU: 3.0888; fun. obj.= -7.5572e002+
fobj =
-7.557152331775660e+002
niters =
2009
Implementaciones comerciales del Smplex 121/133

Forma de tableau

z xB xN TD
z 1 0 cNT cBT B 1 N cBT B 1 b
 El tableaux es as:
xB 0 I B 1N B 1b

 Si TD designa Trmino de la Derecha y T es una matriz cuyos coeficientes son


los del tableau, en realidad ste representa el sistema
2 3
z
6 xB 7
6 7
T6 7 D 0;
4 xN 5
TD

de m C 1 ecuaciones lineales y n C 1 variables: las n de x y z.


 Esta es una de las primeras formas en que se explicit computacionalmente el 122/133

mtodo Smplex, con vistas a su mejor comprensin. Se diferencia de lo


expuesto en que el clculo de  y cNN del Paso 1, y el de y del Paso 2 se
eliminan y el Paso 4 de pivotacin se lleva a cabo directamente en el tableau.

 Si suponemos que las variables bsicas que entran y salen de la base en una
determinada iteracin son la q y la p, y que las filas y las columnas del tableau
de esa iteracin estn numeradas partiendo de cero, la operacin de pivotacin
conlleva:

i) dividir la fila p de T por tpq , el coeficiente que ocupa la fila p y la columna


q de la matriz T , y
ii) para 0  i  m, i p, restar de la fila i la p multiplicada por tiq a fin de
hacer cero el elemento q de esa fila.

 Los costes reducidos, cNN , y el vector de variables bsicas, B 1b, se obtienen


directamente del tableau.
 Ejemplo Resolvamos: 123/133

min. x1 C x2 4x3 min. x1 C x2 4x3


s. a x1 C x2 C 2x3  9 con variables de
s. a x1 C x2 C 2x3 C x4 D9
x1 C x2 x3  2 holgura x1 C x2 x3 C x5 D2
x1 C x2 C x3  4 x1 C x2 C x3 C x6 D 4
x1 ; x2 ; x3  0: x1 ; x2 ; x3 ; x4 ; x5 ; x6  0:

Iteracin 1
z x1 x2 x3 x4 x5 x6 TD
z 1 1 1 4 0 0 0 0
x4 0 1 1 2 1 0 0 9
x5 0 1 1 1 0 1 0 2
x6 0 1 1 0 0 1 4

 La variable que entra en la base es la no bsica cuyo coste reducido es ms


negativo: x3.

 El indica que de entre las relaciones posibles, 9/2 y 4/1, (la otra afecta a un
nmero negativo) se elige esta ltima, por lo que saldr de la base aquella
variable que pivota en la tercera fila: x6.
Iteracin 2 124/133

z x1 x2 x3 x4 x5 x6 TD
z 1 3 5 0 0 0 4 16
x4 0 1 0 1 0 2 1
x5 0 0 2 0 0 1 1 6
x3 0 1 1 1 0 0 1 4

Iteracin 3
z x1 x2 x3 x4 x5 x6 TD
z 1 0 4 0 1 0 2 17
1 1 2 1
x1 0 1 3
0 3
0 3 3
x5 0 0 2 0 0 1 1 6
2 1 1 13
x3 0 0 3
1 3
0 3 3

Se ha llegado a un punto en el que todos los costes reducidos de las variables no


bsicas son positivos por lo que se ha conseguido el ptimo del problema.

 La solucin final es por tanto

x1; x2; x3; x4; x5; x6T D 1=3; 0; 13=3; 0; 6; 0T :

El valor de la funcin objetivo es z D 17.


125/133

z x1 x2 x3 x4 x5 x6 TD
z 1 0 4 0 1 0 2 17
1 1 2 1
x1 0 1 3
0 3
0 3 3
x5 0 0 2 0 0 1 1 6
2 1 1 13
x3 0 0 3
1 3
0 3 3

 La base ptima la constituyen los vectores columna a1, a5 y a3. Es decir,


2 3
10 2 min. x C x 1 4x 2 3

s. a x C x C 2x C x
1 2 3 4 D 9
B D a1; a5; a3 D 4 1 1 15 x C x 1
x C x C x
x 2 C x
3 D 2
C x D 4
5
1 2 3 6

10 1 x ; x ; x ;
1 x ;
2 x ; x  0:
3 4 5 6

 La inversa de B es la submatriz que en el tableau final ocupa el lugar que en el


inicial ocupaba la submatriz identidad; es decir,
2 3
1=3 0 2=3
B 1 D 4 0 1 1 5:
1=3 0 1=3
126/133

Otras variantes y mejoras del Smplex


Implementacin de la inversa de la base en forma de productos
matriciales

 En problemas grandes, resolver los sistemas B T  D cB y By D aq es costoso.


La modificacin de B 1 en una iteracin es

BN 1
D E B 1;

donde
1 y1 =yp
2 3
::: ::
6
6 : 7
7
.y ep /epT
6
6 1 yp 1 =yp 7
7
E DI D6 1=yp 7 y y D B 1 aq :
yp 6
6 ypC1 =yp 1
7
7
6 :: ::: 5
7
4 :
ym =yp 1
"
columna p
127/133

 Si el Smplex se inicia con una matriz B igual a la identidad, despus de k


iteraciones la matriz B 1 se puede expresar en una forma producto, de la
siguiente manera
Bk 1 D E k E k 1    E 1 B 1 :
Para implementar este esquema operativo se requiere almacenar los valores de
los coeficientes de la columna de la matriz E i que la hace diferente de la matriz
identidad, y el propio valor del ndice i .

 Para evitar errores de redondeo, conforme avanza el proceso es aconsejable


refactorizar peridicamente la matriz B 1.

 La variante del Smplex que incluye esta forma de actuar es la que sigue.
128/133

Paso 1 Operacin BTRAN (backward transformation). Calcular los multiplicadores smplex a partir de

   
T D cB
T
B 1
D T
cB Ek Ek 1 E1 :

Determinar los costes reducidos de las variables no bsicas a partir de

cNj D cj T aj ; para todo j 2 N:

Si cNj  0 para todo j B, PARAR; la solucin es ptima.


Paso 2 Operacin FTRAN (forward transformation). Escoger q 2 N tal que cNq D mKnj 2N fcNj < 0g. Calcular

1
yDB aq D .E k .E k 1    .E 1 aq ///:

Si y  0, PARAR; el problema es no acotado.


Paso 3 Operacin CHUZR. Si xj D B 1 b, establecer la variable bsica xjp que sale de la base determinando la fila p sobre la que pivota
la columna q a partir de la relacin
xjp xji
 
D mKn W yi > 0 :
yp 1i m yi

Paso 4 Operacin WRETA. Adaptar la matriz inversa de la base y la solucin a partir de

1 y1 =yp
2 3
6 :
:: :: 7
6
6 : 7
7
6
6 1 yp 1 =yp 7
7
E kC1 D6 1=yp 7:
ypC1 =yp 1
6 7
6 7
::
6 7
6 :: 7
4 : : 5
ym =yp 1

La nueva inversa de la base ser B 1 E kC1 E k    E 2 E 1 y la nueva solucin xj E kC1 xj .


129/133

Implementacin de la base y su inversa mediante factorizacin LU

 La idea es factorizar la matriz bsica en la forma LU e ir aplicndole a ella una


sucesin de matrices elementales que difieren de la identidad en un solo
elemento debajo de la diagonal principal y matrices de permutacin.

 Si, por ejemplo, 2 3


321
U D 4 3 55 ;
4
las matrices U 1, U 2 y U 3 sern
2 3 23 2 3
3 12 11
U1 D 4 1 5;U2 D 4 3 5 y U 3 D 4 1 55 :
1 1 4

Es fcil comprobar que U D U 3U 2U 1.


130/133

 Despus de k iteraciones se tendr que

Bk D B0 E 1 1 E 2 1    E k 1 I

es decir, que
1
L m P m    L 1 P 1 Bk D U m U m 1    U 1E 1 E 2 1    E k 1:

 Para almacenar las matrices E i , Lj y U j en la memoria del ordenador slo es


necesario guardar el valor de los subndices y los elementos distintos de cero de
las columnas que designan esos subndices.

 De las matrices de permutacin P i slo es necesario guardar un puntero que


indique con qu fila se intercambia la i .
131/133

Complejidad computacional del Smplex

 Cada iteracin requiere alrededor de m.n m/ C .m C 1/2 multiplicaciones y


m.n C 1/ sumas o restas: O.mn/ en los dos casos pues n  m..

 El nmero de puntos extremos de un programa lineal en forma estndar con n


variables y m condiciones es C.n; m/. Si n  2m, se tiene que
n  n m
C.n; m/ D   2m :
m.n m/ m
De acuerdo con esto, en el peor de los casos, parece lgico temerse un nmero
de iteraciones exponencial.
 Un problema clsico es el estudiado por Klee y Minty [1972]: 132/133

maximizar xn
s. a 0  x1  1
xi 1  xi  1 xi 1; i D 2; : : : ; n; 0 < < 1=2;
xi  0; i D 1; 2; : : : ; n:
Tiene 2n puntos extremos. Para n D 2 y n D 3 es el de la figura.

 Comenzando en x D 0 (factible), con precisin absoluta, el mtodo recorrera


los 2n puntos extremos.
x2   x2
x(3) = 0
1 x(7)
 
x(2) = 1 x(6)
1
x(5)
x(4)

x3
 
x(1) = 1

x(3) x(2)
x(1)
x(0) x1 x(0) x1
 La prctica de los ltimos cincuenta aos ha permitido constatar que los casos 133/133

extremos, como el ejemplo de Klee y Minty, rara vez ocurren en la realidad.

 Grosso modo, en problemas de tamao moderado, el mtodo Smplex requiere


un nmero de iteraciones real comprendido entre 4m y 6m.

 En problemas muy grandes, el nmero de iteraciones que cabe esperar llevar a


cabo para resolverlos es  m, donde e < log2.2 C n=m/.

 En resumen, la complejidad computacional prctica esperada del mtodo


Smplex es del O.m2n/.

 Teniendo tambin en cuenta el efecto que el tratamiento de la dispersidad de los problemas puede acarrear en la
complejidad del mtodo, diversos estudios han establecido que la complejidad del mtodo la define la ecuacin

Km nd 0;33 , donde K es una constante, 1;25 < < 2;5 y d es el nmero de elementos distintos de cero en la matriz

A, dividido por nm.

Você também pode gostar