Sei sulla pagina 1di 133

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales

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

1/133

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.


Para m y n grandes, considerar todos es prohibitivo pues son

n
:
m.n m/

En 1947 George B. Dantzig culmin la investigacin de un importante


equipo de ingenieros, matemticos y economistas formulando el Mtodo
Smplex.

4/133

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 programa 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


T

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.

Joseph-Louis Lagrange,
1736- Pars, 1813.

Turin,

.

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.,
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
condicionesRichard
de Karush-Kuhn-Tucker,
o KKT.
264
W. Cottle

7/133

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

cBT

cNT ,

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


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
0
cB
B

C
; N  0:
D
N
NT
cN

Esto equivale a que cB D B T  y que


cN D  N C N T ;

 N  0:

Es decir, a que
cN

NTB

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
NTB

 N D cN
DB

cB  0

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


smplex


xB

Supongamos que x D 0 D
de min. c T x

10/133

es una solucin ptima no degenerada

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
e

s 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


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 ;

14/133

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

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
I
x2
C x4 D 1
x1 ; x2 ; x3 ; x4  0:

1210
A D a1; a2; a3; a4 D 0 1 0 1 :

Consideremos B D a1; a2:


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

17/133


   
1 
4
1 2 4
2
D
D
I
1
0 1 1
1

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


02

79

79

62

3
45

5
61
78

01

Los costes reducidos de las variables no bsicas son



 
1
2
1
cN3 D c3 cBT B 1a3 D 0 1; 1
D 1
0 1 0

 
1 2 0
cN4 D c4 cBT B 1a4 D 0 1; 1
D 1:
0 1 1

18/133

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


del problema, es decir,
x. /  0;

20/133

si y slo si
xB


 y  0 y   0:

Si las variables bsicas se modifican segn


xB D B 1 b
o, desarrollando,

2
3 2 3
bO1
xB1
6
7 6 7
6xB2 7 6bO2 7
6 :: 7 D 6 :: 7
4 : 5 4 : 5
xBm
bOm

 y;
2 3
y1
6 7
6y 7
 6 ::2 7 ;
4 : 5
ym

donde bO D B 1b, ese valor mximo de movimiento negativo, vendr dado por
nO
o x
B
bi
 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 :
1i m yi
yp
Paso 4 Pivotacin. Adaptar la solucin, la matriz B y las estructuras de datos. Hacer:
xq

 D xjp =yp

xji

xji

B C .aq

B [ fqgnfjp g

yi ;

1i m
ajp /epT

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:


min. x1

25/133

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
I
x1 C x2 C
x4 D 1
x1 ; x2 ; x3 ; x4  0:

10

B D a3; a4 D 0 1


y N D a1 ; a2 D

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


2 3 23
x1
4x25
x3
x4

0
405 I y la funcin objativo
6
1

zD

cBT B 1b

D 0; 0

hi
6
1

D 0:

23
:
11

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


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

26/133

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:


 
10
yD
01

1

  
3
3
D
:
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
 
   
 
3
xB1
x
6

;
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
x3
x4

 D1
x3 y1 D 6
x4 y2 D 1

13D3
1  1 D 0:

29/133

La solucin queda, por tanto,


2 3 2 3
x1
0
6 7 6 7
6x27 617
6 7D6 7
4x35 435
x4
0
con

 
13
B D a3; a2 D
01


y N D a1; a4 D

20
:
11

La nueva funcin objetivo es


z D cBT B 1b D 0;

 
1 3 6
3
D
0 1 1

3:

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
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


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.

31/133

Analizando el porqu de esto mediante la expresin


 
   
x3
3
xB1
D
D B 1b  y D
xB2
x2
1

32/133




5
;
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
x2
x3

 D 35
x2 y2 D 1
x3 y1 D 3

3
5
3
5

 . 1/ D
 5 D 0:

La solucin queda:
2 3 2 3
x1
3=5
6 7 6 7
6x27 68=57
6 7D6 7
4x35 4 0 5
0
x4

8
5

con


B D a1; a2 D

23
11


10
y N D a3; a4 D
:
01

La nueva funcin objetivo es


z D cBT B 1b D 1;


"

D 1;

23
11

3
3

1
5
1
5

1

6
D
1
#
3  
27
6
5
:
D
2
1
5
5

Iteracin 3. Paso 1


Calculemos los nuevos multiplicadores smplex resolviendo B T  D cB :



 1   " 1 1#   

2 1
1
1
4=5
5 5
D
D
D
:
3
2
3 1
3
3
3=5
5 5

33/133

34/133

Los costes reducidos de las variables no bsicas son


cN3 D c3

T a3 D 0

cN4 D c4

T a4 D 0

 
1
4=5; 3=5
D 54
0
 
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
3
2 3 2
x1
3=5
6 7 6
7
6x27 68=57
6 7D6
7:
4x35 4 0 5
x4
0
La funcin objetivo
 
6
z D cBT B 1b D T b D 4=5; 3=5
D
1

27
:
5

35/133

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


indican en la figura.
02

569
8
9

578

3
4

568
7

01

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


min. x1

3x2

s. a 2x1 C 3x2 C x3
D6
x1 C x2 C
x4 D 1
x1 ; x2 ; x3 ; x4  0:

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


>> AEje1=[2 3 1 0;-1 1 0 1];
>> bEje1=[6;1];
>> bfsEje1=[3 4];
>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...
sqrt(eps),bfsEje1)

36/133

Se obtiene:

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


sqrt(eps),bfsEje1)
It. Sale B Entra B
Cos. red.
fobj
1
4
2
-3.000000
-3.000000
2
3
1
-4.000000
-6.000000
sol =
0.600000000000000
1.600000000000000
0
0
fobj =
-5.400000000000000
pi =
-0.800000000000000
-0.600000000000000
cr =
0
0
0.800000000000000
0.600000000000000
iters =
2
B =
1
2
N =
3
4

Inf. dual
3.162278
4.000000

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.

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:


min. x1
s. a

3x2

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

Con las variables de holgura, la base inicial queda:


min. x1
s. a

38/133

3x2

x1 2x2 C x3
D4
I
x1 C x2 C
x4 D 3
x1 ; x2 ; x3 ; x4  0:

10

B D a3; a4 D 0 1


y N D a1 ; a2 D

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


2 3 23
x1
4x25
x3
x4

0
405 ;
4
3

de funcin objetivo

zD

cBT B 1b

D 0; 0

hi
4
3

D 0:

1 2
:
1 1

La regin factible de este problema es la que se ilustra en la figura.

02

9

3
6

45 78
79

01

Iteracin 1. Paso 1


Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1   
10
0
0
D
D
:
01
0
0

39/133

Los costes reducidos de las variables no bsicas son


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

40/133

3:

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:


 
10
yD
01

1

  
2
2
D
:
1
1

41/133

Iteracin 1. Paso 3


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


 
 
3
xB2
D mKn
D 3:
 D mKn
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

;
3
1
xB2
x4
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
x3
x4

 D3
x3 y1 D 4
x4 y2 D 3

3  . 2/ D 10
3  1 D 0:

La solucin queda:
2 3 2 3
x1
0
6 7 6 7
6x27 6 37
6 7D6 7
4x35 4105
x4
0
con



1 2
B D a3; a2 D
0 1


y N D a1; a4 D


10
:
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
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


u
lo largo del cual c T x ! 1. La solucin es pues no acotada.

Ejemplo 3 Soluciones ptimas alternativas. Hay que resolver:


min. 2x1
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
s. a

4x2

4x2

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
B D a1; a4 D
11

 
21
y N D a2; a3 D
:
10

45/133

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
5

8:

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
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
10 4
10 2
4
2
1
1
D
B
b
B
a
x
D
x
D
2
2
2
x4
11 1
11 1
5
3 x2 :

49/133

Para cualquier x2 < 35 , la solucin


2 3 2
3
x1
4 2x2
6 7 6
7
6x27 6 x2 7
6 7D6
7
4x35 4 0 5
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

min.
s. a x1
x2
x3

3
x
4 4

C 20x5

C 14 x4
C 21 x4

8x5
12x5

1
x
2 6

C 6x7

El ptimo es x D
objetivo ptima -5/4.

3=4; 0; 0; 1; 0; 1; 0T

y su funcin

C 9x7 D 0
C 3x7 D 0
C x6
D1
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:
x6
1
x
2 6

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
41 D
B D a3 ; a4 D
W xB D
D B 1b D
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:
x100 C x2 C x3 C x4
D6
x10
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
forzar a que los coeficientes del vector x a sean cero. Es decir, resolver tambin
con el mtodo Smplex el problema

60/133

min.

m
X

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


min.

m
X

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
s. a

2x2

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

Para empezar, introduzcamos como siempre las variables de holgura:


min. x1
s. a

2x2

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:
x6 C x7

min.
s. a

x1 C x2
x1 C x2
x2

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

C x6

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

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

010

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




Calculemos los multiplicadores smplex resolviendo B T  D cB :


3
2
001
 D 41 0 05
010

66/133

12

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

Los costes reducidos de las variables no bsicas son


3
1
0 4 15 D 0;
0
2 3
1
0 415 D 2;
1
2 3
1
0 4 05 D 1
0
2 3
0
0 4 15 D 1:
0
2

cN1 D c1

T a1 D 0

1; 1;

cN2 D c2

T a2 D 0

1; 1;

cN3 D c3

T a3 D 0

1; 1;

cN4 D c4

T a4 D 0

1; 1;

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
xB1
x5
3
4xB2 5 D 4x65 D 425
xB3
x7
1

2 3
1
 415 ;
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
x5
x6
x7

 D1
x5 y1 D 3
x6 y2 D 2
x7 y3 D 1

11D2
11D1
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

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


2
3 12 3 2
001
0
 D 41 0 05 4 15 D 4
111
0

smplex resolviendo B T  D cB :
32 3 2 3
0 10
0
1
1 1 1 5 4 15 D 4 1 5 :
0
0
1 00

Los costes reducidos de las variables no bsicas son

71/133

cN1 D c1

T a1 D 0

1;

1;

cN7 D c7

T a7 D 1

1;

1;

cN3 D c3

T a3 D 0

1;

1;

cN4 D c4

T a4 D 0

1;

1;

3
1
0 4 15 D 2;
0
2 3
0
4
0 15 D 2;
0
2 3
1
4
05 D 1
0
y
0
2 3
0
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:


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

72/133

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
xB1
x5
2
4xB2 5 D 4x65 D B 1b  y D 415
xB3
x2
1

3
1
 4 25 ;
1

constatndose que x6 es la primera variable que llega a cero al incrementar x1.

Fase I. Iteracin 2. Paso 4




Readaptemos la solucin y las estructuras de datos correspondientes:


x1
x5
x6
x2

73/133

D  D 21
D x5 y1 D 2
D x6 y2 D 1
D x2 y3 D 1

1
2
1
2
1
2

 1 D 23
2D0
 . 1/ D 23 :

La solucin queda por tanto


2 3
x1
6x27
6x37
6x47
6x 7
4 55
x6
x7

siendo

2
0
4
B D a5 ; a1 ; a2 D 0
1

1
1
0

2
D

1=2
63=27
607
607
63=27
4 5
0
0

3
2
1
10
5
4
1 y N D a6 ; a7 ; a3 ; a4 D 0 1
1
00

1
0
0

3
0
15 :
0

74/133

Fase I. Iteracin 3. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


2
0
4
D 1
1

3
01
1 05
11

12

3 2 1
0
2
1
4 05 D 6
4 2
0
1

1
2
1
2

1 2 3
0
2
17 4 5
0
25

00

2 3
0
4
D 05:
0

Los costes reducidos de las variables no bsicas son


cN6 D c6

T a6 D 1

0; 0;

cN7 D c7

T a7 D 1

0; 0;

cN3 D c3

T a3 D 0

0; 0;

cN4 D c4

T a4 D 0

0; 0;

2 3
1
0 405 D 1;
0
2 3
0
4
0 15 D 1;
0
2 3
1
4
05 D 0;
0
0
2 3
0
0 4 15 D 0:
0

Todos los costes reducidos son no negativos: ptimo de la fase I.

La base de partida de la fase II es



0
B D a5; a1; a2 D 0

11
11
01


y

N D a3; a4 D

1
0
0

Fase II. Iteracin 1. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


2

0
4
D 1
1

0
1
1

3
1
05
1

12

3 2 1
0
2
4 15 D 6
4 21
2
1

1
2
1
2

1 2
2
17 4
25

0 0

3 2
3
1=2
0
15 D 4 3=25 :
2
0

Los costes reducidos de las variables no bsicas son


2

cN3 D c3

T a3 D 0

1=2;

cN4 D c4

T a4 D 0

1=2;

3
1
3=2; 0 4 05 D
2 03
0
3=2; 0 4 15 D
0

1
2;

3
2:

75/133

0
1
0

Como cN3 y cN4 son negativos, no se ha llegado an al ptimo.


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:


2

0
4
yD 0
1

1
1
0

3
1
15
1

12

3 2
0
4 15 D 4
0

1
2
1
2
1
2

1
2
1
2
1
2

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

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

76/133

77/133

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


2 3
xB1
4xB2 5 D B 1 b
xB3

3
2 3 2
3=2
x5
y D 4x1 5 D 41=25
x2
3=2

3
1=2
 4 1=25 ;
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
x5
x1
x2

 D1
x5 y1 D
x1 y2 D
x2 y3 D

3
2
1
2
3
2

1  12 D 1
1  12 D 0
C 1  12 D 2:

78/133

La nueva solucin es, por tanto,


2 3

2 3

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

con

0
B D a5; a4; a2 D

0
1

01
11 y
01


N D a3; a1 D

1
0
0

Fase II. Iteracin 2. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


2

0
 D 40
1

3
01
1 05
11

12

3 2
0
1
4 05 D 4 0
2
1

32 3 2 3
11
0
2
1 05 4 05 D 4 0 5 :
00
2
0

1
1
0


:

Los costes reducidos de las variables no bsicas son


2

cN3 D c3

T a3 D 0

cN1 D c1

T a1 D 1

3
1
2; 0; 0 4 05 D 2;
2 03
1
2; 0; 0 4 15 D 3:
0

79/133

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
0
4
yD 0
1

0
1
0

3
1
15
1

12

3 2
1
1
4 05 D 4 1
0
1

0
1
0

32 3 2 3
1
1
1
5
4
5
4
0
0 D
15 :
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
x5
x4
x2
La nueva solucin es

 D1
x5 y1 D 1 1  1 D 0
x4 y2 D 1 C 1  1 D 2
x2 y3 D 2 C 1  1 D 3:
2 3

2 3

0
x1
6x27 637
6 7 6 7
6x37 D 617 :
4x45 425
0
x5

Las nuevas matrices:

82/133

3
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

1
4
0
D
1

0
1
1

3
0
05
1

12

3 2
0
1
4 05 D 4 0
2
1

0
1
1

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

Los costes reducidos de las variables no bsicas son


cN5 D c5

T a5 D 0

0; 0;

cN1 D c1

T a1 D 1

0; 0;

2 3
0
4
2 05 D 2;
1
2 3
1
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

0
x1
6x27 637
6 7 6 7
6x37 D 617 :
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
7
x

568
7

5 8 59
68
9 7
6

x1

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:


min. x1
s. a

1000x6 C 1000x7

2x2

x1 C x2
x1 C x2
x2

87/133

x3

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

Con el programa ProgLineal_3 de Matlab que usamos sera:


sol =

>> cM=[1 -2 0 0 0 1000 1000];


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

0
3
1
2
0
0
0
fobj =
-6
pi =
0
0
-2
cr =
1000
iters =
4
B =
3
N =
6

1000

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

1kn m

expresin en la que d D
de la inversa de B por N .


f cNk =dk ; dk < 0g ; 1 D  i

1
B.i;W/
N

T

,es el vector fila i -simo del producto

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

T
T T
N B 1 T
x D xB x N D bC

0T

iT

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
columna i -simo
d D B 617
i D B 1e i ; vector
de
la
inversa
de la base
6 :: 7
4:5
0
el intervalo i ; i en el cual la solucin sigue siendo ptima es




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


mKn

mKn

1km



bNk =dk ; dk < 0 ; 1 D i

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
120
80
1
1
7
xB D 6
;
405 ; B D 160 120 ; B D 5600
160 60
0






1 0
368
368
1
1
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.




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
120 80
d D B.1;W/
N D 5600


1
120 80 :
D 5600

1
0


0
1



1 
1 
368 2 C 
120 80 :
560
5600

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


Los costes reducidos variarn de la siguiente manera.


cN

95/133

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


que cambie la base ptima, es decir b1
b1 C .
 El vector d es en este caso

96/133

por lo que xB




 
1
120
1
;
d DB 1
D
160
0
5600
 


2
120
1
C 5600
.
3
160

La base ptima original seguir siendo ptima mientras xB sea positiva;


es decir, mientras
(
2

120
5600

0

3C

160
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:
z

zC

33
368
D 239 C :
560
35

El mtodo Smplex para variables acotadas




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,


cT x
Ax D b
x C x1 D u
x x2 D l
x; x 1 ; x 2  0:

min.
s. a

Actuando as, el nmero de variables se triplica


y el nmero de condiciones pasa a ser m C 2n.

97/133

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


xB es entonces:

100/133

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.
reducid
o

cost.
reducid
os

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

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


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

102/133

xB D B 1 b B 1 Nl x Nl
D bO  y;

con bO D B


B 1 Nl x Nl

B 1 Nu x Nu

B 1 Nu x Nu y y D B 1 aq .

 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
i
i
yi

<



bO i uBi
 D mKn

D
mK

n
W
y
<
0I
1
W
y

0
2
1i m
i
i
yi

:
uq lq :

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





8
bO i lBi

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

yi

<



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

yi

:
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.


(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
1i m
yi
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
W yi > 0 ; mKn
W yi < 0 ; lq uq :
 D mKn mKn
1im
1i m
yi
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
B
B [ fqgnfjp g ;
(slo
Nl
Nl [ fjp gnfqg ;
(slo
Nu
Nu [ fjp gnfqg ;
(slo
jp
q;
(slo

si
si
si
si
si







6D uq
6D uq
6D uq
6D uq
6D uq

lq )
lq )
lq y q 2 Nl )
lq y q 2 Nu )
lq ).

104/133

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
if nargin>2
if nargin<4, error(Si no se lee de fichero, se requieren al menos,...
cuatro argumentos en entrada); end
if nargin<6, ub = Inf*ones(size(c)); end
if nargin<5, lb = zeros(size(c)); end
A = sparse(A);
else
% Lectura de los datos desde fichero file en MPS
eval([!copy file d:\Matlab2010b\work\tmp\in.mps]);
LIPSO = d:\Matlab2010b\work; exit=mps2mat(LIPSO); fprintf(\n);
load d:\Matlab2010b\work\tmp\default;
lb=lbounds; ub=ubounds;
end
[m n] = size(A); zer_tol = 1.0e-5; piv_tol = 1.0e-8; niters=0; t=cputime;
f=fopen(Salida_Rsimplex,w);
fprintf(f, It. Fase
Sinf/Fobj
Nopt\n);
fprintf(f,----------------------------------\n);
% FASE I
v
= zeros(n,1);
lbdd = find(lb>-Inf);
v(lbdd) = lb(lbdd); free = setdiff(1:n,lbdd);
ubdd = free(ub(free)<Inf); v(ubdd) = ub(ubdd);
if isempty(ubdd), N = -lbdd;
% Var no en la base: en cota inf. No hay en u
else N = [-lbdd ubdd]; free = setdiff(free,ubdd);
end;
f = length(free);
if f>0
% OJO! Hay variables libres
[L U P Q] = lu(A(:,free));
% Q es matriz de permutacin
free = free*Q;
i = length(find(abs(diag(U))>piv_tol)); j = free(i+1:f);
if ~isempty(j)
N = [N j]; free = setdiff(free,j); f = length(free);
lb(j) = zeros(size(j)); ub(j) = zeros(size(j));
end;
[k i] = find(P(1:f,:));
% relies on diag(U) having zeros at end
v(free) = U(1:f,1:f)\(L(1:f,1:f)\(P(1:f,:)*(b - A*v)));
k = setdiff(1:m,k); m = m-f; B = [free n+1:n+m];
A = [A sparse(k,1:m,sign(b(k)-A(k,:)*v+eps),m+f,m)];
else
% No hay variables libres
B = n+1:n+m; j = []; A = [A sparse(1:m,1:m,sign(b-A*v+eps*ones(size(b))))];
end
lb = [lb; zeros(m,1)]; ub = [ub; Inf*ones(m,1)];
w = [zeros(n,1); ones(m,1)];
% Variables + artificiales para FASE I
[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
% Adaptar para FASE II
ub(n+1:n+m) = zeros(m,1); c = [c; zeros(m,1)];
if ~isempty(j)
c_r = c(j)-c(B)*(U\(L\A(:,j)));
if norm(c_r,inf)>zer_tol, error(Problema no acotado); end
end
[x niters] = rsmbdd(A,b,c,lb,ub,B,N,2,niters);
% FASE II
x = x(1:n); fobj=c(1:n)*x;
fclose(all);
fprintf([m n]=[%g %g]. Tiempo CPU:%10.4f; fun. obj.=%17.4e\n,m,n,cputime-t,fobj);

function [x niters B N L U] = rsmbdd(A,b,c,lb,ub,B,N,fase,niters)


% Rutina de Smplex revisado para min cx s.a Ax=b, lb<=x<=ub.
% B vector 1xm con los ndices de las variables (columnas) en la base.
% N vector 1x(l-m) con los ndices de las variables no bsicas,
%
es decir, en sus lmites (+/-1).
[m l]
= size(A); f=fopen(Salida_Rsimplex,a);
zer_tol = 1.0e-5; piv_tol = 1.0e-8;
[L U] = lu(A(:,B));
if any(abs(diag(U))<piv_tol), error(La base inicial no es invertible); end
x = lb; upper = N(N>0); x(upper) = ub(upper);
x(B) = U\(L\(b-A(:,abs(N))*x(abs(N))));
while 1
if any(x(B)<lb(B)-zer_tol | x(B)>ub(B)+zer_tol), error(Punto no factible); end
u = L\(U\c(B));
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
Nopt=sum(c_r.*N>zer_tol);
[min_red_cost s] = max(c_r.*sign(N)); % Entra var. s no bsica con>coste reducido
blk = abs(N(s));
min_ratio = ub(blk) - lb(blk); order = -sign(N(s)); % Puede s ir de u a l o l a u
d = order*U\(L\A(:,blk));
block_lb = find(d>=piv_tol & lb(B)>-1e32); % Comprobar bsica que llega a lb
if ~isempty(block_lb)
[min_lb index_r] = min((x(B(block_lb))-lb(B(block_lb)))./d(block_lb));
if min_lb<min_ratio
r=block_lb(index_r);
min_ratio = min_lb;
blk = B(r);
end
end
block_ub = find(d<=-piv_tol & ub(B)<1e32); % Comprobar bsica que llega a ub
if ~isempty(block_ub)
[min_ub,index_r] = min((x(B(block_ub))-ub(B(block_ub)))./d(block_ub));
if min_ub<min_ratio
r=block_ub(index_r);
min_ratio = min_ub;
blk = B(r);
end
end
if min_ratio>1e32, error(Problema no acotado); end
% Readaptar solucin y datos
x(B) = x(B)-min_ratio*d;
x(abs(N(s))) = x(abs(N(s))) + order*min_ratio;
if blk == abs(N(s)), N(s) = -N(s);
% Se bloquea la no bsica
else swap = B(r); B(r) = abs(N(s)); N(s) = -sign(d(r))*swap;
[L U] = lu(A(:,B));
end
niters=niters+1;
fprintf(f,%5d%4d%18.9e%6d\n,niters,fase,c*x,Nopt);
end

105/133

Ejemplo Resolvamos

min. 2x1
s. a

x3

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
s. a

4x2

4x2

x3

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.

106/133

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  :


 
)

(
 D mKn

1 D mKn
u2

xB1

l2 D 6

y1
0

lB1 xB2
;

lB2

y2

0 5
;

D 5:

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
x4
x5

l2 C  D 0 C 5 D 5
x4 y1 D 9 5  1 D 4
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  
0
0
10
0
10
D
D
:
 D B T cB 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
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


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 1:
 D mKn 2 D mKn B2 B2 D 5 6
y
1
>

2
>

>

>

;
:
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.

112/133

113/133

Iteracin 2. Paso 4


Readaptemos la solucin y las estructuras de datos:


x3
x4
x2

l3 C  D 1 C 1 D 2
x4 y1 D 4 1  2 D 2
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
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


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


D
mK

n
D 230 >
>

1
y
>

>
<
nx u o = 2
D :
 D mKn 2 D mKn B2 B2 D 2 4
y
1
>

3
2

>
>

>

;
:
u1 l 1 D 4 0
Saldr x4 pues es la que antes llega a uno de sus lmites: el inferior.

115/133

116/133

Iteracin 3. Paso 4


Readaptemos la solucin y las estructuras de datos:


x1
x4
x3

La nueva solucin es:

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

2 3

x1
2=3
6x27 6 6 7
6 7 6 7
6x37 D 68=37 :
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
D 0:
cN5 D c5 T a5 D 0 1; 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

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

es ptima. El valor de la funcin objetivo ptimo es

28.

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.=
fobj =
-28
niters =
4
x =
0.666666666666667
6.000000000000000
2.666666666666667

-2.8000e+001

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
1

xB
0

xB

cNT

xN
cBT B 1 N

TD
cBT B 1 b

El tableaux es as:
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
3
2
z
7
6
6 xB 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


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:

122/133

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:
min.

x1 C x2

s. a

x1 C x2 C 2x3  9
x1 C x2
x3  2
x1 C x2 C x3  4
x1 ; x2 ; x3  0:

123/133

4x3

Iteracin 1
z
x4
x5
x6

con variables de
holgura

z
1
0
0
0

x1
1
1
1
1

x2
1
1
1
1

x3
4
2
1

min.

x1 C x2

s. a

x1 C x2 C 2x3 C x4
D9
x1 C x2
x3
C x5
D2
x1 C x2 C x3
C x6 D 4
x1 ; x2 ; x3 ; x4 ; x5 ; x6  0:

x4
0
1
0
0

x5
0
0
1
0

4x3

x6
0
0
0
1

TD

0
9
2
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
x4
x5
x3

z
1
0
0
0

x1
3

0
1

x2
5
1
2
1

x3
0
0
0
1

x4
0
1
0
0

x5
0
0
1
0

x6
4
2
1
1

TD

z
1
0
0
0

x1
0
1
0
0

x2
4

x3
0
0
0
1

x4
1

x5
0
0
1
0

x6
2

TD

2
3

1
3

16
1
6
4

Iteracin 3
z
x1
x5
x3

1
3

2
2
3

1
3

0
1
3

17

1
3

13
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

x1

x2

x3

4
1
3

x1

x5

2
3

x3

La base ptima la constituyen los


2
10
B D a1; a5; a3 D 4 1 1
10

x6

TD

17

2
3

1
3

x4

x5

1
3

1
3

1
3

13
3

vectores columna a1, a5 y a3. Es decir,


3
min. x C x
4x
2
s. a
x C x C 2x C x
D 9
x C x
x
C x
D 2
15
x C x C x
C x D 4
x
;
x
;
x
;
x
;
x
; x  0:
1
1

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
donde

E DI

.y

ep /epT
yp

6
6
6
6
D6
6
6
6
4

D E B 1;

3
y1 =yp
::
:::
7
:
7
7
1 yp 1 =yp
7
7 y y D B 1 aq :
1=yp
7
7
ypC1 =yp 1
7
::
::: 5
:
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
T D cB
B



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
yDB

aq D .E k .E k

   .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

E kC1

La nueva inversa de la base ser B

2
1
6 :
::
6
6
6
1
6
D6
6
6
6
6
4

3
y1 =yp
7
::
7
:
7
7
yp 1 =yp
7
7:
1=yp
7
7
ypC1 =yp 1
7
7
::
::
5
:
:
ym =yp
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
12
U1 D 4 1 5;U2 D 4 3 5
1
1
3

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

3
1
y U 3 D 4 1 55 :
4
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
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 m
n

 2m :
C.n; m/ D
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]:


maximizar xn
s. a
0  x1  1
xi 1  xi  1
xi  0;

132/133

i D 2; : : : ; n; 0 < < 1=2;


i D 1; 2; : : : ; n:

xi 1;

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

x(3) =

 

x2

0
1

x(2) =

x(1) =
x(0)

1
1

x(6)
x(5)

x(4)

x3

 

x1

x(7)

x(3)

x(2)
x(1)

x(0)

x1

La prctica de los ltimos cincuenta aos ha permitido constatar que los casos
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/.

133/133

 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.

Potrebbero piacerti anche