Está en la página 1de 108

h i j

d e f g
a b c
10 8 7
9 4 6 5
1 2 3
1/108
Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales
Mtodos Matemticos de Especialidad
Ingeniera Elctrica
Programacin Lineal
El Mtodo SIMPLEX
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_simplex_12.pdf
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
2/108
ndice
v Introduccin
v Condiciones de punto ptimo
v Mejora de una solucin bsica factible
v El algoritmo SIMPLEX
v Degeneracin y ciclado
v Solucin bsica factible inicial
v Anlisis de sensibilidad
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
3/108
Introduccin
Para resolver un problema de programacin lineal,
min. c
T
x
s. a Ax =b
x _ 0;
se pueden estudiar, uno a uno, los puntos extremos del politopo
P = {x R
n
: Ax = b; x _ 0; A R
mn
; b R
n
]
y determinar aquel en el que la funcin objetivo se hace mnima.
Para m y n grandes, analizar todos es prohibitivo, pues son
n
m.n m/
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
4/108
En 1947, George B. Dantzig, culminando el trabajo de un
importante equipo de matemticos y economistas, desarroll y
formul el denominado MTODO SIMPLEX.
Sus pasos bsicos son:
Encontrar un punto extremo del politopo P, o solucin bsica
factible, con el que empezar;
Desplazarse desde ese punto extremo a otro, a lo largo de
alguna arista de P, mejorando la funcin objetivo.
Repetir el paso anterior cuantas veces sea necesario hasta que se
alcance la solucin ptima o la arista escogida lleve a o.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
5/108
Condiciones de punto ptimo
Teorema Condiciones de Karush-Kuhn-Tucker x R
n
es el ptimo del programa lineal
min. c
T
x
s. a Ax = b
x _ 0;
si y slo si existen vectores R
m
y R
n
tales que
(i) Ax = b; x _ 0;
(ii) A
T
c = 0; _ 0; y
(iii)
i
x
i
= 0; i = 1; : : : ; n:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
6/108
La primera condicin, i, es la factibilidad del problema.
La Funcin de Lagrange del problema, o lagrangiana, es
L.x; ; / = c
T
x
T
.Ax b/
T
x:
Su gradiente con respecto a x, c A
T
, igualado a 0, es la
segunda condicin, ii.
El vector es el de los multiplicadores de Lagrange de las
condiciones Ax = b.
El vector , el de los multiplicadores de Lagrange de las
condiciones x _ 0.
La condicin iii es la complementariedad de holguras. Exige que
sean cero aquellos multiplicadores que corresponden a condiciones
de no negatividad no activas condiciones que no se satisfacen
estrictamente.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
7/108
Todas estas condiciones fueron formuladas por Kuhn y Tucker
en 1951 con el n 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 Karush, en 1939, ya haba
trabajado sobre estas condiciones, por lo que desde ese momento se
les pas a denominar de Karush-Kuhn-Tucker.
Las condiciones KKT generalizan la de la existencia de un mnimo
de una funcin sin restricciones; es decir, V
x
f.x
+
/ = 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
8/108
Si A es de la forma A = B N, y en concordancia debe ser
c
T
= c
T
B
c
T
N
, como en el ptimo la condicin
i
x
i
= 0,
i = 1; : : : ; n, implica que
B
i
= 0, i = 1; : : : ; m (pues las
variables bsicas son positivas), la condicin ii de KKT se puede
reescribir as:
_
c
B
c
N
_

_
B
T
N
T
_
=
_
0

N
_
;
N
_ 0:
Esto equivale a que c
B
= B
T
y que

N
= c
N
N
T
;
N
_ 0.
Es decir, a que
c
N
N
T
B
T
c
B
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
9/108
Vectores y condiciones clave:

N
=c
N
N
T
B
T
c
B
=B
T
c
B
c
N
N
T
B
T
c
B
_ 0
1. A
N
, vector de multiplicadores de Lagrange de las condiciones
activas de x _ 0, se le denomina vector de costes reducidos.
2. A , vector de multiplicadores de Lagrange de las condiciones
Ax = b se le denomina vector de multiplicadores simplex.
3. Que se cumpla que los costes reducidos, c
N
N
T
B
T
c
B
_ 0,
es la condicin de haber llegado al ptimo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
10/108
ndice
v Introduccin
v Condiciones de punto ptimo
v Mejora de una solucin bsica factible
v El algoritmo SIMPLEX
v Degeneracin y ciclado
v Solucin bsica factible inicial
v Anlisis de sensibilidad
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
11/108
Mejora de una solucin bsica
factible
Supongamos que:
Partimos de una solucin bsica factible: punto extremo.
La matriz A R
mn
.m < n/ es de rango completo y la regin
factible no es el conjunto vaco.
En la solucin bsica factible los m primeros coecientes del
vector x son los que forman la base: positivos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
12/108
Ordenando la matriz A como antes, A = B N y, de la misma
manera, c
T
= c
T
B
c
T
N
, se tendr que
Bx
B
Nx
N
= b;
de donde, despejando x
B
,
x
B
= B
1
b B
1
Nx
N
El valor de la funcin objetivo para esta solucin es
z = c
T
B
; c
T
N

_
x
B
x
N
_
= c
T
B
B
1
b .c
T
N
c
T
B
B
1
N/x
N
:
En el punto que dene esta solucin conuyen n m aristas;
est en la interseccin en R
n
de los m hiperplanos
correspondientes a las condiciones Ax = b y los n m
correspondientes a x
N
= 0 (no degenerada).
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
13/108
Para mejorar una funcin objetivo desde un punto extremo interesa
encontrar, de esas posibles n m aristas por las que moverse, una
que consiga hacer decrecer la funcin objetivo: direccin de
descenso.
Para determinar esa arista, o su direccin, se calculan los costes
reducidos de las variables que no estn en la base:
c
j
= c
j
c
T
B
B
1
a
j
; j > m:
Si c
j
< 0, la funcin objetivo decrece al ritmo que marca este coste
reducido: a coste reducido ms negativo, decrecimiento ms rpido.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
14/108
OJO! Si la solucin es bsica degenerada, el valor de alguna
variable bsica es cero, puede ocurrir que en alguna direccin
cualquier desplazamiento haga que
x./ = x y
viole la factibilidad del problema.
Esto ocurre, como sabemos, pues en una solucin bsica
degenerada conuyen ms de m hiperplanos.
P
d
1
d
2
x
1
x
2
d
1
es una direccin de movimiento factible; d
2
no.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
15/108
Ejemplo
Consideremos el programa lineal:
min. x
1
x
2
s. a x
1
2x
2
_ 4
x
2
_ 1
x
1
; x
2
_ 0:
Aadamos las variables de holgura x
3
y x
4
para transformarlo en
forma estndar:
min. x
1
x
2
s. a x
1
2x
2
x
3
= 4
x
2
x
4
= 1
x
1
; x
2
; x
3
; x
4
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
16/108
La matriz A es
A = a
1
; a
2
; a
3
; a
4
=
_
1 2 1 0
0 1 0 1
_
:
Consideremos B = a
1
; a
2
:
x
B
=
_
x
1
x
2
_
= B
1
b =
_
1 2
0 1
_
1
_
4
1
_
=
_
1 2
0 1
_ _
4
1
_
=
_
2
1
_
:
x
N
=
_
x
3
x
4
_
=
_
0
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
17/108
La solucin bsica factible que estamos considerando se puede ver
en la gura.
x
1
x
2
P
c
c
d
1
d
2

4
0

0
1

0
2

2
1

h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
18/108
Los costes reducidos de las variables no bsicas son
c
3
= c
3
c
T
B
B
1
a
3
= 0 1; 1
_
1 2
0 1
_ _
1
0
_
= 1 y
c
4
= c
4
c
T
B
B
1
a
4
= 0 1; 1
_
1 2
0 1
_ _
0
1
_
= 1:
La funcin objetivo decrece siguiendo la direccin (d
2
en la gura)
que determina el coste reducido c
3
: la de incrementar la variable no
bsica x
3
.
Las variables bsicas se deben mover de la forma
x
B
= B
1
b B
1
a
3
:
es decir, en la direccin opuesta a (o una cantidad negativa en)
d
2
= B
1
a
3
=
_
1 2
0 1
_ _
1
0
_
=
_
1
0
_
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
19/108
Una vez elegida la variable no bsica, x
q
, de coste reducido ms
negativo, llamada a entrar en la base, cunto moverse en la
direccin de la arista que ha denido ese coste reducido?
La respuesta la dar aquella variable bsica que antes llegue a su
lmite, es decir, a cero, y bloquee el posible desplazamiento en la
direccin escogida: x
B
= B
1
b B
1
Nx
N
:
Si la direccin es
y = B
1
a
q
y en ella se avanza una cantidad , amplitud de paso, de las
expresiones de x./ y x
B
./ se deduce que se mantendr la
factibilidad del problema, es decir,
x./ _ 0;
si y slo si
x
B
y _ 0 y _ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
20/108
Si las variables bsicas se modican segn
x
B
= B
1
b y;
o, desarrollando,
_
_
_
_
x
B
1
x
B
2
:
:
:
x
B
m
_

_
=
_
_
_
_
_

b
1

b
2
:
:
:

b
m
_

_

_
_
_
_
y
1
y
2
:
:
:
y
m
_

_
;
donde

b = B
1
b, ese valor mximo de movimiento negativo,
vendr dado por
= x
q
= mn
_

b
i
y
i
: y
i
> 0; 1 _ i _ m
_
=
x
B
p
y
p
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
21/108
El valor de la variable no bsica x
q
se ver incrementado despus
de este paso desde cero a x
q
, pasando a ser bsica en detrimento
de la variable x
B
p
que pasar a ser no bsica.
Para completar una iteracin del mtodo Smplex lo que resta por
hacer es reemplazar el vector a
p
por el a
q
en la base, es decir, hacer

B = B .a
q
a
p
/e
T
p
:
quedando

B = a
B
1
; a
B
2
; : : : ; a
B
p1
; a
q
; a
B
p1
; : : : ; a
B
m
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
22/108
ndice
v Introduccin
v Condiciones de punto ptimo
v Mejora de una solucin bsica factible
v El algoritmo SIMPLEX
v Degeneracin y ciclado
v Solucin bsica factible inicial
v Anlisis de sensibilidad
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
23/108
El Algoritmo SIMPLEX
El algoritmo Smplex para resolver
min. c
T
x
s. a Ax = b
x _ 0
parte de una solucin bsica factible x
B
correspondiente a
B = a
j
1
; a
j
2
; : : : ; a
j
m
.
B = {j
1
; : : : ; j
m
] es el conjunto de ndices de las variables bsicas;
x
j
i
designa la variable bsica i -sima;
N el de las variables no bsicas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
24/108
Paso 1 Asignacin de precios. Comprobacin de ptimo.
(a) Calcular los multiplicadores simplex resolviendo el sistema B
T
= c
B
.
(b) Calcular los costes reducidos de las variables no bsicas, c
j
= c
j

T
a
j
, para todo j N.
(c) Comprobar que se ha llegado al ptimo: si c
j
_ 0 para todo j N, parar: la solucin es
ptima.
Paso 2 Determinar columna de pivotacin.
(a) Determinar la variable no bsica x
q
que debe entrar en la base (encontrar una direccin de
descenso): escoger q N tal que c
q
= mn
j2N
{ c
j
< 0]:
(b) Resolver
By = a
q
:
Si y _ 0, parar; hay un rayo factible de soluciones a lo largo del cual c
T
x o. Si no,
seguir.
Paso 3 Determinar la de pivotacin. Anlisis de Ratios. Determinar la variable bsica x
j
p
que
sale de la base: calcular
=
x
j
p
y
p
= mn
1im
_
x
j
i
y
i
: y
i
> 0
_
:
Paso 4 Pivotacin. Adaptar la solucin, la matriz B y las estructuras de datos. Hacer:
x
q
= x
j
p
=y
p
x
j
i
x
j
i
y
i
; 1 _ i _ m
B B .a
q
a
j
p
/e
T
p
B B L {q]\{j
p
]
N N L {j
p
]\{q]; e ir al paso 1.
Algoritmo Smplex revisado
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
25/108
function [sol fobj pi 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
[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
disp(It. Sale B Entra B Cos. red. fobj Inf. dual);
while 1==1 % Itera Simplex
d =U\(L\b); % d=B^-1*b vector solucin actual
pi =L\(U\c(B_i)); % Multiplicadores simplex
c_r=zeros(n,1);
c_r(N_i)=c(N_i)-A(:,N_i)*pi; % 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)=d; % dar solucin
fobj=c(B_i)*d;
N = N_i; B=B_i; if nargout==8, Binv=U\(L\eye(m)); end
return; % Salir; fin
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((d(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)*d,Di); % Info. itera
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
26/108
Ejemplo 1
Resolvamos el problema de programacin lineal:
min. x
1
3x
2
s. a 2x
1
3x
2
_ 6
x
1
x
2
_ 1
x
1
; x
2
_ 0:
Introduzcamos las variables de holgura x
3
y x
4
; resulta:
min. x
1
3x
2
s. a 2x
1
3x
2
x
3
= 6
x
1
x
2
x
4
= 1
x
1
; x
2
; x
3
; x
4
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
27/108
Escojamos como base de partida
B = a
3
; a
4
=
_
1 0
0 1
_
y N = a
1
; a
2
=
_
2 3
1 1
_
:
La solucin inicial, x
B
= B
1
b, x
N
= 0, es pues
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
0
0
6
1
_

_
:
La funcin objetivo para esta solucin es
z = c
T
B
B
1
b = 0; 0
_
6
1
_
= 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
28/108
Iteracin 1. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
1 0
0 1
_
1
_
0
0
_
=
_
0
0
_
:
Los costes reducidos de las variables no bsicas son
c
1
= c
1

T
a
1
= 1 0; 0
_
2
1
_
= 1 y
c
2
= c
2

T
a
2
= 3 0; 0
_
3
1
_
= 3:
Todava no se ha llegado al ptimo pues los costes reducidos de las
variables no bsicas son negativos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
29/108
Iteracin 1. Paso 2
Elijamos la variable no bsica x
2
como aquella que ha de entrar en
la base pues tiene el coste reducido ms negativo.
Resolvamos el sistema By = a
2
:
y =
_
1 0
0 1
_
1
_
3
1
_
=
_
3
1
_
:
Iteracin 1. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
1
y
1
;
x
B
2
y
2
_
= mn
_
6
3
;
1
1
_
= 1:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
30/108
Es decir, saldr x
B
2
= x
4
. Esto se puede deducir tambin
analizando la expresin
_
x
B
1
x
B
2
_
=
_
x
3
x
4
_
= B
1
b y =
_
6
1
_

_
3
1
_
;
comprobndose que x
4
es la primera variable que llega a cero al
incrementar x
2
.
Iteracin 1. Paso 4
Readaptemos la solucin y las estructuras correspondientes:
x
2
= 1
x
3
x
3
y
1
= 6 1 3 = 3
x
4
x
4
y
2
= 1 1 1 = 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
31/108
La solucin queda, por tanto,
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
0
1
3
0
_

_
con
B = a
3
; a
2
=
_
1 3
0 1
_
y N = a
1
; a
4
=
_
2 0
1 1
_
:
La nueva funcin objetivo es
z = c
T
B
B
1
b = 0; 3
_
1 3
0 1
_ _
6
1
_
= 3:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
32/108
Iteracin 2. Paso 1
Calculemos los nuevos multiplicadores simplex resolviendo
B
T
= c
B
:
=
_
1 0
3 1
_
1
_
0
3
_
=
_
1 0
3 1
_ _
0
3
_
=
_
0
3
_
:
Los costes reducidos de las variables no bsicas son
c
1
= c
1

T
a
1
= 1 0; 3
_
2
1
_
= 4 y
c
4
= c
4

T
a
4
= 0 0; 3
_
0
1
_
= 3:
Como todava existe un coste reducido negativo, no se ha llegado al
ptimo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
33/108
Iteracin 2. Paso 2
Elegimos la nica variable no bsica capaz de mejorar la funcin
objetivo, x
1
, como aquella que ha de entrar en la base.
Resolvamos el sistema By = a
1
:
y =
_
1 3
0 1
_
1
_
2
1
_
=
_
1 3
0 1
_ _
2
1
_
=
_
5
1
_
:
Iteracin 2. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
1
y
1
_
= mn
_
3
5
_
=
3
5
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
34/108
Es decir, saldr x
B
1
= x
3
.
Analizando el porqu de esto mediante la expresin
_
x
B
1
x
B
2
_
=
_
x
3
x
2
_
= B
1
b y =
_
3
1
_

_
5
1
_
;
se comprueba que x
3
es la primera variable que llega a cero al
incrementar x
1
.
Iteracin 2. Paso 4
Readaptemos la solucin y las estructuras correspondientes:
x
1
=
3
5
x
2
x
2
y
2
= 1
3
5
.1/ =
8
5
x
3
x
3
y
1
= 3
3
5
5 = 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
35/108
La solucin queda:
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
3=5
8=5
0
0
_

_
con
B = a
1
; a
2
=
_
2 3
1 1
_
y N = a
3
; a
4
=
_
1 0
0 1
_
:
La nueva funcin objetivo es
z = c
T
B
B
1
b = 1; 3
_
2 3
1 1
_
1
_
6
1
_
=
= 1; 3
_
1
5

3
5
1
5
2
5
_ _
6
1
_
=
27
5
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
36/108
Iteracin 3. Paso 1
Calculemos los nuevos multiplicadores simplex resolviendo
B
T
= c
B
:
=
_
2 1
3 1
_
1
_
1
3
_
=
_
1
5
1
5

3
5
2
5
_ _
1
3
_
=
_
4=5
3=5
_
:
Los costes reducidos de las variables no bsicas son
c
3
= c
3

T
a
3
= 0 4=5; 3=5
_
1
0
_
=
4
5
y
c
4
= c
4

T
a
4
= 0 4=5; 3=5
_
0
1
_
=
3
5
:
Todos los costes reducidos son positivos por lo que se ha llegado al
nico ptimo del problema.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
37/108
La solucin ptima es
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
3=5
8=5
0
0
_

_
:
La funcin objetivo
z =
T
b = 4=5; 3=5
_
6
1
_
=
27
5
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
38/108
Las soluciones bsicas factibles que se han ido obteniendo en el
proceso se indican en la gura.
x
1
x
2
P
c

3
0

3/5
8/5

0
1

u
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
39/108
Con el programa de Matlab que hemos presentado antes sera:
min. x
1
3x
2
s. a 2x
1
3x
2
x
3
= 6
x
1
x
2
x
4
= 1
x
1
; x
2
; x
3
; x
4
_ 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)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
40/108
>> [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.6000
1.6000
0
0
fobj =
-5.4000
pi =
-0.8000
-0.6000
cr =
0.8000 0.6000
iters =
2
B =
1 2
N =
3 4
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
41/108
Con la rutina Linprog de Matlab, la sesin sera la siguiente.
>> 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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
42/108
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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
43/108
Ejemplo 2
Solucin no acotada. Hay que resolver el siguiente problema lineal:
min. x
1
3x
2
s. a x
1
2x
2
_ 4
x
1
x
2
_ 3
x
1
; x
2
_ 0:
Introduzcamos las variables de holgura x
3
y x
4
; el problema queda:
min. x
1
3x
2
s. a x
1
2x
2
x
3
= 4
x
1
x
2
x
4
= 3
x
1
; x
2
; x
3
; x
4
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
44/108
Escojamos como base de partida
B = a
3
; a
4
=
_
1 0
0 1
_
y N = a
1
; a
2
=
_
1 2
1 1
_
:
La solucin inicial, x
B
= B
1
b, x
N
= 0, es
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
0
0
4
3
_

_
:
La funcin objetivo para esta solucin es
z = c
T
B
b = 0; 0
_
4
3
_
= 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
45/108
La regin factible de este problema es la que se ilustra en la gura.
x
1
x
2
P
c =

1
3

4
0

0
3

Iteracin 1. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
1 0
0 1
_
1
_
0
0
_
=
_
0
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
46/108
Los costes reducidos de las variables no bsicas son
c
1
= c
1

T
a
1
= 1 0; 0
_
1
1
_
= 1 y
c
2
= c
2

T
a
2
= 3 0; 0
_
2
1
_
= 3:
Al ser negativos los costes reducidos, esta solucin no es ptima.
Iteracin 1. Paso 2
Elegimos la variable no bsica x
2
como aquella que ha de entrar en
la base pues su coste reducido es el ms negativo.
Resolvamos el sistema By = a
2
:
y =
_
1 0
0 1
_
1
_
2
1
_
=
_
2
1
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
47/108
Iteracin 1. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
2
y
2
_
= mn
_
3
1
_
= 3:
Es decir saldr x
B
2
= x
4
.
Como venimos haciendo, esto tambin de puede comprobar a partir
de la expresin
_
x
B
1
x
B
2
_
=
_
x
3
x
4
_
= B
1
b y =
_
4
3
_

_
2
1
_
;
constatndose que, efectivamente, x
4
es la primera variable que
llega a cero al incrementar x
2
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
48/108
Iteracin 1. Paso 4
Readaptemos la solucin y las estructuras correspondientes:
x
2
= 3
x
3
x
3
y
1
= 4 3 .2/ = 10
x
4
x
4
y
2
= 3 3 1 = 0:
La solucin queda:
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
0
3
10
0
_

_
con
B = a
3
; a
2
=
_
1 2
0 1
_
y N = a
1
; a
4
=
_
1 0
1 1
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
49/108
Iteracin 2. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
1 0
2 1
_
1
_
0
3
_
=
_
1 0
2 1
_ _
0
3
_
=
_
0
3
_
:
Los costes reducidos de las variables no bsicas son
c
1
= c
1

T
a
1
= 1 0; 3
_
1
1
_
= 4 y
c
4
= c
4

T
a
4
= 0 0; 3
_
0
1
_
= 3:
Como existe un coste reducido negativo, todava no se ha
alcanzado el ptimo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
50/108
Iteracin 2. Paso 2
Elegimos la nica variable no bsica posible, x
1
, como aquella que
ha de entrar en la base.
Resolvamos el sistema By = a
1
:
y =
_
1 2
0 1
_
1
_
1
1
_
=
_
1 2
0 1
_ _
1
1
_
=
_
1
1
_
:
Como todos los y
i
; i = 1; 2 son negativos, hay un rayo de
soluciones factibles a lo largo del cual c
T
x o. La solucin es
pues no acotada.
u
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
51/108
Ejemplo 3
Soluciones ptimas alternativas. Resolvamos
min. 2x
1
4x
2
s. a x
1
2x
2
_ 4
x
1
x
2
_ 1
x
1
; x
2
_ 0;
que se describe en la gura.
x
1
x
2
Soluciones optimas
alternativas
P
c

4
0

2/3
5/3

0
1

h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
52/108
Introduzcamos las variables de holgura x
3
y x
4
. El problema queda:
min. 2x
1
4x
2
s. a x
1
2x
2
x
3
= 4
x
1
x
2
x
4
= 1
x
1
; x
2
; x
3
; x
4
_ 0:
Escojamos como base de partida
B = a
1
; a
4
=
_
1 0
1 1
_
y N = a
2
; a
3
=
_
2 1
1 0
_
:
La solucin inicial, x
B
= B
1
b, x
N
= 0, es pues
_
x
1
x
4
_
=
_
1 0
1 0
_
1
_
4
1
_
=
_
1 0
1 1
_ _
4
1
_
=
_
4
5
_
y
_
x
2
x
3
_
=
_
0
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
53/108
La funcin objetivo para esta solucin es
z = c
T
B
b = 2; 0
_
4
1
_
= 8:
Iteracin 1. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
1 1
0 1
_
1
_
2
0
_
=
_
1 1
0 1
_ _
2
0
_
=
_
2
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
54/108
Los costes reducidos de las variables no bsicas son
c
2
= c
2

T
a
2
= 4 2; 0
_
2
1
_
= 0 y
c
3
= c
3

T
a
3
= 0 2; 0
_
1
0
_
= 2:
Hemos llegado a un punto ptimo. Este, sin embargo, no es nico.
Si incrementamos x
2
, manteniendo x
3
= 0, las variables x
1
y x
4
se
modican de la siguiente manera:
_
x
1
x
4
_
= B
1
b B
1
a
2
x
2
=
_
1 0
1 1
_ _
4
1
_

_
1 0
1 1
_ _
2
1
_
x
2
=
_
4
5
_

_
2
3
_
x
2
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
55/108
Para cualquier x
2
<
5
3
, la solucin
_
_
_
_
x
1
x
2
x
3
x
4
_

_
=
_
_
_
_
4 2x
2
x
2
0
5 3x
2
_

_
es ptima con funcin objetivo z = 8.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
56/108
Degeneracin y ciclado
Aunque hasta ahora se ha supuesto que la solucin x de un
programa lineal no es degenerada, el que lo sea no causa grandes
dicultades prcticas.
Lo peor que puede ocurrir es que en el Paso 3 x
j
p
sea cero, lo que
dar lugar a una iteracin con = 0: x no cambiar.
Es decir, a lo largo de
q
se llegar sin desplazamiento a la
condicin x
j
p
= 0.
Si esto ocurre, 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 cicle indenidamente a travs de una sucesin
de bases, y sus correspondientes soluciones.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
57/108
El problema
min.
3
4
x
4
20x
5

1
2
x
6
6x
7
s. a x
1

1
4
x
4
8x
5
x
6
9x
7
= 0
x
2

1
2
x
4
12x
5

1
2
x
6
3x
7
= 0
x
3
x
6
= 1
x
1
; x
2
; x
3
; x
4
; x
5
; x
6
; x
7
_ 0:
expuesto por E.M.L. Beale en 1955, muestra cmo el mtodo
Smplex puede quedar atrapado en un ciclo innito, 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 .
El ptimo de este problema es x = 3=4; 0; 0; 1; 0; 1; 0
T
y su
funcin objetivo ptima -5/4.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
58/108
Si se comienza a resolver partiendo de la base B = a
1
; a
2
; a
3
:
Siguiendo el mtodo Smplex ordinario se obtienen las bases
a
4
; a
2
; a
3
, a
4
; a
5
; a
3
, a
6
; a
5
; a
3
, a
6
; a
7
; a
3
, a
1
; a
7
; a
3
y
otra vez a
1
; a
2
; a
3
.
Si se vuelve a utilizar la misma secuencia de variables a entrar y
salir de la base, el mtodo entra en un ciclo innito.
La regla de Bland (1977)
Mediante esta regla la ms 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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
59/108
ndice
v Introduccin
v Condiciones de punto ptimo
v Mejora de una solucin bsica factible
v El algoritmo SIMPLEX
v Degeneracin y ciclado
v Solucin bsica factible inicial
v Anlisis de sensibilidad
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
60/108
Solucin bsica factible inicial
Hasta ahora hemos supuesto que exista una solucin inicial bsica
factible desde la que empezar el Smplex.
Cmo puede obtenerse una?
Si las condiciones del problema son de la forma Ax _ b; x _ 0,
donde b tiene todos sus coecientes no negativos, el problema es
trivial: aadiendo las variables de holgura a las condiciones se
tendr que
Ax x
h
= b
x; x
h
_ 0:
Una solucin bsica factible ser x
h
= b, x = 0; la matriz
bsica correspondiente, B = I.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
61/108
Normalmente la bsqueda de una solucin inicial bsica factible no
es tan sencilla:
Por ejemplo, si se diesen las mismas condiciones de antes pero el
vector b tuviese algn coeciente 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.
v Aadiendo el vector de variables de holgura, x
h
, se tendra
que Ax x
h
= b; x _ 0; x
h
_ 0.
v Si el vector b no tuviese todos sus coecientes negativos o
cero, difcilmente se podra determinar una base B a partir de
la matriz A I, de tal forma que x
B
= B
1
b cumpliese
la condicin de no negatividad.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
62/108
Ejemplo 1
Consideremos las condiciones siguientes:
x
1
2x
2
_ 4
x
1
x
2
_ 1
x
1
; x
2
_ 0:
Aadiendo las variables de holgura x
3
y x
4
las condiciones se
transforman en
x
1
2x
2
x
3
= 4
x
1
x
2
x
4
= 1
x
1
; x
2
; x
3
; x
4
_ 0:
Una solucin inicial bsica factible sera
B = a
3
; a
4
=
_
1 0
0 1
_
: x
B
=
_
x
3
x
4
_
= B
1
b =
_
1 0
0 1
_
_
41
_
=
_
4
1
_
y
x
N
=
_
x
1
x
2
_
=
_
0
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
63/108
Ejemplo 2
Sean ahora las siguientes condiciones:
x
1
x
2
x
3
_ 6
2x
1
3x
2
3x
3
_ 3
x
2
; x
3
_ 0:
Cuando una variable x
i
no est restringida a tomar valores no
negativos, como aqu de x
1
, podemos sustituirla por x
/
i
x
//
i
,
x
/
i
_ 0, x
//
i
_ 0. Si lo hacemos e introducimos las variables de
holgura x
4
y x
5
, las condiciones quedan:
x
/
1
x
//
1
x
2
x
3
x
4
= 6
2x
/
1
2x
//
1
3x
2
3x
3
x
5
= 3
x
/
1
; x
//
1
; x
2
; x
3
; x
4
; x
5
_ 0:
No es inmediato determinar una base B que nos permita obtener
una solucin inicial bsica factible.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
64/108
Ejemplo 3
Consideremos ahora las siguientes condiciones:
x
1
x
2
2x
3
_ 3
2x
1
x
2
3x
3
_ 7
x
1
; x
2
; x
3
_ 0:
Si para hacer todos los coecientes del vector b no negativos
multiplicamos la primera condicin por 1 e introducimos las
variables de holgura x
4
y x
5
, las condiciones resultarn:
x
1
x
2
2x
3
x
4
= 3
2x
1
x
2
3x
3
x
5
= 7
x
1
; x
2
; x
3
; x
4
; x
5
_ 0:
Tampoco de aqu se puede determinar de una manera sencilla una
base inicial del problema.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
65/108
Variables articiales
La forma ms inmediata de determinar una solucin bsica factible
de partida consiste en introducir, adems de las variables de
holgura, temporalmente, un conjunto similar de variables
articiales. A las condiciones del problema en forma estndar
min. c
T
x
s. a Ax = b
x _ 0;
(donde, sin prdida de generalidad, se supone que b _ 0) se le
aade un vector de variables articiales, x
a
, resultando
Ax x
a
= b;
con x _ 0 y x
a
_ 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
66/108
Si se quiere conseguir una solucin factible del problema original
habr que forzar a que los coecientes del vector x
a
sean cero. Es
decir, resolver tambin con el mtodo Simplex el problema
min.
m

i =1
x
a
i
s. a Ax x
a
= b
x; x
a
_ 0:
Si el problema original admite una solucin factible, en la
solucin del transformado se tendr que x
a
= 0.
Si tal solucin factible no existe, el problema transformado
acabar con algn coeciente de x
a
positivo.
El mtodo Smplex completo, por consiguiente, consta de las dos
fases que se indican en la tabla.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
67/108
Fase I Partiendo de la solucin inicial x = 0, x
a
= b, resolver
min.
m

i =1
x
a
i
s. a Ax x
a
= b
x; x
a
_ 0:
Si x
a
= 0, parar: el problema no tiene solucin bsica factible.
Si x
a
= 0, ir a la fase II tomando como B inicial la de la ltima
iteracin de esta fase.
Fase II Partiendo de x
B
= B
1
b y x
N
= 0, resolver
min. c
T
B
x
B
c
T
N
x
N
s. a Bx
B
Nx
N
= b
x
B
; x
N
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
68/108
OJO! Si la solucin de la fase I es degenerada, cualquier variable
articial x
a
i
= 0 que est en la base se puede intercambiar por una
no bsica de las originales x
j
, o suprimirse sin ms que eliminar
la condicin redundante correspondiente.
Concretamente, si la variable bsica x
a
k
= 0 al nal de la fase I
y se cumple que e
T
k
B
1
a
j
= 0, la variable x
a
k
se puede
reemplazar por la x
j
.
Si para todo a
j
N, e
T
k
B
1
a
j
= 0, el sistema Ax = b es
redundante y, por tanto, se puede eliminar la la k-sima de la
matriz A original (as como la la y columna k-simas de B).
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
69/108
Ejemplo
Resolver el siguiente problema:
min. x
1
2x
2
s. a x
1
x
2
_ 2
x
1
x
2
_ 1
x
2
_ 3
x
1
; x
2
_ 0:
Para empezar, introduzcamos como siempre las variables de
holgura:
min. x
1
2x
2
s. a x
1
x
2
x
3
= 2
x
1
x
2
x
4
= 1
x
2
x
5
= 3
x
1
; x
2
; x
3
; x
4
; x
5
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
70/108
Como la base de partida no es de fcil obtencin, introducimos las
variables articiales y planteamos el siguiente problema dentro de la
fase I:
min. x
6
x
7
s. a x
1
x
2
x
3
x
6
= 2
x
1
x
2
x
4
x
7
= 1
x
2
x
5
= 3
x
1
; x
2
; x
3
; x
4
; x
5
; x
6
; x
7
_ 0:
Obsrvese que en la tercera condicin no es necesario introducir
variable articial alguna.
Del problema as planteado se puede obtener inmediatamente la
base de partida; sta es
B = a
5
; a
6
; a
7
=
_
_
0 1 0
0 0 1
1 0 0
_
_
y N = a
1
; a
2
; a
3
; a
4
=
_
_
1 1 1 0
1 1 0 1
0 1 0 0
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
71/108
La solucin inicial, x
B
= B
1
b, x
N
= 0, es:
_
x
5
x
6
x
7
_
=
_
0 1 0
0 0 1
1 0 0
_
1
_
2
1
3
_
=
_
0 0 1
1 0 0
0 1 0
_ _
2
1
3
_
=
_
3
2
1
_
:
Por tanto,
_
_
_
_
_
_
_
_
_
_
x
1
x
2
x
3
x
4
x
5
x
6
x
7
_

_
=
_
_
_
_
_
_
_
_
_
_
0
0
0
0
3
2
1
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
72/108
Fase I. Iteracin 1. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
_
0 0 1
1 0 0
0 1 0
_
_
1
_
_
0
1
1
_
_
=
_
_
0 1 0
0 0 1
1 0 0
_
_
_
_
0
1
1
_
_
=
_
_
1
1
0
_
_
:
Los costes reducidos de las variables no bsicas son
c
1
= c
1

T
a
1
= 0 1; 1; 0
_
_
1
1
0
_
_
= 0;
c
2
= c
2

T
a
2
= 0 1; 1; 0
_
_
1
1
1
_
_
= 2;
c
3
= c
3

T
a
3
= 0 1; 1; 0
_
_
1
0
0
_
_
= 1 y
c
4
= c
4

T
a
4
= 0 1; 1; 0
_
_
0
1
0
_
_
= 1:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
73/108
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, x
2
, como aquella que
ha de entrar en la base.
Resolvemos el sistema By = a
2
:
y =
_
_
0 1 0
0 0 1
1 0 0
_
_
1
_
_
1
1
1
_
_
=
_
_
0 0 1
1 0 0
0 1 0
_
_
_
_
1
1
1
_
_
=
_
_
1
1
1
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
74/108
Fase I. Iteracin 1. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
1
y
1
;
x
B
2
y
2
;
x
B
3
y
3
_
= mn
_
3
1
;
2
1
;
1
1
_
= 1:
es decir, saldr x
B
3
= x
7
.
O, como solemos utilizar, de evaluar la expresin
x
B
= B
1
b y.
Es decir,
_
_
x
B
1
x
B
2
x
B
3
_
_
=
_
_
x
5
x
6
x
7
_
_
=
_
_
3
2
1
_
_

_
_
1
1
1
_
_
;
comprobndose que x
7
es la primera variable que llega a cero al
incrementar x
2
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
75/108
Fase I. Iteracin 1. Paso 4
Readaptemos la solucin y las estructuras de datos:
x
2
= 1
x
5
x
5
y
1
= 3 1 1 = 2
x
6
x
6
y
2
= 2 1 1 = 1
x
7
x
7
y
3
= 1 1 1 = 0:
La solucin queda por tanto,
_
_
_
_
_
_
_
x
1
x
2
x
3
x
4
x
5
x
6
x
7
_

_
=
_
_
_
_
_
_
_
0
1
0
0
2
1
0
_

_
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
76/108
siendo
B = a
5
; a
6
; a
2
=
_
_
0 1 1
0 0 1
1 0 1
_
_
y
N = a
1
; a
7
; a
3
; a
4
=
_
_
1 0 1 0
1 1 0 1
0 0 0 0
_
_
:
Fase I. Iteracin 2. Paso 1
Calculemos de nuevo los multiplicadores simplex resolviendo
B
T
= c
B
:
=
_
_
0 0 1
1 0 0
1 1 1
_
_
1
_
_
0
1
0
_
_
=
_
_
0 1 0
1 1 1
1 0 0
_
_
_
_
0
1
0
_
_
=
_
_
1
1
0
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
77/108
Los costes reducidos de las variables no bsicas son
c
1
= c
1

T
a
1
= 0 1; 1; 0
_
_
1
1
0
_
_
= 2;
c
7
= c
7

T
a
7
= 1 1; 1; 0
_
_
0
1
0
_
_
= 2;
c
3
= c
3

T
a
3
= 0 1; 1; 0
_
_
1
0
0
_
_
= 1 y
c
4
= c
4

T
a
4
= 0 1; 1; 0
_
_
0
1
0
_
_
= 1:
No se ha llegado todava al ptimo.
Fase I. Iteracin 2. Paso 2
Elegimos la variable no bsica x
1
como aquella que ha de entrar en
la base por ser la de coste reducido ms negativo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
78/108
Resolvemos el sistema By = a
1
:
y =
_
_
0 1 1
0 0 1
1 0 1
_
_
1
_
_
1
1
0
_
_
=
_
_
0 1 1
1 1 0
0 1 0
_
_
_
_
1
1
0
_
_
=
_
_
1
2
1
_
_
:
Fase I. Iteracin 2. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
1
y
1
;
x
B
2
y
2
_
= mn
_
2
1
;
1
2
_
=
1
2
:
es decir, saldr x
B
2
= x
6
. Esto tambin se puede deducir de la
expresin
_
_
x
B
1
x
B
2
x
B
3
_
_
=
_
_
x
5
x
6
x
2
_
_
= B
1
b y =
_
_
2
1
1
_
_

_
_
1
2
1
_
_
;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
79/108
constatndose que x
6
es la primera variable que llega a cero al
incrementar x
1
.
Fase I. Iteracin 2. Paso 4
Readaptemos la solucin y las estructuras de datos
correspondientes:
x
1
= =
1
2
x
5
= x
5
y
1
= 2
1
2
1 =
3
2
x
6
= x
6
y
2
= 1
1
2
2 = 0
x
2
= x
2
y
3
= 1
1
2
.1/ =
3
2
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
80/108
La solucin queda por tanto
_
_
_
_
x
1
x
2
x
3
x
4
x
5
x
6
x
7
_

_
=
_
_
_
_
1=2
3=2
0
0
3=2
0
0
_

_
siendo
B = a
5
; a
1
; a
2
=
_
_
0 1 1
0 1 1
1 0 1
_
_
y N = a
6
; a
7
; a
3
; a
4
=
_
_
1 0 1 0
0 1 0 1
0 0 0 0
_
_
:
Fase I. Iteracin 3. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
_
0 0 1
1 1 0
1 1 1
_
_
1
_
_
0
0
0
_
_
=
_
_
_

1
2
1
2
1
2

1
2

1
2
1
2
1 0 0
_

_
_
_
0
0
0
_
_
=
_
_
0
0
0
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
81/108
Los costes reducidos de las variables no bsicas son
c
6
= c
6

T
a
6
= 1 0; 0; 0
_
_
1
0
0
_
_
= 1;
c
7
= c
7

T
a
7
= 1 0; 0; 0
_
_
0
1
0
_
_
= 1;
c
3
= c
3

T
a
3
= 0 0; 0; 0
_
_
1
0
0
_
_
= 0; y
c
4
= c
4

T
a
4
= 0 0; 0; 0
_
_
0
1
0
_
_
= 0:
Todos los costes reducidos son no negativos por lo que se ha
llegado al ptimo de la fase I.
La base de partida de la fase II es
B = a
5
; a
1
; a
2
=
_
_
0 1 1
0 1 1
1 0 1
_
_
y N = a
3
; a
4
=
_
_
1 0
0 1
0 0
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
82/108
Fase II. Iteracin 1. Paso 1
Calculemos como siempre los multiplicadores simplex resolviendo
B
T
= c
B
:
=
_
_
0 0 1
1 1 0
1 1 1
_
_
1
_
_
0
1
2
_
_
=
_
_

1
2
1
2
1
2

1
2

1
2
1
2
1 0 0
_
_
_
_
0
1
2
_
_
=
_
_
1=2
3=2
0
_
_
:
Los costes reducidos de las variables no bsicas son
c
3
= c
3

T
a
3
= 0 1=2; 3=2; 0
_
_
1
0
0
_
_
=
1
2
; y
c
4
= c
4

T
a
4
= 0 1=2; 3=2; 0
_
_
0
1
0
_
_
=
3
2
:
Como c
3
y c
4
son negativos, no se ha llegado an al ptimo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
83/108
Fase II. Iteracin 1. Paso 2
Elegimos la variable no bsica x
4
como la que entra en la base.
Resolvamos el sistema By = a
4
:
y =
_
_
0 1 1
0 1 1
1 0 1
_
_
1
_
_
0
1
0
_
_
=
_
_

1
2

1
2
1
1
2

1
2
0
1
2
1
2
0
_
_
_
_
0
1
0
_
_
=
_
_
1=2
1=2
1=2
_
_
:
Fase II. Iteracin 1. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
1
y
1
;
x
B
2
y
2
_
= mn
_
3
2
1
2
;
1
2
1
2
_
= 1:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
84/108
Es decir, saldr x
B
2
= x
1
. Si se analiza la expresin
_
_
x
B
1
x
B
2
x
B
3
_
_
= B
1
b y =
_
_
x
5
x
1
x
2
_
_
=
_
_
3=2
1=2
3=2
_
_

_
_
1=2
1=2
1=2
_
_
;
tambin se comprueba que, efectivamente, la primera variable que
llega a cero al incrementar x
4
es x
1
, con = 1.
Fase II. Iteracin 1. Paso 4
Readaptemos la solucin y las estructuras de datos
correspondientes:
x
4
= 1
x
5
x
5
y
1
=
3
2
1
1
2
= 1
x
1
x
1
y
2
=
1
2
1
1
2
= 0
x
2
x
2
y
3
=
3
2
1
1
2
= 2:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
85/108
La nueva solucin es, por tanto,
_
_
_
_
_
_
x
1
x
2
x
3
x
4
x
5
_

_
=
_
_
_
_
_
_
0
2
0
1
1
_

_
con
B = a
5
; a
4
; a
2
=
_
_
0 0 1
0 1 1
1 0 1
_
_
y N = a
3
; a
1
=
_
_
1 1
0 1
0 0
_
_
:
Fase II. Iteracin 2. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
_
0 0 1
0 1 0
1 1 1
_
_
1
_
_
0
0
2
_
_
=
_
_
1 1 1
0 1 0
1 0 0
_
_
_
_
0
0
2
_
_
=
_
_
2
0
0
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
86/108
Los costes reducidos de las variables no bsicas son
c
3
= c
3

T
a
3
= 0 2; 0; 0
_
_
1
0
0
_
_
= 2; y
c
1
= c
1

T
a
1
= 1 2; 0; 0
_
_
1
1
0
_
_
= 3:
Todava no se ha llegado al ptimo.
Fase II. Iteracin 2. Paso 2
Elegimos la variable no bsica x
3
como la que entra en la base.
Resolvemos el sistema By = a
3
:
y =
_
_
0 0 1
0 1 1
1 0 1
_
_
1
_
_
1
0
0
_
_
=
_
_
1 0 1
1 1 0
1 0 0
_
_
_
_
1
0
0
_
_
=
_
_
1
1
1
_
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
87/108
Fase II. Iteracin 2. Paso 3
La variable bsica a salir de la base se obtendr de calcular
= mn
_
x
B
1
y
1
_
= mn
_
1
1
_
= 1:
es decir, saldr x
B
1
= x
5
. Vindolo a partir de la expresin
_
_
x
B
1
x
B
2
x
B
3
_
_
=
_
_
x
5
x
4
x
2
_
_
= b
1
b y =
_
_
1
1
2
_
_

_
_
1
1
1
_
_
;
se comprueba tambin que la primera variable que llega a cero al
incrementar x
3
es x
5
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
88/108
Fase II. Iteracin 2. Paso 4
Readaptemos la solucin y las estructuras de datos
correspondientes:
x
3
= 1
x
5
x
5
y
1
= 1 1 1 = 0
x
4
x
4
y
2
= 1 1 1 = 2
x
2
x
2
y
3
= 2 1 1 = 3:
La nueva solucin es
_
_
_
_
_
_
x
1
x
2
x
3
x
4
x
5
_

_
=
_
_
_
_
_
_
0
3
1
2
0
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
89/108
Las nuevas matrices:
B = a
3
; a
4
; a
2
=
_
_
1 0 1
0 1 1
0 0 1
_
_
: N = a
5
; a
1
=
_
_
0 1
0 1
1 0
_
_
:
Fase II. Iteracin 3. Paso 1
Calculemos los multiplicadores simplex resolviendo B
T
= c
B
:
=
_
_
1 0 0
0 1 0
1 1 1
_
_
1
_
_
0
0
2
_
_
=
_
_
1 0 0
0 1 0
1 1 1
_
_
_
_
0
0
2
_
_
=
_
_
0
0
2
_
_
:
Los costes reducidos de las variables no bsicas son
c
5
= c
5

T
a
5
= 0 0; 0; 2
_
_
0
0
1
_
_
= 2; y
c
1
= c
1

T
a
1
= 1 0; 0; 2
_
_
1
1
0
_
_
= 1:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
90/108
Todos los costes reducidos de las variables no bsicas son positivos
por lo que se ha alcanzado el nico ptimo del problema.
La solucin nal es
_
_
_
_
_
_
x
1
x
2
x
3
x
4
x
5
_

_
=
_
_
_
_
_
_
0
3
1
2
0
_

_
:
El valor ptimo de la funcin objetivo es 6.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
91/108
El proceso iterativo que se ha seguido se representa en la gura
x
1
x
2
P
c

2
3

1/2
3/2

0
1

0
3

h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
92/108
Solucin bsica factible inicial
Mtodo de penalizacin o de la gran M
Consiste en combinar en un proceso nico las fases I y II del
mtodo Smplex y resolver
min.
n

i =1
c
i
x
i
M
m

j =1
x
a
j
s. a Ax x
a
= b
x; x
a
_ 0:
La constante M se elige sucientemente grande de tal forma que
est muy penalizado que en la solucin x
a
= 0.
Eventualmente, si existe solucin factible del problema original, las
variables articiales sern cero en el ptimo de este problema.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
93/108
Esta alternativa tiene dos pegas:
La necesidad de escoger un determinado valor jo de M que
asegure que las variables articiales no van a estar en la base de
la solucin ptima.
v Un valor excesivamente grande de M, con respecto a los
coecientes 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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
94/108
Resolvamos con esta tcnica un ejemplo anterior:
min. x
1
2x
2
1000x
6
1000x
7
s. a x
1
x
2
x
3
x
6
= 2
x
1
x
2
x
4
x
7
= 1
x
2
x
5
= 3
x
1
; x
2
; x
3
; x
4
; x
5
; x
6
; x
7
_ 0:
Con el programa de Matlab que hemos presentado antes sera:
>> 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
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
95/108
sol =
0
3
1
2
0
0
0
fobj =
-6
pi =
0
0
-2
cr =
1000 1000 2 1
iters =
4
B =
3 4 2
N =
6 7 5 1
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
96/108
ndice
v Introduccin
v Condiciones de punto ptimo
v Mejora de una solucin bsica factible
v El algoritmo SIMPLEX
v Degeneracin y ciclado
v Solucin bsica factible inicial
v Anlisis de sensibilidad
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
97/108
Anlisis de sensibilidad
La solucin ptima de un programa lineal es como una fotografa
ja de una situacin que habitualmente oscila, o puede hacerlo, en
el tiempo.
Con un pequeo esfuerzo una vez obtenida la solucin se puede
conocer hasta qu punto ese ptimo seguir sindolo y qu
representa, en costes o benecios, determinadas oscilaciones de los
parmetros del problema.
Esto es frecuente estudiarlo cuando los costes de produccin de un
artculo deben variar en el tiempo al uctuar el precio de una
materia prima o, en general, cuando los datos del problema son
estimaciones ms o menos precisas de una realidad en la que
oscilan entre determinados mrgenes.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
98/108
Estudiemos cmo afecta a la solucin de un programa lineal el que
varen algunos de los parmetros que lo denen: en concreto,
modicaciones de los coecientes de la funcin objetivo c o en el
vector b.
Cambios en el vector de costes
Consideremos la familia de programas, funcin de un vector de
parmetros , denida por
min. c
T
x
s. a Ax = b
x _ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
99/108
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
c
N

N

T
c
B

B

T
B
1
N _ 0
T
:
Consideraremos los dos casos ms generales:
Que variable cuyo coeciente de coste vara no est en la base.
Que la variable cuyo coeciente de coste vara est en la base.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
100/108
1. La variable cuyo coeciente de coste vara no est en la base.
Para que los costes reducidos sigan siendo ptimos, es decir,
c
N

N

T
c
T
B
B
1
N _ 0
T
;
se tiene que cumplir que
c
T
N
c
T
B
B
1
N
T
N
= c
T
N

T
N
_ 0
T
:
Esto obliga a que el coeciente de coste slo pueda variar, hacia
abajo (decrecer), en una cantidad
i
igual al coste reducido de
la variable i que vara. Es decir

i
_ c
i
:
Hacia arriba podra variar hasta el innito.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
101/108
2. La variable cuyo coeciente de coste vara est en la base. La
condicin de optimalidad para los costes reducidos es ahora
c
T
N
c
B

B

T
B
1
N = c
T
N

T
B
B
1
N _ 0
T
:
El intervalo de valores
i
;
i
de cada variacin en el coste de
una variable en la base ser, si d =
_
B
1
.i;:/
N
_
T
(cada vector
la i del producto de la inversa de B por N):

i
=m ax
_
m ax
1_k_nm
{ c
k
=d
k
; d
k
> 0] ; o
_
_ _
mn
_
mn
1_k_nm
{ c
k
=d
k
; d
k
< 0] ; o
_
=
i
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
102/108
Cambios en el vector b
Consideremos el problema:
min. c
T
x
s. a Ax = b
x _ 0:
Al cambiar b, la solucin ptima variara as
x = x
T
B
x
T
N

T
=
_
_

bB
1

_
T
0
T
_
T
;
donde

b = B
1
b y B es la base ptima.
Esa base seguir siendo ptima en tanto y cuando sus coecientes
sigan siendo no negativos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
103/108
Para cada modicacin
i
del coeciente i del vector b, si
d = B
1
_
_
_
_
_
_
0
:
:
:
1
:
:
:
0
_

_
i = B
1
e
i
;
vector columna i -simo
de la inversa de la base
el intervalo
i
;
i
en el cual la solucin sigue siendo ptima es

i
= m ax
_
m ax
1_k_m

b
k
=d
k
; d
k
> 0
_
; o
_
_ _
mn
_
mn
1_k_m

b
k
=d
k
; d
k
< 0
_
; o
_
=
i
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
104/108
Ejemplo Supongamos que hemos resuelto el problema
min. 40x 53y
s. a 60x 80y _ 360
160x 120y _ 680
x; y _ 0:
La solucin completa es
x
B
=
_
_
_
_
2
3
0
0
_

_
; B =
_
60 80
160 120
_
; B
1
=
1
5600
_
120 80
160 60
_
;
N =
_
1 0
0 1
_
; =
1
560
_
368
2
_
y c =
1
560
_
368
2
_
:
La funcin objetivo es 239.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
105/108
1. Queremos saber para que rango de costes de la variable x la
solucin sigue siendo ptima.
v Como la variable x est en la base, cualquier cambio en ella,
c
x
c
x
, afecta al vector y al vector de costes reducidos
de las variables no bsicas, c.
v El vector d de las expresiones anteriores es
d = B
1
.1;:/
N =
1
5600
_
120 80
_
_
1 0
0 1
_
=
1
5600
_
120 80
_
:
v Los costes reducidos variarn de la siguiente manera.
c
1
560
_
368 2
_

1
5600
_
120 80
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
106/108
v Para que la solucin ptima anterior lo siga siendo, debe
cumplirse que
_
_
_
3680 120 _ 0
20 80 _ 0:
v Esto se cumple en el intervalo ; = 1=4; 92=3. El
coeciente de x puede moverse pues en el rango 39;75 70;67
para que la solucin siga siendo ptima.
2. Queremos saber adems, cunto puede variar el coeciente
360 del trmino independiente sin que cambie la base ptima, es
decir b
1
b
1
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
107/108
v El vector d es en este caso
d = B
1
_
1
0
_
=
1
5600
_
120
160
_
;
por lo que
x
B

_
2
3
_

1
5600
_
120
160
_
:
v La base ptima original seguir siendo ptima mientras x
B
sea
positiva; es decir, mientras
_
2
120
5600
_ 0
3
160
5600
_ 0:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
108/108
v Esto se cumple en el intervalo ; = 105 280=3, por lo
que el coeciente 360 puede variar entre 360 105 y
360 280=3 sin que cambie la solucin ptima del problema
original.
v El valor del multiplicador simplex
1
indica cmo vara la
funcin objetivo cuando coeciente 360 se mueve en ese rango
de valores:
z z
368
560
= 239
33
35
:

También podría gustarte