Está en la página 1de 50

PROGRAMACI

ON LINEAL
enero junio 2011
Introducci on al metodo simplex
Nota
La siguiente es una introducci on breve al metodo simplex. El procedimiento que se presenta
no es el metodo simplex per ce ya que su empleo es solamente util para resolver programas
lineales con un n umero peque no de variables de decisi on y de restricciones; sin embargo, la idea
central del procedimiento forma la base para el algoritmo simplex.
Estas notas se han escrito para guiar a los alumnos al resolver algunos de los problemas de
la tarea y como ayuda al estudiar el metodo simplex. No es una substituci on de las clases en las
cuales se han discutido con cuidado todos los conceptos que aqu no se mencionan o bien solo se
tocan supercialmente.
1. Preliminares
Considere el siguiente programa lineal escrito en forma estandar,
min
x
(x) = c
t
x,
tal que
Ax = b ,
x 0 ,
en donde x, c R
n
, A R
mn
, b R
m
, r(A) = m
1
. se denomina funcion objetivo.
Recordemos que el poliedro R := {x R
n
: Ax = b, x 0} es la denominada region de factibilidad del
programa lineal. Si R =
_
entonces decimos que el programa lineal no es factible (o es infactible); si
R =
_
, entonces cualquier punto x R se denomina solucion factible.
Supongamos que {A
j(1)
, . . . A
j(m)
} es un subconjunto de m columnas de A la cuales forman una base
para su espacio columna, note que la eleccion de estas columnas no es unica. Sea
B :=
_
A
j(1)
A
j(m)

,
una submatriz de A formada por la base elegida del espacio columna de A. Observe que B R
mm
es
invertible. Sea
x
B
:= [x
j(1)
. . . x
j(m)
]
t
,
un subconjunto de las componentes de x cuyos ndices corresponden a los ndices de la base para el
espacio columna de A y sea
x
N
:= [x
k(1)
. . . x
k(mn)
]
t
,
el resto de las componentes de x que no forman parte de x
B
; es decir, si denimos los conjuntos de
ndices J = {j(1), . . . j(m)}, K = {k(1), . . . k(m n)}, entonces J K = N(n) := {1, 2, . . . , n} y
J K =
_
(entonces K = N(n)/J). Como ya hicimos notar arriba, si el programa lineal es factible
entonces podra haber mas de una forma de denir los conjuntos de ndices J y K; sin embargo, hay a lo
Date: April 5, 2011.
1
rango de A, es decir, la dimension del espacio columna de A. Esta suposicion no es necesaria y se ha tomado solamente
por conveniencia en la claridad de la exposicion
1
PROGRAMACI

ON LINEAL 2
mas
_
n
m
_
=
n!
(nm)!m!
formas distintas de denir tales juegos de ndices. Las componentes del vector
x
B
se denominan variables basicas
2
y las componentes del vector x
N
se denominan variables no basicas.
En la siguiente seccion, la siguiente matriz jugara un papel tan importante como el de B:
N :=
_
A
k(1)
A
k(nm)

;
es decir, N esta formada por el conjunto de columnas de A que no se utilizaron para formar a la matriz
B; k() K, = 1, . . . n m.
Dado b R
m
y un conjunto de ndices J (correspondiente a una eleccion de una base para el espacio
columna de A), si el programa lineal es factible entonces existe un unico x
B
= x
0
B
denido como arriba,
tal que Bx
B
= b, en donde B es la matriz denida anteriormente. En tal caso llamamos al vector
x
0
=
_
x
0
B
0
_
solucion factible basica; note que 0 R
nm
y corresponde a tomar x
N
= 0. Es importante observar que
las componentes de x
0
no estan ordenadas de la misma forma en la que lo estan las componentes de x,
en tal caso, existe una matriz de permutacion P tal que el ordenamiento de las coordenadas de vector
Px
0
s corresponde con aquel que tienen las coordenadas del vector x, entonces APx
0
= b
3
. Mas a un,
dado que hay a lo mas n!/(n m)!m! formas distintas de denir el conjunto de ndices J, el conjunto de
soluciones factibles basicas tambien esta acotado superiormente por este mismo n umero.
Supongamos que el programa lineal es factible, es decir, R =
_
. La siguiente es una lista de resultados
demostrados en clase:
(i) Si R es acotada, entonces el programa lineal alcanza su mnimo (punto optimo) en un vertice de R,
dicho vertice corresponde a una solucion factible basica. Recprocamente, si x
0
es una solucion factible
basica del programa lineal, entonces esta corresponde a un vertice de la region de factibilidad R (el cual
no es necesariamente un punto optimo).
(ii) R no es acotada si y solo si, dado cualquier punto p sobre R existe por lo menos una direccion d R
n
tal que x(t) = p + sd R para todo s 0. d se denomina una direccion de R, d es tal que Ad = 0; es
decir, d pertenece al n ucleo de A. En general, si R no es acotada el conjunto de todas sus direcciones
linealmente independientes tiene cardinalidad igual o mayor que uno.
(iii) Si no esta acotada inferiormente sobre R, entonces R no es acotada y decimos que el optimo se
alcanza en innito y que el valor optimo de es menos innito (). En tal caso existe una solucion
factible basica x
0
y una direccion d tal que g(s) := (Px
0
+sd), en donde P es una matriz de permutacion
como se denio anteriormente, es estrictamente decreciente y no acotada inferiormente.
2. El mecanismo b asico del m etodo simplex
El algoritmo simplex se basa en el procedimiento detallado a continuacion, el cual se discutio ampliamente
en clase, aqu simplemente sera expuesto y posteriormente discutiremos brevemente las condiciones que
bajo las cuales tal procedimiento se detiene.
Supongamos que x
0
= [x
t
B
x
t
N
]
t
, x
N
= 0 R
nm
, es una solucion basica factible del programa lineal
estandar denido al inicio de la seccion anterior. Entonces existen matrices B R
mm
y N R
m(nm)
tales que
Bx
B
+Nx
N
= b .
En la ecuacion anterior, hemos decidido escribir explicitamente el vector x
N
a pesar de ser un vector
nulo ya que nuestro objetivo sera el de construir otra solucion factible basica x
1
a partir de x
0
, mediante
2
porque corresponden a una elecci on de columnas de A las cuales forman una base para su espacio columna o rango
3
no hemos querido utilizar negritas para denotar a la matriz de permutaci on P ya que el papel que estas matrices de
permutacion juegan dentro del algoritmo simplex es practicamente nulo
PROGRAMACI

ON LINEAL 3
incrementar (desde cero) el valor de alguna de las componentes del vector x
N
, de forma tal que el valor
de la funcion objetivo disminuya. Por supuesto que este proceso requerira de cambiar los valores de las
coordenadas del vector x
B
.
Sea entonces x
1
= [x
t
B
x
t
N
]
t
, en donde ahora no todas las componentes de x
N
son nulas. Resolviendo
para x
B
se tiene,
(1) x
B
= x
B
(x
N
) = B
1
b B
1
Nx
N
;
observe que jando x
N
= 0 en (1) se traduce en x
1
= x
0
.
Denamos los vectores c
B
y c
N
a partir del vector de pesos c de la funcion objetivo de la siguiente manera,
c
B
=
_
c
j(1)
, c
j(m)

t
, c
N
=
_
c
k(1)
, c
k(nm)

t
;
es decir, c = P[c
t
B
c
t
N
]
t
en donde P es la misma matriz de permutacion que escribe las coordenadas de x
0
en su orden original (el orden del vector x); equivalentemente, j() J y k() K. Entonces
(2) (Px
1
) = c
t
B
x
B
+ c
t
N
x
N
.
Substituyendo x
B
de (1) en (2) y reordenando obtenemos
(Px
1
) = c
t
B
B
1
b (c
t
B
B
1
Nc
t
N
)x
N
.
Observe que c
t
B
B
1
b = (Px
0
), entonces
(Px
1
) = (Px
0
) (c
t
B
B
1
Nc
t
N
)x
N
,
entonces para lograr que x
1
resulte en una solucion factible basica con un valor objetivo menor que el de
x
0
, es suciente con modicar x
N
de la siguiente manera:
(i) identique la componente positiva mas grande del vector renglon c
t
B
B
1
Nc
t
N
, observe que podra
haber mas de una tal componente (cuando dos componentes tienen el mismo valor), en tal caso escoja
una; supongamos que la componente identicada se encuentra en la posicion r. Si el vector no tuviese
componentes positivas entonces la solucion factible basica con la que se comenzo ya es la optima.
(ii) haga x
t
N
= [0 0 1 0 . . . 0]x
k(r)
, en donde el n umero uno se encuentra en la posicion r; es de-
cir, x
N
= e
r
x
k(r)
, en donde e
r
representa al vector r de la base canonica para R
nm
.
(iii) substituya x
N
= e
r
x
k(r)
en (1) e imponga la restriccion tecnica x
B
0,
(3) 0 x
B
= x
B
(x
N
) = B
1
b B
1
N
r
x
k(r)
;
en donde N
r
representa la columna r de N, es decir N
r
= A
k(r)
. Observe que B
1
b 0 por hipotesis
(x
0
es una solucion factible basica). Incremente el valor del parametro x
k(r)
desde cero hasta que ocurra
por primera vez que alguna de las componentes positivas de x
B
se anule. Note que podra ser el caso que
dos o mas componentes se anulen simultaneamente, si eso sucede, escoja una, digamos x
j(s)
. Observe
que podemos calcular el valor exacto de x
k(r)
para el cual ocurre que se anule por vez primera alguna de
las componentes de x
B
. En efecto,
(4) x
k(r)
= min
_
(B
1
b)

(B
1
N
r
)

: (B
1
N
r
)

> 0
_
.
Supongamos que el mnimo de las cantidades del lado derecho de la ecuacion anterior se alcanza cuando
= s, entonces la componente anulada de x
B
es x
j(s)
.
(iv) El proceso anterior construye una nueva solucion factible basica, x
1
= [(x
1
B
)
t
(x
1
N
= 0)
t
]
t
, en
donde
x
1
B
= [x
1
j(1)
x
1
j(s1)
x
k(r)
x
1
j(s+1)
x
1
j(m)
]
t
,
es tal que x
k(r)
esta dado por (4) y el resto de las componentes han sido actualizadas de acuerdo con la
ecuacion (3). Notemos que en efecto, podemos pensar que las variables x
k(r)
(no basica) y x
j(s)
(basica)
han intercambiado papeles.
PROGRAMACI

ON LINEAL 4
Los pasos descritos anteriormente corresponden a una iteracion del algoritmo simplex. Este proceso se
repite (siguiente iteracion) tomando a x
1
como solucion basica inicial. Notese que las matrices B y N as
como los vectores c
B
y c
N
tambien deben de actualizarse de acuerdo con el nuevo juego de ndices, J
1
=
{j(1), . . . , j(s1), k(r), j(s+1), . . . , j(m)} y K
1
= {k(1), . . . , k(r 1), j(s), k(r +1), . . . , k(nm)}. El
proceso se detiene cuando todas las componentes del vector c
t
B
B
1
Nc
t
N
son negativas (el punto optimo
ya ha sido alcanzado y es unico), o bien cuando todas las componentes del vector B
1
N
r
son negativas
(el punto optimo se encuentra en innito, es decir, R no es acotada, y no es acotada inferiormente).
Observe que si todas las componentes de c
t
B
B
1
Nc
t
N
son negativas salvo alguna que es cero, esto quiere
decir que podemos intercambiar la variable no basica correspondiente con alguna basica
4
sin modicar el
valor de la funcion objetivo, en tal caso el punto optimo no es unico.
Los casos degenerados, por ejemplo, condiciones estructurales redundantes o el caso de ciclicidad, seran
discutidos en otra parte.
Con este preambulo el alumno puede comenzar a tratar los primeros ejercicios del problemario 2 (cf.
ejercicios de muestra en la pagina web).
Preguntas: Jorge Viveros. Centro de Investigaci on en Matem aticas, Universidad Aut onoma del Estado de
Hidalgo. Hgo, M exico.
E-mail address: jviveros@uaeh.edu.mx
4
esto se tiene que demostrar y se deja como ejercicio para el lector
Programacin lineal, enero-junio 2011, UAEH
Ejemplo 3.6, p. 103 (Bazaraa-Jarvis)
Solucin ptima nica
min -3x
1
+ x
2
tal que x
1
+ 2x
2
+ x
3
= 4
-x
1
+ x
2
+ x
4
= 1
x
1
, x
2
, x
3
, x
4
0
>> A=[1 2 1 0 ; -1 1 0 1], b=[4 ; 1], c=[-3 1 0 0]
A =
1 2 1 0
-1 1 0 1
b =
4
1
c =
-3 1 0 0
>> J=[1 2]; K=[3 4]; escoge ndices bsicos y no bsicos
>> B=A(:,J); iB=inv(B); y=iB*b
y =
0.6667 se !"oduce soluci#n $actible bsica
1.6667 %x
1
,x
2
,x
3
,x
4
& = %0'(((),1'(((),0,0&
>> xB=y; =A(:,K); cB=c(J); c=c(K); !"iv#$=cB*xB
!"iv#$ =
-0.3333 *alo" de la $unci#n ob+eti*o en la soluci#n $actible bsica actual
>> cB*iB*-c
#n% =
-0.6667 2.3333
>> &=2; identi$ica x
4
como *a"iable ,ent"ante- %se con*e"ti" en bsica&
1
Programacin lineal, enero-junio 2011, UAEH
>> c"x'&=(iB*b).((iB*(:,&))
c"x'& =
-1.0000
).0000
>> %=2; identi$ica x
2
como *a"iable ,saliente- %se con*e"ti" en no bsica&
>> x'&=c"x'&(%)
x'& =
) x
4
inc"ementa su *alo" desde ce"o .asta cinco'
>> xB=iB*(b-(:,&)*x'&)
xB =
4
0
>> xB(%)=x'&; xB actuali/a el *ecto" de *a"iables bsicas y sus *alo"es
xB =
4 = x
1
) = x
4
>> Jn=K(&); Kn=J(%); J(%)=Jn; K(&)=Kn; actuali/a *ecto"es de ndices bsicos y no
bsicos
>> J, K
J =
1 4
K =
3 2
>> cB=c(J); c=c(K);
>> !"iv#$=cB*xB
!"iv#$ =
-12 *alo" de $unci#n ob+eti*o en nue*o !unto ext"emo %4,0,0,0&
2
Programacin lineal, enero-junio 2011, UAEH
>> B=A(:,J); =A(:,K);
>> iB=inv(B);
>> cB*iB*-c
#n% =
-3 -7 las *a"iables no bsicas %x
2
,x
3
& deben !e"manece" en ce"o o de ot"a $o"ma el *alo"
de la $unci#n ob+eti*o aumenta"a' e .a alcan/ado el #!timo'
Solucin ptima no nica
min -2x
1
- 4x
2
tal que x
1
+ 2x
2
+ x
3
= 4
-x
1
+ x
2
+ x
4
= 1
x
1
, x
2
, x
3
, x
4
0
>> A=[1 2 1 0 ; -1 1 0 1], b=[4 ; 1], c=[-2 -4 0 0]
A =
1 2 1 0
-1 1 0 1
b =
4
1
c =
-2 -4 0 0
>> J=[1 2]; K=[3 4]; escoge ndices bsicos y no bsicos
>> B=A(:,J); iB=inv(B); y=iB*b
y =
0.6667 = x
1
la elecci#n de *a"iables bsicas s !"odu+o una soluci#n $acible bsica
1.6667 = x
2

>> xB=y; =A(:,K); cB=c(J); c=c(K);
>> !"iv#$=cB*xB
!"iv#$ =
-* *alo" de la $unci#n ob+eti*o en actual !unto $actible bsico,
3
Programacin lineal, enero-junio 2011, UAEH
%x
1
,x
2
,x
3
,x
4
&=%0'(((),1'(((),0,0&
>> cB*iB*-c
#n% =
-2 0 1n este !aso nos damos cuenta de que el !unto es #!timo, ya que solamente
!od"amos inc"ementa" el *alo" de la *a"iable x
4
desde ce"o y en el !"oceso el *alo" de la $unci#n
ob+eti*o !e"manece" igual' 2o" la misma "a/#n, el !unto #!timo no es 3nico'
4.o"a encont"a"emos ot"o !unto inc"ementando el *alo" de x
45
>> &=2;
>> c"x'&=(iB*b).((iB*(:,&))
c"x'& =
-1.0000
).0000 detecta *a"iable ,saliente- %bsica a con*e"ti"se en no bsica, x
2
&
>> %=2;
>> x'&=c"x'&(%); xB=iB*(b-(:,&)*x'&)
xB =
4
0
>> xB(%)=x'&; xB actuali/a el *ecto" de *a"iables bsicas
xB =
4 = x
1
) = x
4
>> Jn=K(&); Kn=J(%); J(%)=Jn; K(&)=Kn; actuali/a *ecto"es de ndices bsicos y no
bsicos
>> J, K
J =
1 4
K =
3 2
4
Programacin lineal, enero-junio 2011, UAEH
>> cB=c(J); c=c(K);
>> !"iv#$=cB*xB
!"iv#$ =
-* *alo" de la $unci#n ob+eti*o en el actual !unto $actible bsico %x
1
,x
2
,x
3
,x
4
&=%4,0,0,0&'
6ote que este *alo" es el mismo que el *alo" en el !unto inicial, como se .abia antici!ado a""iba'
78u9 !asa"ia si sigui9"amos a!licando el algo"itmo:
1n tal caso !"oduci"amos ms !untos ext"emos y en alg3n momento estos comen/a"an a "e!eti"se ya
que la "egi#n de $actibilidad %!oli9d"ica& tiene un n3me"o $inito de *9"tices'
>> B=A(:,J); =A(:,K); iB=inv(B);
>> cB*iB*-c
#n% =
-2 0
>> &=2; identi$ica la segunda *a"iable no bsica %x
2
& como ,ent"ante,- al igual que antes, el *alo"
de la $unci#n ob+eti*o !e"manece" inalte"ado'
>> c"x'&=(iB*b).((iB*(:,&))
c"x'& =
2.0000
1.6667 com!onente !ositi*a ms !eque;a
>> %=2; identi$ica la segunda com!onente de x< %x
4
& como ,saliente-'
1n este !unto, ya nos damos cuenta de que *amos a "e!eti" la soluci#n que se obut*o al !"inci!io !ues
el nue*o *ecto" de *a"iables bsicas se"a x<=%x
1
,x
3
& y las soluciones bsicas $actibles son 3nicas'
>> x'&=c"x'&(%); xB=iB*(b-(:,&)*x'&); xB(%)=x'&; xB actuali/a *ecto" de
*a"iables bsicas
xB =
0.6667 = x
1
1.6667 = x
2
>>
Nota: en gene"al, cuando todos los !untos sob"e una ca"a de la "egi#n !oli9d"ica son !untos ext"emos,
el m9todo ante"io" encuent"a todos los *9"tices sob"e esa ca"a'
2"eguntas5 +viv,&-%./#,".,0/.1x
0
Programacin lineal, enero-junio 2011, UAEH
Ejemplo 3.7, p.106 (Bazaraa-Jarvis)
Solucin no acotada
Programa lineal original Programa lineal equivalente
mn -x
1
-3x
2
mn -x
1
-3x
2
+ 0x
3
+ 0x
4
tal que x
1
-2x
2
4 tal que x
1
-2x
2
+ x
3
= 4
-x
1
+ x
2
3 -x
1
+ x
2
+ x
4
= 3
x
1
, x
2
0 x
1
, x
2
, x
3
, x
4
0
>> A=[1 -2 1 0 ; -1 1 0 1], b=[4 ; 3], c=[-1 -3 0 0]
A =
1 -2 1 0
-1 1 0 1
b =
4
3
c =
-1 -3 0 0
>> J=[1 2]; K=[3 4]; B=A(:,J); iB=inv(B); y=iB*b
y =
-10 La eleccin !e x
1
" x
2
como varia#le$ #%$ica$ no &ro!uce una $olucin 'acti#le(
-7
>> J=[1 3]; K=[2 4]; B=A(:,J); iB=inv(B); y=iB*b
y =
-3 La eleccin !e x
1
" x
3
como varia#le$ #%$ica$ no &ro!uce una $olucin 'acti#le(
7
>> J=[1 4]; K=[2 3]; B=A(:,J); iB=inv(B); y=iB*b
y =
4 La eleccin !e x
1
" x
4
como varia#le$ #%$ica$ s &ro!uce una $olucin 'acti#le
7 )*$te e$ nue$tro &unto !e &arti!a+
1
Programacin lineal, enero-junio 2011, UAEH
>> xB=y; cB=c(J); cN=c(K); N=A(:,K);
>> piv!"=cB*xB
piv!" =
-4 valor !e la 'uncin o#,etivo en el &unto extremo )4,0,0,-+
>> cB*iB*N-cN
!n# =
$ -1
>> %=1; !etermina que la &rimera varia#le !e x.=)x
2
,x
3
+ e$ /entrante0
>> cx&%=(iB*b)'((iB*N(:,%))
cx&% =
-2 .o &ue!e !eterminar varia#le $aliente )iB*N(:,%))0+
-7
>> iB*N(:,%) veri'ica que e$te vector e'ectivamente e$ negativo
!n# =
-2
-1
1e lo anterior $e !e$&ren!e que la varia#le x
2
&ue!e $er incrementa!a !e$!e cero !e manera in!e'ini!a
$in ,am%$ violar la re$triccin !e no negativi!a! !e la$ varia#le$( 2 me!i!a que x
2
incrementa $u valor,
la 'uncin o#,etivo !ecrece !e manera montona " $in cota in'erior(
Por lo tanto el &rograma lineal e$ no acota!o )i(e(, la 'uncin o#,etivo no e$t% acota!a !entro la regin
!e 'acti#ili!a! la cual no e$ acota!a( /3alor o#,etivo e$ meno$ in'inito " e$te $e alcan4a en in'inito0+(
Nota: el ra"o con v5rtice en )4,0,0,-+ " !ireccin !=[2 1 0 1]* "ace !entro !e la regin !e
'acti#ili!a!( ! e$ un vector en el n6cleo !e A " &or lo tanto una !ireccin !e la regin !e 'acti#ili!a! )!e
7ec7o, e$ta !ireccin e$ extrema+(
Pregunta$8 +viv,%-#./!,',0/'1x
2
Programacin lineal, enero-junio 2011. UAEH
Problema 3.4, p.125. Bazaraa & Jarvis
Nota: a continuacin se resuelve este ejercicio de nuestro libro de texto siguiendo las instrucciones
especficas; es decir, encontrando primero todos los puntos extremos de la regin de factibilidad y
evaluando la funcin objetivo en cada punto.
El argumento anterior para encontrar el punto ptimo si es vlido en este caso porque la regin de
factibilidad, R, es acotada. Un argumento sencillo para verificar esto es el siguiente
si R no fuese acotada, podemos encontrar puntos en R cuyas coordenadas son arbitrariamente grandes;
es decir, para cualquier n!mero entero positivo ", existe un punto en R de la forma #x
$
,x
%
,x
&
' para el
cual se verifica que
max(x
$
,x
%
,x
&
) * ".
+or otra parte, la primera condicin estructural del programa lineal es
x
$
, x
%
,%x
&
- ..
/upongamos entonces que R no es acotada y tomemos "01, entonces, dado que
x
$
, x
%
y x
&
no son negativas, existe un punto en R cuyas coordenadas
satisfacen lo siguiente
x
$
, x
%
,%x
&
2 x
$
, x
%
,x
&
2 max(x
$
,x
%
,x
&
) * 1 * .; es decir, existe un punto
en R para el cual se tiene que
x
$
, x
%
,%x
&
* .
lo cual viola la primera condicin estructural, entonces R es acotada.
34ora encontramos todos los puntos extremos de R con ayuda de 5atlab. 3 continucin todas las
lineas en color a6ul fueron obtenidas directamente con 5atlab.
>> A = [1 1 2 1 0 ; 1 4 -1 0 1], b=[6 ; 4], c=[2 1 -1 0 0]
A =
1 1 2 1 0
1 4 -1 0 1
b =
6
4
c =
2 1 -1 0 0
>> J1=[1 2]; B=A(:,J1); iB=inv(B); y1=iB*b
y1 =
$
Programacin lineal, enero-junio 2011. UAEH
6.6667
-0.6667 7 negativo, entonces y1 no est asociado con un punto en R
>> J2=[1 3]; B=A(:,J2); iB=inv(B); y2=iB*b
y2 =
4.6667 0 x
$
0.6667 0 x
&
8 punto extremo asociado en R #x
$
,x
%
,x
&
'0#9....1, :, :....1'
>> J3=[1 4]; B=A(:,J3); iB=inv(B); y3=iB*b
y3 =
4 0 x
$
2 0 x
9
8 punto extremo asociado en R #x
$
,x
%
,x
&
'0#9,:,:'
>> J4=[1 5]; B=A(:,J4); iB=inv(B); y4=iB*b
y4 =
6
-2 7 negativo, entonces y4 no est asociado con un punto en R
>> J5=[2 3]; B=A(:,J5); iB=inv(B); y5=iB*b
y5 =
1.5556 0 x
%
2.2222 0 x
&
8 punto extremo asociado en R #x
$
,x
%
,x
&
'0#:, $.;;;., %.%%%%'
>> J6=[2 4]; B=A(:,J6); iB=inv(B); y6=iB*b
y6 =
1 0 x
%
5 0 x
9
8 punto extremo asociado en R #x
$
,x
%
,x
&
'0#:,$,:'
>> J7=[2 5]; B=A(:,J7); iB=inv(B); y7=iB*b
y7 =
6
-20 7 negativo, entonces y7 no est asociado con un punto en R
>> J8=[3 4]; B=A(:,J8); iB=inv(B); y8=iB*b
%
Programacin lineal, enero-junio 2011. UAEH
y8 =
-4 7 negativo, entonces y8 no est asociado con un punto en R
14
>> J=[3 5]; B=A(:,J); iB=inv(B); y=iB*b
y =
3 0 x
&
7 0 x
;
8 punto extremo asociado en R #x
$
,x
%
,x
&
'0#:, :, &'
>> J10=[4 5]; B=A(:,J10); iB=inv(B); y10=iB*b
y10 =
6 0 x
9
4 0 x
;
8 punto extremo asociado en R #x
$
,x
%
,x
&
'0#:, :, :'
>> !"i=[c(J2)*y2 c(J3)*y3 c(J5)*y5 c(J6)*y6 c(J)*y c(J10)*y10]
la linea anterior calcula el valor de la funcin objetivo en cada uno de los puntos extremos de R.
!"i =
8.6667 8.0000 -0.6667 1.0000 -3.0000 0
<a componente ms grande es la primera, entonces la funcin objetivo alcan6a su alor m!"imo en R
en el punto extremo asociado con y2, es decir, #x
$
,x
%
,x
&
'0#9....1, :, :....1'
<a componente ms peque=a es la pen!ltima, entonces la funcin objetivo alcan6a su valor mnimo en
R en el punto extremo asociado con y, es decir, #x
$
,x
%
,x
&
'0#:, :, &'.
>bserve que las dos !ltimas afirmaciones son compatibles con los resultados reportados en el ejercicio
de muestra anterior.
/i a4ora la primera restriccin estructural fuese reempla6ada por x
$
,x
%
? %x
&
- . entonces nuestra
demostracin de que R no es acotada ya no se aplica y por lo tanto ya no podemos garanti6ar que si
utili6amos el m@todo anterior para encontrar todos los puntos extremos de R, entre estos se encuentren
los puntos ptimos que dan un mximo y un mnimo para la funcin objetivo.
Este documento fu@ creado utili6ando >pen >ffice Ariter. /oftAare tipo 5icrosoft >ffice es, en general, tortuoso para
escribir matemticas.
+reguntas Borge Civeros. #viv$%&'()*$".$+).,-
&
Programacin lineal, enero-junio 2011, UAEH
Ejemplo 3.35, p.132 (Bazaraa & Jarvis)
max 11x
1
+ 2x
2
x
3
+ 3x
4
+4x
5
+ x
6
tal que
5x
1
+ x
2
x
3
+ 2x
4
+ x
5
= 12
-14x
1
3x
2
+ 3x
3
5x
4
+ x
6
= 2
2x
1
+
1
2
x
2

1
2
x
3
+
1
2
x
4

5
2
3x
1
+
1
2
x
2
+
1
2
x
3
+
3
2
x
4
3
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
0
Programa lineal de minimizai!n equi"alente#
min 11x
1
2x
2
+ x
3
3x
4
4x
5
x
6
tal que
5x
1
+ x
2
x
3
+ 2x
4
+ x
5
= 12
-14x
1
3x
2
+ 3x
3
5x
4
+ x
6
= 2
2x
1
+
1
2
x
2

1
2
x
3
+
1
2
x
4
+ x
$
=
5
2
3x
1
+
1
2
x
2
+
1
2
x
3
+
3
2
x
4
+ x
%
= 3
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
, x
$
, x
%
0
>> r1=[5 1 -1 2 1 0 0 0]; r2=[-14 -3 3 -5 0 1 0 0]; r3=[2 1/2 -1/2 1/2 0 0 1 0];
>> r4=[3 1/2 1/2 3/2 0 0 0 1];
>> A=[r1;r2;r3;r4], b=[12 2 5/2 3]', c=[-11 -2 1 -3 -4 -1 0 0]
A =
5.0000 1.0000 -1.0000 2.0000 1.0000 0 0 0
-14.0000 -3.0000 3.0000 -5.0000 0 1.0000 0 0
2.0000 0.5000 -0.5000 0.5000 0 0 1.0000 0
3.0000 0.5000 0.5000 1.5000 0 0 0 1.0000
&'ote que el rango de ( e) igual a uatro*
b =
12.0000
2.0000
2.5000
3.0000
c =
-11 -2 1 -3 -4 -1 0 0
>> J=[5 6 7 8]; K=[1 2 3 4]; B=A(:,J); iB=i!(B); "=iB#b + de,ine etiqueta) -.)ia)
/ no -.)ia) / "eri,ia )i el "etor / 0uede )er tomado omo )olui!n ,ati-le -.)ia iniial
1
Programacin lineal, enero-junio 2011, UAEH
" =
12.0000 = x
5
2.0000 = x
6
2.5000 = x
$
3.0000 = x
%
+ toda) la) om0onente) de " )on ma/ore) o iguale) a ero, entone) 0uede )er
tomado omo )olui!n ,ati-le -.)ia iniial ($B=")1 'o) enontramo) en el 0unto on oordenada)
&0 , 0, 0, 0, 12, 2, 215, 3* en el 2e)0aio extendido34 e) deir, el e)0aio de la) "aria-le) de dei)i!n /
de 5olgura1
Comienza la primera iteracin:
>> $B=";
>> %=A(:,K); cB=c(J), c%=c(K)
cB =
-4 -1 0 0 + om0onente -.)ia del "etor de o)to) c
c% =
-11 -2 1 -3 + om0onente no -.)ia del "etor de o)to) c
>> &'i!()=cB#$B + e"alua la ,uni!n o-6eti"o en 0unto iniial,
&'i!() =
-50 + "alor o-6eti"o iniial &trataremo) de 0roduir nue"a) )oluione) ,ati-e)
-.)ia) u/o) "alore) o-6eti"o) )ean e)tritamente menore) que e)te1
>> cB#iB#%-c%
(* =
5 1 0 0 + la 0re)enia de ero) india que e) 0o)i-le enontrar otro) "7rtie)
de la regi!n de ,ati-ilidad u/o) "alore) o-6eti"o) )on lo) mi)mo) que lo) de la )olui!n ,ati-le
-.)ia iniial, 0ero la 0re)enia de oe,iiente) 0o)iti"o) india que e) 0o)i-le enontrar "7rtie) lo)
uale) tendr.n "alore) o-6eti"o) e)tritamente menore) que lo) de la )olui!n ,ati-le iniial, a)8 que
no) daremo) a la tarea de enontrar 0or lo meno) un tal "7rtie1
>> r=1; + e)oge la 0rimera "aria-le no -.)ia, x
1
, omo entrante /a que inrementando e)ta de)de
ero o-tendremo) un dereimiento ma/or de la ,uni!n o-6eti"o que )i inrement.ramo) la )egunda
"aria-le no -.)ia &x
2
*1

>> c'$+r=(iB#b)./(iB#%(:,r))
c'$+r =
2.4000
-0.142,
2
Programacin lineal, enero-junio 2011, UAEH
1.2500
1.0000
>> *=4; + e)oge a la uarta "aria-le -.)ia, x
%
, omo )aliente, e)ta "aria-le tam-i7n ,unge omo
"aria-le de -loqueo en e)te 0a)o &)er. reem0lazada 0or x
11
9)ta 0arte orre)0onde a la 0rue-a de lo)
oiente)*1
>> $+r=c'$+r(*)
$+r =
1 + e)te e) el "alor al ual inrementaremo) de)de ero a x
1
, el ual orre)0onde al "alor 0ara
el ual x
%
)e anula1
>> $B=iB#(b-%(:,r)#$+r) + atualiza lo) "alore) del "etor de "aria-le) -.)ia)
$B =
7.0000
16.0000
0.5000
0
>> $B(*)=$+r; $B + rede,ine al "etor de "aria-le) -.)ia) / )u) "alore)1
$B =
7.0000 = x
5
16.0000 = x
6
0.5000 = x
$
1.0000 = x
1
>> J=K(r); K=J(*); J(*)=J; K(r)=K; + atualiza lo) 8ndie) -.)io) / no -.)io)
>> J, K
J =
5 6 7 1
K =
8 2 3 4
>> cB=c(J); c%=c(K); + atualiza la) 0arte) -.)ia) / no -.)ia) del "etor de o)to)
>> &'i!()=cB#$B + alula el nue"o "alor o-6eti"o
&'i!() =

-55 + e,eti"amente el 0unto enontrado orre)0onde a un "alor o-6eti"o menor que el anterior
&in !e la primera iteracin*
3
Programacin lineal, enero-junio 2011, UAEH
Comienza se"#n!a iteracin rede,iniendo la) matrie) B / % / determinando )i aa)o e) 0o)i-le
enontrar otra )olui!n ,ati-le -.)ia u/o "alor o-6eti"o )ea menor que el de la )olui!n atual1
>> B=A(:,J); %=A(:,K); iB=i!(B);
>> cB#iB#%-c%
(* =
-1.6667 0.1667 -0.8333 -2.5000 + la 0re)enia de una om0onente 0o)iti"a india
que e) 0o)i-le enontrar otra 0unto extremo u/o "alor o-6eti"o )ea menor que el anterior1 :al 0unto
extremo )e o-tendr. inrementando de)de ero la )egunda "aria-le no -.)ia, x
2
>> r=2; + indenti,ia omo "aria-le entrante a la )egunda "aria-le no -.)ia, x
2,
>> c'$+r=(iB#b)./(iB#%(:,r))
c'$+r =
42.0000
-24.0000
3.0000
6.0000
>> *=3; + identi,ia a la terera "aria-le -.)ia, x
$
, omo "aria-le )aliente &"aria-le de -loqueo en la
)egunda iterai!n*
>> $+r=c'$+r(*)
$+r =
3.0000 + e)te e) el "alor al ual inrementar. de)de ero la "aria-le )aliente, x
2
1
>> $B=iB#(b-%(:,r)#$+r) + atualiza lo) "alore) de la) "aria-le) -.)ia) de la 0rimera iterai!n1
$B =
6.5000
18.0000
0.0000
0.5000
>> $B(*)=$+r; $B + rede,ine al "etor de "aria-le) -.)ia) / )u) "alore)
$B =
6.5000 = x
5
18.0000 = x
6
3.0000 = x
2
0.5000 = x
1
>> J=K(r); K=J(*); J(*)=J; K(r)=K;
>> J, K
4
Programacin lineal, enero-junio 2011, UAEH
J =
5 6 2 1
K =
8 7 3 4
>> cB=c(J); c%=c(K); + rede,ine la) 0arte) -.)ia) / no -.)ia) del "etor de o)to) c
>> &'i!()=cB#$B + alula el "alor o-6eti"o en el 0unto atual
&'i!() =
-55.5000 + "eri,ia que e,eti"amente )e 5a logrado di)minuir el "alor de la ,uni!n o-6eti"o
&in !e la se"#n!a iteracin*
>> B=A(:,J); %=A(:,K); iB=i!(B);
>> cB#iB#%-c%
(* =
-1 -1 0 -2 + no 5a/ om0onente) 0o)iti"a), )e 5a alanzado el !0timo1
inalizar al"oritmo tipo simple$. 'ote que el terer "alor de e)te
"etor e) ero &"er di)u)i!n )iguiente*1
9l "alor !0timo del 0rograma lineal original &0rograma de maximizai!n* e) entone)3
;
max
= 5515
x
max
= &x
1
, x
2
, x
3
, x
4
, x
5
, x
6
* = &015, 3, 0, 0, 615, 1%*
%isc#sin: el 5e5o de que la terera om0onente del "etor cB#iB#%-c% e"aluado en el 0unto !0timo
e) ero, )igni,ia que e) 0o)i-le utilizar la terera om0onente no -.)ia atual, x
3
, omo 0ar.metro,
inrementando )u "alor de)de ero / mo"i7ndo)e en la direi!n del "etor iB#%(:,r) &en el e)0aio
de la) "aria-le) -.)ia) atuale)# x
1
, x
2
, x
6
, x
5
* )in alterar el "alor de la ,uni!n o-6eti"o, 5a)ta anular
alguna de la) "aria-le) -.)ia) atuale)1
Para obtener una solucin factible ptima no bsica haremos entonces lo siguiente (1) pro!uciremos
otro punto e"tremo ptimo # (2) tomaremos una combinacin lineal con$e"a !e este nue$o punto con el
anterior, por ejemplo %el prome!io !e estos !os&, !a!o 'ue la funcin objeti$o es lineal, la regin !e
factibili!a! es con$e"a # los puntos son ptimos, el nue$o punto prome!io ser tambi(n ptimo, pero
no correspon!er a una solucin bsica #a 'ue ten!r cinco $ariables !istintas !e cero, en lugar !e
cuatro %cuatro es el rango !e la matri) A !efini!a al inicio en el *espacio aumenta!o+&,
(1) <-teni!n de otra )olui!n ,ati-le -.)ia !0tima (tercera iteracin)
>> r=3; + e)oge la terera "aria-le no -.)ia, x
3
, omo entrante
5
Programacin lineal, enero-junio 2011, UAEH
>> c'$+r=(iB#b)./(iB#%(:,r))
c'$+r =
-6.5000
,.0000
-0.6000
0.5000
>> *=4; + e)oge la uarta "aria-le -.)ia, x
1
, omo )aliente
>> $+r=c'$+r(*)
$+r =
0.5000 + "alor de la "aria-le entrante
>> $B=iB#(b-%(:,r)#$+r) + atualiza "alore) de la) "aria-le) -.)ia) del iniio de la terera
iterai!n
$B =
7.0000
17.0000
5.5000
0
>> $B(*)=$+r; $B + determina el nue"o "etor de "aria-le) -.)ia) / )u) "alore)
$B =
7.0000 = x
5
17.0000 = x
6
5.5000 = x
2
0.5000 = x
3
>> J=K(r); K=J(*); J(*)=J; K(r)=K; + atualiza "etore) de etiqueta) -a)ia) / no -.)ia)
>> J, K
J =
5 6 2 3
K =
8 7 1 4
>> cB=c(J); c%=c(K); - (c./()i0( &(r.1* b2*ic( " 3 b2*ic( 41) !1c.3r 41 c3*.3*
>> &'i!()=cB#$B - c()c/)( !()3r 3b51.i!3 1 1) &/.3 1$.r163 (c./()
&'i!() =
6
Programacin lineal, enero-junio 2011, UAEH
-55.5000 + "eri,ia que el nue"o 0unto extremo e,eti"amente tiene un "alor &!0timo* o-6eti"o
igual al del 0unto anterior1
'ue"o 0unto extremo &en el e)0aio de la) "aria-le) de dei)i!n*#
&x
1
, x
2
, x
3
, x
4
, x
5
, x
6
* = &0, 515, 015, 0, $, 1$*
>> &1=[0.5 3 0 0 6.5 18]'; + 0unto !0timo o-tenido al ,inal de la )egunda iterai!n
>> c(1:6)#&1
(* =
-55.5000 + o-tiene diretamente el "alor o-6eti"o del 0unto !0timo &e)te 0a)o no e) nee)ario*
>> &2=[0 5.5 0.5 0 7 17]'; + 0unto !0timo o-tenido al ,inal de la terera iterai!n
>> c(1:6)#&1
(* =
-55.5000 + o-tiene diretamente el "alor o-6eti"o del 0unto !0timo &e)te 0a)o no e) nee)ario*
>> &=(&17&2)./2 + de,ine un nue"o 0unto, 0romedio de lo) do) 0unto) !0timo) anteriore)
& =
0.2500 +
4.2500 +
0.2500 +
0
6.7500 +
17.5000 + 'ote que 0 tiene ino om0onente) no ero, 0or lo tanto no 0uede orre)0onder a
una )olui!n -.)ia del 0rograma lineal de minimizai!n o-tenido arri-a &el )egundo 0rograma lineal*1
>> c(1:6)#&
(* =
-55.5000 + "eri,ia que e,eti"amente el 0unto 0romedio & orre)0onde a un 0unto &,ati-le* on
el mi)mo "alor o-6eti"o que lo) 0unto) extremo) enontrado) al ,inal de la) iteraione) do) / tre)3 0or
lo tanto, & tam-i7n e) un 0unto !0timo &0ero no e) -.)io en el )entido en el que &1 / &2 lo )on 0ara el
0ro-lema de minimizai!n*1
-esumien!o
&x
1
, x
2
, x
3
, x
4
, x
5
, x
6
* = &0125, 4125, 0125, 0, 61$5, 1$15* es un punto ptimo !el programa lineal original,
pero no correspon!e a una solucin factible bsica !el programa lineal e'ui$alente %segun!o
programa lineal !e la pgina 1&,
Pregunta)# 5!i!1r3*8/(1'.14/.6$
$
3.4p125-part1
Problema 3.4, p.125. Bazaraa & Jarvis
=====================================
>> A=[1 1 2 1 0; 1 4 -1 0 1], b=[6 ; 4], c=[2 1 -1 0 0]
A =
1 1 2 1 0
1 4 -1 0 1
b =
6
4
c =
2 1 -1 0 0
>> J=[1 2]; K=[3 4 5];
>> B=A(:,J), N=A(:,K)
B =
1 1
1 4
N =
2 1 0
-1 0 1
>> iB=inv(B);
>> xB=iB*b
xB =
6.6667
-0.6667
>> J=[1 3]; K=[2 4 5];
>> B=A(:,J), N=A(:,K)
B =
1 2
1 -1
N =
1 1 0
4 0 1
>> iB=inv(B);
>> xB=iB*b
xB =
4.6667
Pgina 1
3.4p125-part1
0.6667
>> cB=c(J), cN=c(K)
cB =
2 -1
cN =
1 0 0
>> cB*iB*N-cN
ans =
6.0000 0.3333 1.6667
>> r=1;
>> chxkr=(iB*b)./(iB*N(:,r))
chxkr =
1.5556
-0.6667
>> s=1;
>> xkr=chxkr(s)
xkr =
1.5556
>> xB=iB*(b-N(:,r)*xkr)
xB =
0.0000
2.2222
>> xN=[xkr 0 0]'
xN =
1.5556
0
0
>> xB=[xN(1) xB(2)]'; xN=zeros(3,1)
xN =
0
0
0
>> xB
xB =
1.5556
2.2222
Pgina 2
3.4p125-part1
>> Jn=K(r); Kn=J(s); J(s)=Jn; K(r)=Kn;
>> J, K
J =
2 3
K =
1 4 5
>> B=A(:,J), N=A(:,K)
B =
1 2
4 -1
N =
1 1 0
1 0 1
>> iB=inv(B);
>> iB*b
ans =
1.5556
2.2222
>> cB=c(J), cN=c(K)
cB =
1 -1
cN =
2 0 0
>> cB*iB*N-cN
ans =
-2.0000 -0.3333 0.3333
>> r=3;
>> chxkr=(iB*b)./(iB*N(:,r))
chxkr =
7.0000
-20.0000
>> s=1;
>> xkr=chxkr(s)
xkr =
Pgina 3
3.4p125-part1
7.0000
>> xB=iB*(b-N(:,r)*xkr)
xB =
0.0000
3.0000
>> xN=[0 0 xkr]'
xN =
0
0
7.0000
>> xB=[xN(r) xB(2)]', xN=zeros(3,1)
xB =
7.0000
3.0000
xN =
0
0
0
>> Jn=K(r); Kn=J(s); J(s)=Jn; K(r)=Kn;
>> J, K
J =
5 3
K =
1 4 2
>> B=A(:,J), N=A(:,K)
B =
0 2
1 -1
N =
1 1 1
1 0 4
>> iB=inv(B); iB*b
ans =
7
3
Pgina 4
3.4p125-part1
>> cB=c(J), cN=c(K)
cB =
0 -1
cN =
2 0 1
>> cB*iB*N-cN
ans =
-2.5000 -0.5000 -1.5000
Pgina 5
3.4p125-part2
Problema 3.4, p.125. Bazaraa & Jarvis
=====================================
>> A=[1 1 2 1 0 ; 1 4 -1 0 1], b=[6 ; 4], c=[-2 -1 1 0 0]
A =
1 1 2 1 0
1 4 -1 0 1
b =
6
4
c =
-2 -1 1 0 0
>> J=[1 4]; K=[2 3 5];
>> B=A(:,J), N=A(:,K)
B =
1 1
1 0
N =
1 2 0
4 -1 1
>> iB=inv(B);
>> xB=iB*b
xB =
4
2
>> cB=c(J), cN=c(K)
cB =
-2 0
cN =
-1 1 0
>> cB*iB*N-cN
ans =
-7 1 -2
>> r=2;
>> chxkr=(iB*b)./(iB*N(:,r))
Pgina 1
3.4p125-part2
chxkr =
-4.0000
0.6667
>> s=2;
>> xkr=chxkr(s)
xkr =
0.6667
>> xB=iB*(b-N(:,r)*xkr)
xB =
4.6667
0
>> xB(s)=xkr; xB
xB =
4.6667
0.6667
>> xN=zeros(3,1)
xN =
0
0
0
>> Jn=K(r); Kn=J(s); J(s)=Jn; K(r)=Kn;
>> J, K
J =
1 3
K =
2 4 5
>> B=A(:,J), N=A(:,K)
B =
1 2
1 -1
N =
1 1 0
4 0 1
>> iB=inv(B);
>> iB*b
ans =
Pgina 2
3.4p125-part2
4.6667
0.6667
>> cB=c(J), cN=c(K)
cB =
-2 1
cN =
-1 0 0
>> phival=cB*xB
phival =
-8.6667
>> cB*iB*N-cN
ans =
-6.0000 -0.3333 -1.6667
Pgina 3
Programacin lineal, enero-junio 2011, UAEH
Ejercicio 3-3-2, p.55 (Ferris-Mangasarian-Wright)
min x
1
2x
2
4x
3
+ 4x
4
min x
1
2x
2
4x
3
+ 4x
4
tal que x
2
2x
3
x
4
4 tal que x
2
2x
3
x
4
x
5
= 4
2x
1
x
2
x
3
+ 4x
4
5 2x
1
x
2
x
3
+ 4x
4
x
6
= 5
x
1
+ x
2
2x
4
3 x
1
+ x
2
2x
4
x
7
= 3
x
1
, x
2
, x
3
, x
4
0 x
1
, x
2
, x
3
, x
4
0
Mtodo simplex sin ase !no, sol!ci"n "ptima no acotada.
Mtodo del parcial 5 (in ta!leau"
>> A=[0 1 -2 -1 -1 0 0 ; 2 -1 -1 4 0 -1 0 ; -1 1 0 -2 0 0 -1],
b=[-4 -5 -3]',
c=[1 -2 -4 4 0 0 0]
A =
0 1 -2 -1 -1 0 0
2 -1 -1 4 0 -1 0
-1 1 0 -2 0 0 -1
b =
-4
-5
-3
c =
1 -2 -4 4 0 0 0
>> J=[5 6 7]; K=[1 2 3 4]; escoge variales !sicas = variales "e #olgura
$esta elecci%n era ovia, &'or qu()*
>> B=A(:,J); iB=inv(B); y=iB*b
y =
4 =x
5
5 =x
6
3 =x
7
>> B=y; !=A(:,K); cB=c(J); c!=c(K); "#iv$%=cB*B
"#iv$% =
1
Programacin lineal, enero-junio 2011, UAEH
0 los valores "e x+ , '#ival eran tami(n ovios, se #an 'uesto aqu- solo 'or
uni.ormi"a" "e la 'resentaci%n/
>> cB*iB*!-c!
$n& =
-1 2 4 -4
>> '=3; x
3
#a si"o escogi"a como variale entrante tercera com'onente "el vector K
>> c#('=(iB*b))*(iB*!(:,'))
c#(' =
2
5
+n, $in.inito* signi.ica que la 0ltima com'onente "el vector rengl%n iB*!(:,') es cero*/
>> &=1; x
5
#a si"o escogi"a como variale saliente 'rimera com'onente "el vector J
>> ('=c#('(&); B=iB*(b-!(:,')*(')
B =
0
3
3
>> B(&)=('; B actuali1a vector "e variales !sicas
B =
2 =x
3
3 =x
6
3 =x
7
>> Jn=K('); Kn=J(&); J(&)=Jn; K(')=Kn; actuali1a vectores "e -n"ices !sicos , no
!sicos
>> J, K
J =
3 6 7
K =
1 2 5 4
2
Programacin lineal, enero-junio 2011, UAEH
>> cB=c(J); c!=c(K);
>> "#iv$%=cB*B
"#iv$% =
-- actuali1a valor "e .unci%n o2etivo
>> B=A(:,J); iB=inv(B); !=A(:,K);
>> cB*iB*!-c!
$n& =
-1 4 -2 -6 "etermina que el m-nimo a0n no #a si"o alcan1a"o
>> '=2; x
2
$c./ segun"a com'onente "el vector K* es la variale entrante
>> c#('=(iB*b))*(iB*!(:,'))
c#(' =
-4
2
-3
>> &=2; x
6
$c. segun"a com'onente "el vector J* es la variale saliente
>> ('=c#('(&)
(' =
2 x
2
icrementa su valor "es"e cero #asta x
2
= 2
>> B=iB*(b-!(:,')*(')
B =
3
0
5
>> B(&)=('; B actuali1a vector "e variales !sicas
B =
3 = x
3
2 = x
2
5 = x
7
>> Jn=K('); Kn=J(&); J(&)=Jn; K(')=Kn; actuali1a vectores "e -n"ices !sicos , no
3
Programacin lineal, enero-junio 2011, UAEH
!sicos
>> J, K
J =
3 2 7
K =
1 6 5 4
>> cB=c(J); c!=c(K);
>> "#iv$%=cB*B
"#iv$% =
-16 actuali1a valor o2etivo
>> B=A(:,J); iB=inv(B); !=A(:,K);
>> cB*iB*!-c!
$n& =
4)3333 -2)6667 -0)6667 6.0000 "etermina que el m-nimo a0n no #a si"o
alcan1a"o
>> '=4; x
#
$c./ cuarta com'onente "el vector K* es la variale entrante
>> c#('=(iB*b))*(iB*!(:,'))
c#(' =
-3)0000 iB*!(:,').0 signi.ica que el valor "e x
4
'ue"e incrementarse in"e.ini"amente
-0)6667 "es"e cero sin aan"onar la regi%n "e .actiili"a"3 'or lo tanto la .unci%n o2etivo
-5)0000 no est! acota"a in.eriormente sore la regi%n "e .actiili"a"/
>> iB*b esta 'arte solo veri.ica el 'unto extremo encontra"o arria , no es necesaria $se #a 'uesto
solo 'or conveniencia 'ara el lector, el alumno no la re'ortar! en sus traa2os*
$n& =
3)0000
2)0000
5)0000
>> iB*!(:,') calcula la "irecci%n a lo largo "e la cual 'o"emos movernos a 'artir "el 'unto
extremo anterior sin "e2ar la regi%n "e .actiili"a"
4
Programacin lineal, enero-junio 2011, UAEH
$n& =
-1)0000
-3)0000
-1)0000
4a siguiente es la ecuaci%n 'aram(trica "el ra,o conteni"o en la regi%n "e .actili"a" en el es'acio "e
las variales originales $x
1
, x
2
, x
3
, x
4
* tal que sore este ra,o la .unci%n o2etivo no est! acota"a
in.eriormente5
x
1
= 0 , x
2
= 2 + 36 , x
3
= 3 + 6 , x
4
= 6 3 60/
Mtodo del ta!leau (#erri-Mangaarian-$rig%t"
$otas%
(&) la siguiente es una lista "e to"os los 'rogramas "e matla $con sus "e'en"encias* que necesitar!n
tener graa"os en su "irectorio "e traa2o 'ara la .ase 77 "el m(to"o "el taleau "el algoritmo sim'lex5
8rograma 9e'en"encias
/0/b%)1 2'i/3%b%)1, /b%)1
%4)1 4)1, /b%)1
(2) 4os vectores b , c "een ser ingresa"os como &ectore columna'
>> A=[0 1 -2 -1 ; 2 -1 -1 4 ; -1 1 0 -2], b=[-4 -5 -3]', c=[1 -2 -4 4]'
A =
0 1 -2 -1
2 -1 -1 4
-1 1 0 -2
b =
-4
-5
-3
c =
1
-2
-4
4
5
Programacin lineal, enero-junio 2011, UAEH
>> 5=/0/b%(A,b,c)
1 2 x3 4 1
-------------------------------------------------------
x5 = 6 0)0000 1)0000 -2.0000 -1)0000 4)0000
x6 = 6 2)0000 -1)0000 -1.0000 4)0000 5)0000
7 = 6 -1)0000 1)0000 0)0000 -2)0000 3)0000
-------------------------------------------------------
7 = 6 1)0000 -2.0000 -4.0000 4)0000 0)0000
5 =
v$%: [45 809b%3] estas lineas las ignoraremos
b$&: :41 c3%%; , solamente
n0nb$&: :51 c3%%; a'arecer!n en este
0b4: 4 e2ercicio $el alumno :; las re'ortar! en sus traa2os*
4os colores arria in"ican que la tercera columna #a si"o selecciona"a como 'ivotal $x
3
* es la variale
entrante/ :ote que no etamo utili(ando la regla de )land en eta ocain/ <!s a"elante utili1amos la
regla "e +lan" , se le 'i"e al lector a'reciar cu!ntos taleaus mas o menos nos tomar-a el llegar a la
res'uesta/ =n este mismo 'aso "eterminamos el rengl%n 'ivotal $x
5
* utili1an"o la regla "el cociente/
>> 5=%4(5,1,3) reali1a el intercamio "e >or"an corres'on"iente
1 x2 5 4 1
-------------------------------------------------------
3 = 6 0)0000 0)5000 -0)5000 -0)5000 2)0000
x6 = 6 2)0000 -1.5000 0)5000 4)5000 3)0000
7 = 6 -1)0000 1)0000 -0)0000 -2)0000 3)0000
-------------------------------------------------------
7 = 6 1)0000 -4.0000 2)0000 6)0000 --)0000
5 =
v$%: [45 809b%3]
b$&: :41 c3%%;
n0nb$&: :51 c3%%;
0b4: 4
?olamente #a, una o'ci%n 'ara columna 'ivotal $i/e/, 'ara variale entrante*/
>> 5=%4(5,2,2)
1 6 5 x4 1
-------------------------------------------------------
3 = 6 0)6667 -0)3333 -0)3333 1)0000 3)0000
2 = 6 1)3333 -0)6667 0)3333 3)0000 2)0000
7 = 6 0)3333 -0)6667 0)3333 1)0000 5)0000
-------------------------------------------------------
7 = 6 -4)3333 2)6667 0)6667 -6.0000 -16)0000
6
Programacin lineal, enero-junio 2011, UAEH
5 =
v$%: [45 809b%3]
b$&: :41 c3%%;
n0nb$&: :51 c3%%;
0b4: 4
4a 'ruea "el cociente no 'ue"e "eterminar una variale saliente, esto quiere "ecir que el 'unto %'timo
se alcan1a en in.inito, o ien que la .unci%n o2etivo no est! acota"a in.eriormente/ *!er&e +ue el
punto e,tremo coincide con el encontrado con el mtodo anterior (in ta!leau"'
@ue"a como e2ercicio 'ara el lector el "emostrar que el ra,o oteni"o con el m(to"o "el taleau es el
mismo que el oteni"o con el m(to"o 'rimero $in ta!leau*/
- epitiendo el mtodo anterior utili(ando la regla de )land.
A, , c ,a est!n carga"as en la memoria as- que no las volvemos a escriir, solamente el taleau
inicial5
>> 5=/0/b%(A,b,c)
1 x2 3 4 1
-------------------------------------------------------
5 = 6 0)0000 1)0000 -2)0000 -1)0000 4)0000
x6 = 6 2)0000 -1.0000 -1)0000 4)0000 5)0000
7 = 6 -1)0000 1)0000 0)0000 -2)0000 3)0000
-------------------------------------------------------
7 = 6 1)0000 -2.0000 -4)0000 4)0000 0)0000
4a regla "e +lan" "el -n"ice m!s 'equeBo , la 'ruea "el cociente "eterminan que se "een "e
intercamiar x
2
$variale entrante*, x
6
$variale saliente*
>> 5=%4(5,2,2)
x1 6 3 4 1
-------------------------------------------------------
5 = 6 2)0000 -1)0000 -3)0000 3)0000 <)0000
2 = 6 2)0000 -1)0000 -1)0000 4)0000 5)0000
7 = 6 1)0000 -1)0000 -1)0000 2)0000 -)0000
-------------------------------------------------------
7 = 6 -3.0000 2)0000 -2)0000 -4)0000 -10)0000
4a regla "e +lan" "el -n"ice m!s 'equeBo i"enti.ica a x
1
como la variale entrante 'ero no 'ue"e
i"enti.icar una variale saliente, 'or lo tanto se llega a la conclusi%n "e que la .unci%n o2etivo no est!
acota"a in.eriormente "entro "e la regi%n "e .actiili"a"/ ;serve que este m(to"o encuentra otro
'unto extremo , corres'on"iente ra,o sore el cual la .unci%n o2etivo no est! acota"a in.eriormente5
x
1
= C, x
2
= 5 + 2C, x
3
= 0, x
4
= 0, C0/
8reguntas5 4viv3'0&=9$3#)389)1
7
PROGRAMACI

ON LINEAL
enero junio 2011
Hints a ejercicios selectos del problemario 1
Notas
A continuaci on se presentan hints a algunos de los problemas de la primer tarea. Aquellos
ejercicios cuya solucion no haya sido presentada en su totalidad suponen que el alumno proveer a
las partes faltantes siguiendo las instrucciones se naladas.
Los soluciones no necesariamente representan la forma optima de resolver los problemas, m as
a un, podran existir errores en las mismas (e.g., tipogr acos o algebraicos), por lo que se le
sugiere al alumno mantener una postura crtica al hacer la lectura de este documento.
1. Ejercicios del libro de Bazaraa & Jarvis
p.75, ej. 24. Encuentre la solucion general del siguiente sistema,
(1)
x
1
+ 2x
2
+ x
3
= 3 ,
x
1
+ 5x
2
+ x
3
= 6 .
Sol.: sea A la matriz de coecientes del sistema (1) y b = (3, 6)
t
, entonces (1) tiene asociada la matriz
aumentada del extremo izquierdo de la siguiente cadena de matrices, la cual representa el proceso de
eliminacion de Gauss-Jordan de la misma:
(A| b) =

1 2 1 3
1 5 1 6

1 2 1 3
0 7 2 9

1 2 1 3
0 1
2
7
9
7

1 0
3
7
3
7
0 1
2
7
9
7

.
Entonces, si x = (x
1
, x
2
, x
3
)
t
es un vector solucion del sistema, este puede escribirse de la siguiente forma:
(2) x =
1
7

3
9
0

+
1
7

3
2
7

x
3
, x
3
R.
Dejamos como ejercicio al lector el vericar lo siguiente acerca de la matriz A: su rango es dos, sus
primeras dos columnas son pivotales y por lo tanto una base para C(A) (espacio columna de A), la
dimension del n ucleo de A, N(A), es uno (determine una base para N(A) a partir de (2)). Identique
ademas las matrices B y N que hacen los siguientes calculos ciertos: si x

= (x
1
, x
2
)
t
y x

= x
3
, entonces
Bx

+Nx

= b y x

= B
1
b B
1
Nx

y se tiene que
(3) x =

B
1
b
0

B
1
N
1

=: x
B
+x
h
.
Dejamos al lector convencerse tambien de lo siguiente: x
B
es la solucion basica del sistema (en algebra
lineal se le llamara solucion particular, pero x
B
es una solucion particular que se distingue de entre todas
las posibles soluciones particulares porque tiene, en general, el mayor n umero posible de entradas nulas),
x
h
es la solucion general del sistema homogeneo, Ax = 0, (x

R juega el papel de parametro) y para


x

= 0, x = x
B
+x
h
es una solucion no-basica.
p.75, ej. 25. Encuentre todas las soluciones basicas del siguiente sistema,
(4)
x
1
+ x
2
+ x
3
+ x
4
2x
5
= 4 ,
x
1
2x
2
+ x
4
x
5
= 3 .
Date: March 5, 2011.
1
PROGRAMACI

ON LINEAL 2
Sol: as como en el ejercicio anterior, la respuesta a este problema se basa en la obtencion de la forma
forma escalonada reducida de la matriz aumentada asociada con (4). Si A es la matriz de coecientes
del sistema y b = (4, 3)
t
entonces,
(A| b) =

1 1 1 1 2 4
1 2 0 1 1 3

1 1 1 1 2 4
0 1 1 2 3 7

1 0 2 3 5 11
0 1 1 2 3 7

1 0 2 3 5 11
0 1 1 2 3 7

.
De lo anterior se desprende que x
1
y x
2
son variables basicas (i.e., estan asociadas con las dos primeras
columnas de A, las cuales constituyen una base para R(A) y tambien se denominan pivotales) mientras
que las restantes, x
3
, x
4
y x
5
, son no-basicas (parametros). Sean x = (x
1
, x
2
, x
3
, x
4
, x
5
), x

= (x
1
, x
2
)
t
y
x

= (x
3
, x
4
, x
5
)
t
, entonces
(5) x =

B
1
b
0

B
1
N
I
3

,
en donde I
3
es la matriz identidad de tama no tres y
B
1
b =

11
7

, B
1
N =

2 3 5
1 2 3

.
Dejamos al lector determinar quienes son las matrices B y N en este caso y vericar la veracidad de la
ultima igualdad.
La solucion basica de (4)
1
, x
B
, se obtiene jando x

= 0 en (5), es decir,
(6) x
B
=

B
1
b
0

.
Calcule x
B
explcitamente.
p.75, ej.27, Considere el sistema Ax = b en donde A = [A
1
, . . . , A
n
] R
mn
es tal que A
j
R
m
representa la j-esima columna de A y rango(A) = m. Sea x
p
una solucion particular cualquiera del
sistema, construya una solucion basica a partir de x
p
.
Sol.: sin que esto represente una perdida de generalidad severa, vamos a suponer que las primeras m
columnas de A son pivotales (de otra forma haramos un reordenamiento de las componentes de x y todo
lo que se discute a continuacion se sigue verbatim).
Discusion preliminar.
Entonces, dado que rango(A) = m, existe una matriz invertible B R
mm
, la cual esta constituida por
las primeras m columnas de A, y una matriz N R
m(nm)
, tales que el sistema Ax = b puede escribirse
de manera alternativa como Bx

+Nx

= b, en donde x

= (x
1
, . . . , x
m
)
t
y x

= (x
m+1
, . . . , x
n
)
t
. Por
consiguiente, cualquier solucion Ax = b puede escribirse de la siguiente forma,
(7) x =

B
1
b
0

B
1
N
I

, =: x
B
+x
h
,
en donde I es la matriz identidad de tama no mn y 0 R
mn
. (7) es la forma general de (3) y (5).
Evidentemente, dados A y b, para obtener la solucion basica x
B
podemos simplemente utilizar (6), no
hace falta partir de una solucion particular conocida, x
p
. Sin embargo, el punto de este ejercicio es el de
dise nar un algoritmo numerico que pueda implementarse en una computadora, el cual, dada una solucion
cualquiera de Ax = b (por ejemplo, una hallada por inspeccion), construya, en un n umero nito de pasos,
la solucion basica x
B
.
Intuitivamente, la solucion basica, x
B
, se distingue de aquellas no-basicas porque tiene un n umero maximo
de entradas iguales a cero (cf. (3), (5), (6) y (7)), esta observacion guiara nuestra b usqueda de x
B
.
1
pese a que el enunciado del problema pueda hacer parecer lo contrario, la soluci on basica, si la hay, es unica
PROGRAMACI

ON LINEAL 3
Fin de la discusion preliminar.
Recordemos nuestra suposicion de que las primeras m columnas de A son pivotales. Sea
A = [A
1
, . . . , A
m
, A
m+1
, . . . , A
n
]
la representacion por columnas de la matriz A (A
j
R
m
, j = 1, . . . , n) y
x
p
= (x
p
1
, . . . , x
p
m
, x
p
m+1
, . . . x
p
n
)
una solucion particular, entonces
Ax
p
= A
1
x
p
1
+ +A
m
x
p
m
+A
m+1
x
p
m+1
+ +A
n
x
p
n
.
La solucion basica es aquella que satisface x
m+1
= = x
n
= 0. Entonces tenemos el siguiente
Algoritmo (caso x
1
, . . . , x
m
son las variables pivotales del sistema Ax = b):
1. Sea x
0
:= x
p
y supongamos que x
0
j
(i.e., x
p
j
) es la primera componente de x
0
distinta de cero
con ndice j m+ 1; es decir, suponga que
x
0
= (x
0
1
, . . . , x
0
m
, 0, . . . , 0, x
0
j
, x
0
j+1
, . . . , x
0
n
)
t
,
(en donde entre x
m
y x
j
hay jm1 ceros). Entonces escriba A
j
como combinacion lineal de A
1
, . . . , A
m
,
digamos,
(8) A
j
= A
1
c
1,j
+ +A
m
c
m,j
.
2. Substituya (8) en la siguiente expresion,
(9) Ax
0
= A
1
x
0
1
+ +A
m
x
0
m
+A
j
x
0
j
+ . . . +A
n
x
0
n
,
y reordene terminos,
Ax
0
= A
1
(x
0
1
c
1,j
x
0
j
) + +A
m
(x
0
m
c
1,j
x
0
j
) +A
j+1
x
0
j+1
+ +A
n
x
0
n
.
Dena el vector
x
1
:= (x
0
1
c
1,j
x
0
j
, . . . , x
0
m
c
1,j
x
0
j
, 0, . . . , 0, x
0
j+1
, . . . , x
0
n
)
t
;
(observe que x
1
tiene una componente nula mas que x
0
: entre sus componentes m y j + 1-esimas hay
j m ceros).
3. Repita los dos pasos anteriores reemplazando x
0
j
por la primera componente no nula de x
1
en la
posicion j

j + 1, y reemplazando a x
0
por x
1
y y x
1
por x
2
. Continue de esta forma hasta haber
eliminado las ultimas n m componentes no nulas de la solucion particular x
p
.
Claramente, el algoritmno termina en no mas de n m iteraciones y al termino del mismo se habra
encontrado una solucion de Ax = b cuyas ultimas n m componentes son cero; solamente hay una
solucion con esta propiedad y esta es x
B
.
En el caso en el que las variables basicas del sistema no sean las primeras m coordenadas (x
1
, . . . , x
m
)
puede hacerse un renombramiento de las variables de tal forma que aquellas basicas aparezcan al principio
de manera consecutiva y el algoritmo anterior se aplica sobre el nuevo sistema de la misma forma.
Preguntas: Jorge Viveros. Centro de Investigaci on en Matem aticas, Universidad Aut onoma del Estado de
Hidalgo. Hgo, M exico.
E-mail address: jviveros@uaeh.edu.mx
Programacin lineal, enero-junio 2011, UAEH
Ejercicio 3.3, p.136 (Bazaraa, Jarvis & Sherali)
Programa original: Programa estndar equivalente:
mx x
1
+ 3x
2
mn -x
1
-3x
2
+ 0x
3
+ 0x
4
+ 0x
5
tal que x
1
2x
2
0 tal que x
1
2x
2
+ x
3
0
-2x
1
+ x
2
4 -2x
1
+ x
2
+ x
4
4
5x
1
+ 3x
2
15 5x
1
+ 3x
2
+ x
5
15
x
1
! x
2
" 0 x
1
! x
2
! x
3
! x
4
! x
5
" 0
>> A=[1 -2 1 0 0 ; -2 1 0 1 0 ; 5 3 0 0 1], b=[0 4 15]', c=[-1 -3 0 0 0]
A =
1 -2 1 0 0
-2 1 0 1 0
5 3 0 0 1
b =
0
4
15
c =
-1 -3 0 0 0
>> J=[1 2 3]; K=[4 5]; B=A(:,J); iB=inv(B); y=iB*b # sele$$iona ndi$es
%si$os & no %si$os
y =
0.2727
4.5455 (solu$i'n es (a$ti%le)
.12
>> !B=y; # de(ine ve$tor de varia%les %si$as & sus valores
>> "=A(:,K); cB=c(J), c"=c(K)
cB =
-1 -3 0
1
Programacin lineal, enero-junio 2011, UAEH
c" =
0 0
>> cB*iB*"-c"
#n$ =
-1.0%0% -0.&3&4 # $ualquier in$remento en las varia%les no %si$as in$rementar el valor
de la (un$i'n o%*etivo+ ,or lo tanto el ,unto es ',timo-
>> 'in=cB*!B
'in =
-13.%0%1 # valor ',timo-
.olu$i'n del ,rograma lineal original: /x
1
!x
2
) /0-2020!4-5455) Punto ',timo
13-1011 valor ',timo
2 $ontinua$i'n vamos a veri(i$ar el resultado anterior eligiendo otro ,unto extremo-
>> J=[2 3 4]; K=[1 5]; B=A(:,J); iB=inv(B); iB*b
#n$ =
5
10
-1 # eligiendo x
4
& x
5
$omo varia%les no %si$as no ,rodu$e un ,unto (a$ti%le /& ,or lo tanto
tam,o$o extremo)! enton$es %us$ar otras varia%les no %si$as-
>> J=[1 3 5]; K=[2 4]; B=A(:,J); iB=inv(B); iB*b
#n$ =
-2 # eligiendo x
2
& x
4
$omo varia%les no %si$as no ,rodu$e un ,unto (a$ti%le! enton$es
2 bus$ar otras varia%les no %si$as-
25
>> J=[1 2 4]; K=[3 5]; B=A(:,J); iB=inv(B); y=iB*b
y =
2.3077 3ligiendo x
3
& x
5
$omo varia%les no %si$as si ,rodu$e una solu$i'n (a$ti%le
1.153 /%si$a4) ,or lo tanto nuestro ,unto de ,artida es
7.4&15 /x
1
!x
2
!x
3
!x
4
!x
5
) /2-3000 ! 1-1535 ! 0 ! 0-4615 ! 0)
2
Programacin lineal, enero-junio 2011, UAEH
>> !B=y; "=A(:,K); cB=c(J); c"=c(K);
>> ()iv#*=c(B)*!B
()iv#* =
-5.7&%2
>> cB*iB*"-c"
#n$ =
0.%231 -0.34& # no ,odemos in$rementar el valor de x
5
! ,ero s el valor de x
3
>> +=1; # la ,rimera $om,onente de x7 /x
3
) 8a sido elegida ,ara $onvertirse en varia%le %si$a-
>> c)!,+=(iB*b).-(iB*"(:,+))
c)!,+ =
10.0000
-3.0000
.12
>> $=3; # la ter$era $om,onente de x9 /x
4
) es la varia%le :saliente; /se $onvertir en no %si$a)
>> !,+=c)!,+($)
!,+ =
.12 # valor de la varia%le entrante /x
3
)
>> !B=iB*(b-"(:,+)*!,+)
!B =
0.2727
4.5455
0
>> !B($)=!,+; !B # a$tuali<a & des,liega el nuevo ve$tor de varia%les %si$as
!B =
0.2727 =%tenemos el mismo resultado que al ini$io-
4.5455
.12
3*er$i$io ,ara el le$tor: resuelva este ,rograma ,or el m>todo gr(i$o- ?orro%ore que tiene la misma
solu$i'n & que esta es @ni$a- Preguntas: .viv/+0$12#/)./32.'!
3

También podría gustarte