Вы находитесь на странице: 1из 107

h i j

d e f g
a b c
10 8 7
9 4 6 5
1 2 3
1/107
Mtodos Matemticos de Especialidad
Ingeniera Elctrica
Programacin Lineal
El mtodo SIMPLEX
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
Escuela Tcnica Superior de Ingenieros Industriales
Universidad Politcnica de Madrid
Clase_simplex_11.pdf
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
2/107
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/107
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 esos puntos es prohibitivo
dado el nmero posible de ellos:
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/107
George B. Dantzig, en 1947, culminando el trabajo de un
importante equipo de matemticos y economistas, desarroll 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/107
Condiciones de punto ptimo
Teorema. Condiciones de Karush-Kuhn-Tucker x R
n
es
el ptimo de
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/107
Es decir, hay que comprobar que se cumple:
La factibilidad del problema.
Que el gradiente de la funcin lagrangiana es cero.
La complementariedad de holguras.
La factibilidad la cumple la primera condicin: i.
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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
7/107
La complementariedad de holguras, iii, exige que sean cero aquellos
multiplicadores que corresponden a condiciones de no negatividad
no activas condiciones que no se satisfacen estrictamente.
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/107
Ordenando la matriz A de la forma A = B N y, en
concordancia, c
T
= c
T
B
c
T
N
, teniendo en cuenta que en el ptimo
la condicin
B
i
x
B
i
= 0; i = 1; : : : ; m, implica que

B
i
= 0; i = 1; : : : ; m (pues las variables bsicas son positivas),
las condiciones KKT se pueden reescribir as:
_
c
B
c
N
_

_
B
T
N
T
_
=
_
0

N
_
;
N
_ 0:
Equivalentes a:
c
B
= B
T

N
= c
N
N
T
;
N
_ 0;
o bien
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/107
En conclusin:

N
=c
N
N
T
B
T
c
B
=B
T
c
B
c
N
N
T
B
T
c
B
_ 0
1. En la terminologa de Programacin Lineal al vector de
multiplicadores de Lagrange de las condiciones Ax = b se le
denomina multiplicadores simplex.
2. A
N
, vector de los multiplicadores de Lagrange de las
condiciones x _ 0, se le denomina de costes reducidos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
10/107
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/107
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 una solucin bsica factible los m primeros coecientes de x
son no negativos bsicos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
12/107
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
:
El punto que dene esta solucin 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). Conuyen n m aristas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
13/107
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/107
OJO! Si la solucin es bsica degenerada, como 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 n 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/107
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/107
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/107
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/107
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/107
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,
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
>> [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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
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/107
Solucin bsica factible inicial
Mtodo de penalizacin o de la gran M
Consiste en combinar en una 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/107
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.
Que 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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
94/107
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/107
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/107
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/107
Anlisis de sensibilidad
Estudiemos cmo afecta a la solucin de un programa lineal el que
varen los parmetros que lo denen: en concreto, modicaciones de
los coecientes de la funcin objetivo c o en el vector b.
Esto es muy habitual cuando, por ejemplo, los costes de produccin
de un artculo deben variar 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 que los hace
uctuar.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
98/107
Cambios en el vector de costes
Consideremos la familia de programas, funcin del vector parmetro
, denida por
min. c
T
x
s. a Ax = b
x _ 0:
La base B de la solucin ptima del problema original sin el
parmetro 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
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
99/107
Hay que considerar entonces dos casos posibles:
Que la variable cuyo coeciente de coste vara no est en la
base. Es este caso, 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 hace que el coeciente de coste slo puede 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
100/107
Que la variable cuyo coeciente de coste vara est en la base.
Es este caso, la condicin de optimalidad para los costes
reducidos es
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 (cada vector la i
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
101/107
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 de acuerdo con la
expresin
x
T
= x
T
B
x
T
N
=
_

b
T
B
1
0
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
102/107
Para cada modicacin
i
del coeciente i del vector b, si
d = B
1
_
_
_
_
_
_
0
:
:
:
1
:
:
:
0
_

_
i = B
1
e
i
;
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
103/107
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
104/107
Queremos saber para que rango de costes de la variable x la
solucin sigue siendo ptima.
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.
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
_
:
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
105/107
Para que la solucin ptima anterior lo siga siendo, debe cumplirse
que
_
_
_
3680 120 _ 0
20 80 _ 0:
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.
Adems, queremos saber 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
106/107
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
_
:
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
107/107
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.
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
:

Вам также может понравиться