3.- Método del Símplex.

Anuncio
Programación Matemática para Economistas
112
3.- Método del Símplex.
Consideremos el problema general de Programación Lineal en forma estándar
Max c tx
s.a Ax= b
x≥0
con rg(A) = m y x ∈ Rn. Sea x0 una solución admisible básica no degenerada, es decir un
vértice con m componentes distintas de cero:
x0 = (x10, x20,..., xr0,..., xm0, 0, 0, ..., 0)
donde hemos supuesto que las m componentes positivas son las primeras.
Por ser dicho vector solución del sistema Ax = b, tendremos:
x10P1 + x20P2 + ...+ xroPr + ... + xm0Pm = b = P0
(3)
donde Pi (i=1,2,...,n) corresponden a las columnas de la matriz A; suponemos que las m
primeras son linealmente independientes, así por ser el rango de la matriz A igual a m,
cualquier otra columna Pj de dicha matriz podrá expresarse como combinación lineal de las
anteriores. Por tanto:
Pj = a1jP1 + a2jP2 + ... + arjPr + ... + amjPm
(4)
con algún aij ≠ 0, i ∈ {1, 2,...,m}
Supongamos ahora que queremos pasar de la solución admisible básica inicial: x0 a
otra x* que sea un vértice adyacente, por lo cual sólo se modificará una componente;
supongamos además que la componente j de x* es distinta de cero con j∈{m+1, m+2,..., n};
para ello hemos de modificar la base inicial {P1, P2, ..., Pm} introduciendo el nuevo vector
Pj en la misma y debiendo, por lo tanto, salir de la base un Pr con r ∈ {1,2,...,m}.
A continuación vamos a ver qué vector es el más apropiado para salir de la base y
cuál es el que debe ocupar su lugar, con el fin de que todo ello suponga un mejoramiento,
(puesto que maximizamos), del valor de la función objetivo, manteniéndonos dentro del
conjunto de oportunidades.
En (4) para cualquier valor arj tal que arj ≠ 0, podemos despejar:
Pr = −
1
{a1j P1 + ...+ar-1,j Pr-1 + ar+1,j Pr+1 + ...+ amj Pm - Pj}
arj
sustituyendo en (3) tendremos:
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
113


x
P0 =  x10 − r 0 a1 j  P1 + ... +
arj




 x r −1,0 − x r 0 a r −1, j  Pr-1 +


a rj






x
x
x
+  xr +1,0 − r 0 ar +1, j Pr+1+ ... +  xm0 − r 0 amj  Pm + r 0 Pj
arj
a rj
arj




Esta ecuación expresa el vector b = P0 como combinación lineal de m vectores,
donde el vector Pr ha sido sustituido por el vector Pj. Además el nuevo sistema de vectores
{Ps} con s ∈ {1, ... ,r - 1, j ,r + 1 ,..., m} es linealmente independiente, por depender Pj de Pr
que es independiente con los demás.
Concluyendo, de la solución admisible básica:
(x10 , x20 , ...,xr0 ,..., xm0 , 0, 0, ..., 0)
hemos pasado a una nueva solución básica:
*
*
( x1* , x 2* , ..., x r−1
, 0, x r+1
, ..., x m* , 0, ..., x *j , ..., 0)
donde
x *k = xk0 - xr0
a kj
a rj
para k = 1, 2, ... , r - 1, r+1, ... ,m,
y
x *j =
xr 0
arj
Ahora bien, para que la nueva solución básica x* sea solución del problema general de
Programación Lineal ha de ser admisible, es decir, además de verificar Ax = b, que lo
verifica por construcción, debe cumplir: x* ≥ 0, lo cual se traduce en que todas sus
componentes sean positivas:
x *k ≥ 0 con k = 1,2,...,r-1,r+1,...,m
y
x *j ≥ 0
Para conseguir esto se ha de verificar:
1º) arj > 0, ya que xr0 es positivo por hipótesis.
2º) xk0 - xr0
a kj
a rj
≥ 0 es decir:
x
xk 0
≥ r 0 para k = 1, 2, ..., r-1, r+1, ..., m, para los akj > 0.
a kj
arj
Luego el vector que hemos de eliminar de la base es Pr con r tal que:
 x 
x
Min  k0  = r0
ak j > 0
arj
 akj 
que es conocido como CRITERIO DE SALIDA y nos determina el vector Pr que sale de la
base.
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
114
Por tanto el criterio de salida se obtiene tras imponer la condición de solución
admisible básica, luego, tanto si el problema es de máximo como de mínimo, el criterio de
salida de la base es el mismo.
Veamos ahora cómo afecta el cambio realizado a la función objetivo; para ello
vamos a calcular el valor de la función objetivo y relacionarlo con el del vértice anterior:
z* = ctx* = ct( x1* , ..., x r*−1 , 0, x r*+1, 0, ..., x *j , 0, ..., 0)t
= c1 x1* + ... + cr-1 x r*−1 + cr+1 x r*+1+...+ cm x m* + cj x *j
m
=
∑c
k =1
k ≠r
k

m
=
∑c  x
k =1
k ≠r
k
∑c
k =1
k ≠r
m
=
∑c
k =1
k ≠r

k0
− xr 0
a kj 
xr 0
 + cj
a rj 
arj
m
m
=
x *k + c j x *j
k
x k 0 − ∑ck a kj
k =1
k ≠r
m
k x k 0 − ∑ c k a kj
k =1
k ≠r
xr 0
x
+ c j r0
a rj
a rj
xr 0
x
+ c j r 0 + cr x r 0 − cr x ro
a rj
a rj
x
= z0 - cr xr0 + r 0 (cj arj
= z0 +
∑c a
k =1
k ≠r
xr 0
x
crarj + r 0 (cj arj
arj
x
= z0 + r 0 ( cj arj
= z0 +
m
k
kj
)
m
∑c a
k =1
k ≠r
k
kj
)
m
∑c a
k =1
k
kj
)
xr 0
( c j - z j)
arj
m
donde hemos llamado zj = c1a1j + c2a2j +...+ cmamj =
∑c a
k =1
k
kj
Ahora bien, como tanto xr0 como arj son positivos y estamos maximizando, para que
z* sea mayor que z0 se ha de verificar que cj - zj sea positivo, luego para pasar a la mejor
solución admisible básica tendrá que entrar en la base el vector Pj tal que,
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
115
 x r0

x r0
(c j − z j ) = Max 
(c k − z k )
ck − z k >0  a rk
a rj

ark >0
que es el CRITERIO DE ENTRADA propiamente.
En la práctica, dado que el criterio anterior supone conocer el vector que ha salido de
la base, tomaremos como criterio de entrada una aproximación del antes dado:
Pj / cj - zj = Max {ck − zk } CRITERIO DE ENTRADA DE Pj EN LA BASE
ck − zk > 0
Y por tanto el criterio de entrada en la base se obtiene tras intentar maximizar lo más
posible la función objetivo, habida cuenta que sólo una de las componentes es la que se
modifica.
Si llegado el momento no existe ningún valor de cj - zj > 0 implicaría que la solución
obtenida no se puede mejorar y habríamos logrado el máximo. Por tanto, obtenemos el
criterio de parada.
Cuando el problema de partida sea de mínimo, ya hemos comentado que el criterio
de salida, al imponer admisibilidad, no se modifica sin embargo, el criterio de entrada en la
base sí, puesto que lo que deseamos es que la función decrezca y el razonamiento entonces
cambia. Tras realizar un desarrollo análogo, salvo en la última parte, llegamos a que para
pasar a mejor solución admisible básica tendrá que entrar en la base el vector Pj tal que,
cj - z j
= Min {ck − zk }
ck − zk < 0
CRITERIO DE ENTRADA Pj EN LA BASE
De igual forma si no existe ningún valor de cj - zj < 0 implicaría que la solución
obtenida no se puede mejorar y habríamos logrado el mínimo.
También es posible que nuestro problema posea infinitas soluciones o que no posea
solución. Veamos cómo son determinados por el método ambos casos.
Óptimos múltiples.
Sabemos que si introducimos el vector Pj en la base en el lugar de Pr se verifica que
la función objetivo pasa a valer
z* = f(x* )= f(x0) +
xr 0
(cj - zj)
arj
donde f(x0) = z0. Pues bien, si resulta que cj - zj = 0, y todos los demás fuesen negativos,
salvo los de la base que sabemos que son 0, tenemos:
f(x*)= f(x0)
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
116
y dado que en Programación Lineal todo óptimo local es global, resulta que los puntos x* y
x0 son solución del problema planteado. Además, el segmento cuyos extremos sean dichos
puntos es, también, de puntos óptimos.
Luego dado un problema, si, en la condición de optimalidad, existe o existen
vectores no básicos Pj tal que su correspondiente valor asociado cj - zj, también llamado
beneficio marginal unitario, es o son nulos, el problema correspondiente posee óptimos
múltiples.
Problema sin solución. Óptimo ilimitado o no finito.
¿Qué ocurriría si para algún j tal que cj - zj > 0, todos los akj fuesen negativos?.
Supongamos que la base está formada por los m primeros vectores Pi, tenemos
entonces:
zj = a1jc1 + a2jc2 +...+ amjcm
z0 = c1x10 + c2x20 + ... + cmxm0
restando a z0, zj multiplicada por un número real θ tendremos:
z0 - θ zj = (x10 - θ a1j)c1 + ...+ (xm0 - θ amj)cm
sumando θ cj a ambos miembros:
z0 + θ (cj -zj) = (x10 - θ a1j)c1 + ...+ (xm0 - θ amj)cm + θ cj
de donde resulta que eligiendo θ > 0, tendríamos que:
 x10
x
 20

x
m0








− θa1j 
− θa 2j 

...

− θa mj 

0


...

θ

...


0

es una solución admisible, ya que, verifica el sistema Ax = b y sus componentes son
positivas dado que akj < 0 para k = 1,2,...,m. Además la función objetivo crece
ilimitadamente (ya que cj-zj > 0) y esto ocurre para cualquier θ > 0, tan grande como se
quiera. Luego, en las condiciones anteriores, el problema carece de máximo finito.
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
117
3.1.- Algoritmo del Símplex.
Paso 1: Determinar una solución admisible básica inicial; a ser posible elegir como base
inicial la canónica.
Paso 2: Calcular ck - zk para cada k = 1,2,...,m.
Paso 3: (a) elegir el vector Pj tal que cj - zj = max {ck − z k } entre todas los ck - zk > 0. Pj
entrará en la base.
(b) si todas las ck - zk son negativas o nulas (k = 1,2,...,n) hemos hallado la
solución. STOP.
(c) si todas las ck - zk son negativas y nulas hay más de m que son cero, entonces
x* es una solución del problema, pero posee otras (infinitas soluciones). STOP.
Paso 4: (a) Elegir el vector Pr de la base tal que
 x
k0
= min 
 a kj
a rj
xr 0



entre las que tengan akj > 0; el vector Pr saldrá entonces de la base.
(b) si hay algún h tal que ch - zh > 0, (Ph es el vector que ha de entrar en la base) y
todas las akh ≤ 0 (k = 1,2,...,m) entonces el problema tiene solución ilimitada.
STOP.
Paso 5: Realizar las transformaciones que se detallan y volver al paso 2:
xi* = xi0 x r* =
i = 1, 2, ..., m
i≠r
i = 1, 2, ..., m
i≠r
xr 0
arj
aik* = aik a rj* =
xr 0
aij
a rj
ark
aij
arj
ark
arj
z* = z0 +
xr 0
( cj - z j )
arj
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
118
ck - z *k = (ck - zk0) -
ark
(ck - zk)
arj
Una vez descrito el algoritmo, veamos cómo se actúa ante un problema en concreto.
Por el criterio de entrada y salida sabemos cómo se van a ir modificando las bases hasta
llegar a la solución final y para aplicar el algoritmo se transcriben los datos a tablas las
cuales nos seran más operativas a la hora de aplicar el algoritmo. En ellas lo que hacemos es
transformar vectores no canónicos en vectores canónicos según los vectores de entrada y
salida siguiendo un proceso análogo al que se realiza en la resolución de sistemas por el
método de Gauss, es decir, ir haciendo ceros mediante operaciones elementales.
Consideremos el problema anterior:
Max 7 x1 + 4 x 2
s. a
− 2 x1 + x 2 ≤ 2
x1 − x 2 ≤ 1
x1 + x 2 ≤ 4
x1 , x 2 ≥ 0
introduciendo las variables de holgura, en las restricciones, para convertirlas en igualdad
quedaría
Max 7 x1 + 4 x2 + 0 x 3 + 0 x 4 + 0 x5
s. a
− 2 x1 + x 2 + x 3
x1 − x 2
x1 + x 2
=2
+ x4
=1
+ x5 = 4
x1 , x 2 , x 3 , x 4 , x 5 ≥ 0
Si consideramos notación vectorial tendremos:
Max 7 x1 + 4 x 2 + 0 x3 + 0 x 4 + 0 x 5
 0  2 
 0
 1
1
 −2 
   
 
 
 
 
x1  1  + x 2  −1 + x 3  0 + x 4  1 + x 5  0 =  1 
   
 
 
 
 
 1  4 
 0
 0
1
1
x1P1 + x 2 P2 + x 3 P3 + x 4 P4 + x 5 P5 = P0
x1 , x 2 , x 3 , x 4 , x 5 ≥ 0
Paso 1: Determinar una solución admisible básica inicial; a ser posible elegir como base
inicial la canónica.
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
119
A partir de estos datos podemos pasar a la primera tabla o tabla inicial que se
construye de la siguiente forma:
Base
Inicial
P3
P4
P5
c1 = 7
P1
Costes b = P0
Básicos
2
-2
c3 = 0
1
1
c4 = 0
4
1
c5 = 0
c1 - z 1
z0
c2 = 4
P2
c3 = 0
P3
c4 = 0
P4
c5 = 0
P5
1
-1
1
c2 - z 2
1
0
0
c3 - z 3
0
1
0
c4 - z 4
0
0
1
c5 - z 5
Se considera siempre como base inicial los vectores que nos proporcionan la base
canónica. Esto equivale a que en nuestro sistema lineal anulamos las variables principales,
luego, la solución inicial sería (0, 0, 2, 1, 4) correspondiente al vértice (0, 0).
La segunda columna nos representa los costes asociados a dicha base, el no
considerar los demás es porque al anular la variable no influye en los posteriores elementos
que tenemos que calcular.
La tercera columna corresponde al vector de recursos original, o también denotado
por el vector P0.
Las columnas restantes corresponden a las variables originales y a las necesarias de
holgura.
Paso 2: Calcular ck - zk para cada k = 1, 2,..., m.
Si seguimos el algoritmo descrito anteriormente, una vez determinada la base inicial
{P3, P4, P5}, correspondiente a la canónica, calculamos ck - zk para cada k = 1, 2, 3, 4, 5.
Recodemos que:
m
zj = c1a1j + c2a2j +...+ cmamj =
∑c a
k =1
k
kj
este producto no es más que el producto escalar de los costes básicos por la correspondiente
columna Pj.
c1 - z1 = c1 - ctBP1 = 7
c2 - z2 = c2 - ctBP2 = 4
c3 - z3 = c3 - ctBP3 = 0
c4 - z4 =c4 - ctBP4 = 0
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
120
c5 - z5 = c5 - ctBP5 = 0
Los valores cj - zj asociados a la base siempre son nulos, y el valor de la función
objetivo en la primera tabla también, dado que anulamos las variables principales.
Una vez calculados estos elementos podemos ya aplicar los criterios de entrada y
salida de la base:
Paso 3: (a) Elegir el vector j tal que cj - zj = max {ck - zk} entre todos los ck - zk > 0. Pj
entrará en la base.
max {c1 - z1 , c2 - z2} = max {7, 4} = 7 ⇒ P1 Entra en la base.
Paso 4: Elegir el vector Pr de la base para salir de la misma.
Como conocemos el vector que entra en la base, P1, para determinar cuál sale
tendremos que situarnos sobre su columna, es decir tomar el vector P1 y realizar el cociente
entre los valores de P0 y los correspondientes en P1 que sean estrictamente positivos.
 x k 0  1 4 
xr 0
= ,
=1
= min 
a rj
 a r1  1 1 
En nuestro ejemplo se corresponde con P4.
La trasformación en la base es de {P3, P4, P5} a {P3, P1, P5}
En la siguiente etapa tendríamos que realizar las correspondientes operaciones para
transformar el vector P1 en el vector canónico P4.
Así la siguiente tabla será:
Base
P3
P1
P5
CB
c3 = 0
c4 = 7
c5 = 0
P0
4
1
3
7
c1 = 7
P1
0
1
0
0
c2 = 4
P2
-1
-1
2
11
c3 = 0
P3
1
0
0
0
c4 = 0
P4
2
1
-1
-7
c5 = 0
P5
0
0
1
0
La solución asociada es (1, 0, 4, 0, 3) que corresponde al vértice (1, 0) adyacente a
(0, 0).
En la tabla c2 - z2 = 11 es el único positivo, por tanto, entra en la base P2. Y sale P5
puesto que es también el único posible dado que en su correspondiente columna son todos
negativos salvo a32.
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
121
Tras determinar el vector que entra y el que sale, la trasformación en la base es de
{P3, P1, P5} a {P3, P1, P2} y la siguiente tabla es:
Base
P3
P1
P2
CB
c3 = 0
c4 = 7
c5 = 4
P0
11/2
5/2
3/2
47/2
c1 = 7
P1
0
1
0
0
c2 = 4
P2
0
0
1
0
c3 = 0
P3
1
0
0
0
c4 = 0
P4
3/2
1/2
-1/2
-3/2
c5 = 0
P5
1/2
1/2
1/2
-11/2
En esta última tabla todos los valores de cj - zj son negativos, y no existen no básicos
nulos, lo que nos indica que estamos en tabla óptima y que la solución es única
correspondiendo al punto (5/2, 3/2, 11/2, 0, 0) que es el vértice (5/2, 3/2).
La resolución de un problema de programación lineal implica el tener que realizar
muchas operaciones elementales, que nos determinan la configuración de las distintas tablas
hasta llegar a la solución final.
La inclusión del ordenador nos permite resolver problemas, evidentemente de una
forma más rápida y con un número de variables mayor.
Determinación de una solución admisible básica inicial.
La primera etapa del método del símplex exige el conocimiento de una solución
admisible básica inicial, lo cual, salvo que desde un principio se disponga de una base
canónica (por ejemplo al introducir variables de holgura como en el ejemplo anterior), no
suele ocurrir.
Exponemos a continuación un método de cálculo que nos permite crear, de una
manera artificial, una solución admisible básica inicial, mediante la introducción de las
denominadas VARIABLES ARTIFICIALES.
Supongamos un problema de Programación Lineal
Max ctx
s.a A1x ≤ b1
A2x ≥ b2
A3x = b
(5)
x≥0
Para pasar a la forma estándar hemos de incorporar variables de holgura, las cuales
se introducen tanto en las restricciones de mayor o igual como en las de menor o igual, dado
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
122
que el significado es el mismo, nos miden el excedente o la falta de recursos en cada una de
las restricciones:
Max ctx
s.a
A1x + xH = b1
A2x - yH = b2
A3x = b3
x, xH, yH ≥ 0
(6)
En general, no dispondremos de una base canónica que configure una submatriz de
la matriz de coeficientes del sistema de restricciones; entonces, para completar la base
canónica, introducimos otras variables también positivas llamadas variables artificiales y
obtenemos:
Max ctx
s.a A1x + xH = b1
A2x - yH + yA = b2
A3x
+ xA = b3
x, xH, xA, yH, yA ≥ 0
(7)
La diferencia entre las variables de holgura y las artificiales es que las primeras se
introducen para transformar las inecuaciones en ecuaciones, mientras que las artificiales se
introducen para construir la base canónica de partida; esta introducción aumenta el número
de variables del problema.
Siempre se utilizará para obtener la base de partida los vectores originales y los que
nos proporcionan las variables de holgura. Una vez determinados los que faltan, se
introducirán las variables artificiales para completar la base.
Las soluciones que se obtengan del problema original no deben contener a las
variables artificiales, dado que éstas se introducen sobre igualdades y por tanto en el óptimo
deben tomar valores nulos. De la misma forma, si la solución contiene alguna variable
artificial, el problema carece de sentido.
Una vez introducidas las correspondientes variables de holgura y artificiales el
problema se resuelve de la siguiente forma:
Construimos una función objetivo en la cual se penaliza la introducción de las
variables artificiales, esta penalización se lleva a cabo asociándoles un coste grande,
generalmente denotado por M, este hecho hace que el método se denomine “El Método de
la M-grande”.
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
123
En las iteraciones el valor grande de M asignado a las variables artificiales hará que
éstas salgan de la base y no vuelvan a entrar.
Por tanto, consideraríamos el problema en forma estándar, con las correspondientes
variables de holgura y artificiales y resolvemos por el método del símplex el problema:
Max ctx - (M, M, ..., M)xA - (M, M, ..., M)yA
s.a A1x + xH
= b1
A2x - yH + yA = b2
A3x
+ xA = b3
x, xH, xA, yH,.yA ≥ 0
(8)
El valor de M es lo suficientemente grande para que en sucesivas iteraciones salga de
la base.
Tras su resolución puede ocurrir:
(a) Que tenga solución, lo cual se traduce en que ninguna variable artificial está en la
base y por tanto son nulas todas ellas.
(b) Que alguna de las variables artificiales esté en la base, entonces el problema
original no posee solución.
(c) Que el problema no tenga solución, con lo cual el de partida tampoco lo tiene.
Si atendemos a la función objetivo, y dado el valor de peso que posee M, se puede
reducir de la siguiente forma:
Max ctx - (M, M, ..., M)xA - (M, M, ..., M)yA
que es equivalente a:
Max - (M, M, ..., M)xA - (M, M, ..., M)yA
y puesto que M es una constante:
Max -(1, ..., 1)xA - (1, ..., 1)yA
y su óptimo es el mismo que el de:
Min (1, 1, ..., 1)xA + (1, 1, ..., 1)yA.
Esta última función es la que se utiliza como función auxiliar en el método
denominado “El Método de las dos fases”, el cual pasamos a desarrollar:
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
124
Fase 1: En la primera fase se resuelve el problema auxiliar:
Min (1, 1, ..., 1)xA + (1, 1, ..., 1)yA
s.a A1x + xH
= b1
A2x - yH + yA = b2
A3x
+ xA = b3
x, xH, xA, yH,.yA ≥ 0
(9)
mediante el método del símplex antes expuesto, obteniendo una solución admisible mínima,
pudiendo ocurrir:
(a) Que el valor mínimo de la función objetivo sea cero, en cuyo caso pasamos a la
fase 2.
(b) Que el valor mínimo de la función objetivo sea positivo, en cuyo caso el
problema de Programación Lineal propuesto no posee solución puesto que no
existen puntos admisibles.
Habida cuenta que toda solución admisible básica del problema (6) es solución del
problema auxiliar (9) con xA = 0, yA = 0, o lo que es lo mismo con:
Mín (1, 1, ..., 1)xA + (1, 1, ..., 1)yA = 0
resulta evidente el siguiente paso:
Fase 2: Volvemos al problema original (6) utilizando la matriz obtenida en la
primera fase como primera iteración de la segunda fase, pasando entonces a la segunda
etapa del método del símplex. Es decir, modificamos la función objetivo y todo lo que sobre
ella afecta en la tabla.
Obsérvese que ninguno de los vectores asociados a las variables artificiales deben
encontrarse en la base óptima, es por ello por lo que al pasar a la Fase 2 se suelen suprimir
las columnas correspondientes a dichas variables.
Con el siguiente ejemplo vamos a ver cómo se aplican los dos métodos, que en
realidad es uno contemplado de dos formas distintas.
Sea el problema:
Max x1 + 6x2 - 4x3
s.a
x1 + 2x2 - x3 = 20
2x1 + x2 + x3 ≤ 40
2x1 + x2 + 4x3 ≥ 55
x1 , x 2 , x 3 ≥ 0
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
125
Para su resolución lo primero que tenemos que hacer es pasar nuestro problema a
forma estándar, para lo cual se introducen las correspondientes variables de holgura y
artificiales. En este ejemplo, como la primera y tercera restricción son de igualdad y de
mayor o igual, respectivamente, tendremos que introducir dos variables artificiales. Por
tanto el conjunto de restricciones nos quedaría:
x1 + 2x2 - x3 + x6 = 20
2x1 + x2 + x3 + x4 = 40
2x1 + x2 + 4x3 - x5 + x7 = 55
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0
Las variables x4 y x5 son de holgura y x6 y x7 son artificiales. Veamos ahora como
actuamos aplicando el método de la M-Grande. El problema que consideramos es:
Max x1 + 6x2 - 4x3 + 0x4 + 0x5 - M x6 - M x7
s.a x1 + 2x2 - x3 + x6 = 20
2x1 + x2 + x3 + x4 = 40
2x1 + x2 + 4x3 - x5 + x7 = 55
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0
La base inicial está formada por los vectores {P6, P4, P7}. Y la primera tabla es:
B
P6
P4
P7
CB
-M
0
-M
P0
20
40
55
-75M
1
P1
1
2
2
1+3M
6
P2
2
1
1
6+3M
-4
P3
-1
1
4
-4+3M
0
P4
0
1
0
0
0
P5
0
0
-1
-M
-M
P6
1
0
0
0
-M
P7
0
0
1
0
Aplicando los criterios de entrada y salida, entra P2, y saldría entonces
 20 40 55 
 , correspondiente a P6.
min  ,
,
2
1
1
B
P2
P4
P7
CB
6
0
-M
1
P0
P1
10
1/2
30
3/2
45
3/2
60-45M
2+3/2M
6
P2
1
0
0
0
-4
P3
-1/2
3/2
9/2
-1+9/2M
0
P4
0
1
0
0
0
P5
0
0
-1
-M
-M
P6
1/2
-1/2
-1/2
-3-3/2M
-M
P7
0
0
1
0
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas

 30
Entra P3 y sale min 
3
2
B
P2
P4
P3
CB
6
0
-4
P0
15
15
10
50
1
P1
2/3
1
1/3
-5/3
126

45 
 , correspondiente a P7.
,
9
2
6
P2
1
0
0
0
-4
P3
0
0
1
0
0
P4
0
1
0
0
0
P5
-1/9
1/3
-2/9
-2/9
-M
P6
4/9
-1/3
-1/9
-28/9-M
-M
P7
1/9
-1/3
2/9
2/9-M
Con esta tabla hemos llegado a la tabla final. En ella no aparecen las variables
artificiales, y como todos los cj - zj son negativos y nulos estamos en tabla óptima y la
solución es: (0, 15, 10, 15, 0) con valor de la función objetivo 50.
Si aplicamos el método de las dos fases en la primera calcularíamos:
Min x6 + x7
La base inicial en ambos casos estría formada por los vectores {P6, P4, P7}.
En la primera fase resolvemos el problema:
1ª Fase:
Min x6 + x7 ⇒ Max - x6 - x7
s.a x1 + 2x2 - x3 + x6 = 20
2x1 + x2 + x3 + x4 = 40
2x1 + x2 + 4x3 - x5 + x7 = 55
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0
cuya primera tabla es:
B
P6
P4
P7
CB
-1
0
-1
P0
20
40
55
-75
0
P1
1
2
2
3
0
P2
2
1
1
3
0
P3
-1
1
4
3
0
P4
0
1
0
0
0
P5
0
0
-1
-1
-1
P6
1
0
0
0
-1
P7
0
0
1
0
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
127
Podría entrar P1, P2 y P3, tomemos, por ejemplo, que entra P2, saldría entonces
 20 40 55 
 , correspondiente a P6.
,
min  ,
2
1
1
B
P2
P4
P7
CB
0
0
-1
P0
10
30
45
-45
0
P1
1/2
3/2
3/2
3/2

 30
Entra P3 y sale min 
3
2
B
P2
P4
P3
CB
6
0
0
P0
15
15
10
0
0
P1
2/3
1
1/3
0
0
P2
1
0
0
0
0
P3
-1/2
3/2
9/2
9/2
0
P4
0
1
0
0
0
P5
0
0
-1
-1
-1
P6
1/2
-1/2
-1/2
-3/2
-1
P7
0
0
1
0
0
P5
-1/9
1/3
-2/9
0
-1
P6
4/9
-1/3
-1/9
-1
-1
P7
1/9
-1/3
2/9
-1

45 
 , correspondiente a P7.
,
9
2
0
P2
1
0
0
0
0
P3
0
0
1
0
0
P4
0
1
0
0
Esta tabla nos indica que hemos llegado a la solución final puesto que, observamos
como las variables artificiales no están en la base del problema de minimización de la suma
de las mismas.
Para pasar a la segunda fase resolvemos el problema original planteado, utilizando la
última tabla obtenida en la primera fase, suprimiendo las correspondientes columnas de las
variables artificiales y retomando nuestra función objetivo original:
2ª Fase:
B
P2
P4
P3
CB
6
0
-4
P0
15
15
10
50
1
P1
2/3
1
1/3
-5/3
6
P2
1
0
0
0
-4
P3
0
0
1
0
0
P4
0
1
0
0
0
P5
-1/9
1/3
-2/9
-2/9
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
128
Como no hay cj - zj positivos estamos en tabla óptima y la solución es (0,15,10,15,0)
con valor de la función objetivo 50.
Desarrollo matricial del método del Símplex.
El método del símplex es, en realidad, una aplicación directa de la teoría del cambio
de base. Es por ello por lo que en este apartado tratamos de expresar este método desde el
punto de vista matricial.
Sea
Max ct x
s.a Ax = b
x≥0
donde A es una matriz de orden mxn y de rango completo.
En el método del símplex partimos de una base canónica, e iteración tras iteración,
vamos reemplazando un vector de la base, formada por columnas de la matriz A, por otros
vectores también columnas de dicha matriz. Así partiendo de la base canónica supongamos
que llegamos en la tabla final a la base:
{P1, P2, ..., Pm}
donde Pi es la columna i-ésima de la matriz A, con solución admisible básica asociada, x*,
en la cual evidentemente:
x1* P1 + x 2* P2 + ... + x m* Pm = b
pues dicho vector pertenece al espacio engendrado por los anteriores.
Tendremos entonces:
Bx* = b = P0
(10)
donde B es la matriz asociada a dicha base, que nos realiza el cambio desde la base canónica
a la base de la última tabla.
De manera análoga, podemos expresar cualquier otro vector Pj (j = m+1, ..., n) en
esta última base. Denotando por Pj a los vectores de la tabla inicial y por Pj* , a los de la
última obtenemos que, como:
Pj = a1j P1 + a2j P2 + ... + amj Pm
entonces:
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
129
Pj = B Pj*
(11)
donde
Pj* = (a1j , a2j , ..., amj)t
Además
z0 = ctx*
m
zj =
∑c a
i
i =1
ij
(12)
= ct Pj*
(13)
Ahora bien, como B es invertible resulta:
x*= B-1b
(14)
Pj* = B-1Pj
(15)
zj = ctB-1Pj
(16)
z0 = ctB-1b
(17)
Este planteamiento es igualmente aplicable en un paso intermedio en el que la matriz
B sería la matriz del cambio de base que supone el pasar de una tabla a la siguiente.
Habrá que tener en cuenta que:
La utilidad del desarrollo matricial está basada en el conocimiento de la base inicial
y la final, de forma que, como lo que se hace son sucesivos cambios de base pasamos de:
(B / I)
a
(I / B-1)
Puesto que se parte de la base canónica, la matriz B corresponde a los vectores de la
base final en la tabla inicial, mientras que, la matriz B-1 son los vectores de la base inicial en
la tabla final.
Si se han introducido variables artificiales en el problema, se deben mantener hasta
la última tabla para conocer la matriz B-1, o bien, se pueden suprimir las variables
artificiales de restricciones que posean variables de holgura, puesto que sus vectores son
opuestos en todo momento.
Las bases no se ordenan, se mantienen según la estructura del problema.
El desarrollo matricial será de gran utilidad en capítulos posteriores, cuando se
estudian los problemas de sensibilidad.
Apliquemos el desarrollo matricial a nuestro ejemplo:
Sea el problema:
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
130
Max x1 + 6x2 - 4x3
s.a x1 + 2x2 - x3 = 20
2x1 + x2 + x3 ≤ 40
2x1 + x2 + 4x3 ≥ 55
x1 , x 2 , x 3 ≥ 0
Sabiendo que la base final es {P2, P4, P3} obtener la solución de la tabla final.
Según el desarrollo sabemos que:
x* = B-1b
Pj* = B-1Pj
que corresponden a la solución y a los vectores asociados a la tabla final. Como conocemos
la base final la matriz B será:
B = ( P2
La solución es:
P4
 2 0 −1


P3 ) =  1 1 1 


1 0 4 
⇒
B
−1
4 0 1
1

=  −3 9 −3
9

 −1 0 2 
 4 0 1  20 15
1

   
x* = B -1b =  −3 9 −3 40 = 15
9
   
 −1 0 2  55 10
Que corresponde a: (0, 15, 10, 15, 0).
Los elementos que nos faltarían en la tabla final son:
B
P2
P4
P3
CB
6
0
-4
*
P0
15
15
10
1
P*1
6
P*2
1
0
0
0
-4
P*3
0
0
1
0
0
P*4
0
1
0
0
0
P*5
{P , P } que se determinarían como: Pj* = B-1Pj
*
1
*
5
 4 0 1  1  2 / 3
 4 0 1  0   −1 / 9 
1
1

  


  

P1* =  −3 9 −3 2  =  1  y P5* =  −3 9 −3 0  =  1 / 3 
9
9
  


  

 −1 0 2  2   1 / 3 
 −1 0 2  −1  −2 / 9 
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Programación Matemática para Economistas
131
La obtención de estos vectores nos permite confeccionar la tabla final. El resto de
elementos, o se calculan como zj = ctB-1Pj y z0 = ctB-1b, o simplemente se utiliza la tabla.
Así, la final es:
B
P2
P4
P3
CB
6
0
-4
P0
15
15
10
50
1
P1
2/3
1
1/3
-5/3
6
P2
1
0
0
0
-4
P3
0
0
1
0
0
P4
0
1
0
0
0
P5
-1/9
1/3
-2/9
-2/9
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Descargar