5.- Análisis de sensibilidad.

Anuncio
Programación Matemática para Economistas
144
5.- Análisis de sensibilidad.
Dentro de este apartado, que lleva por título análisis de sensibilidad, incluiremos tres
grandes secciones que en la literatura suelen ir desagrupadas. Nos referimos al análisis de
postóptimo, al análisis de sensibilidad propiamente dicho y a la programación lineal
paramétrica.
5.1.- Análisis de post-optimización.
El análisis de post-optimización estudia la estabilidad de la solución óptima de un
problema de Programación Lineal una vez que se modifica en el mismo algún parámetro
(cj, bi, aij), se introducen nuevas variables o se añaden nuevas restricciones.
Pues bien, para ello el conocimiento de las matrices B y B-1 es fundamental, tanto
desde el punto de vista teórico como desde el práctico, debido a las relaciones:
x*B = B-1P0
Pj* = B-1Pj
(20)
(21)
zj = cBt Pj* = cBtB-1Pj
t
(22)
*
j
c j - z j = c j - cB P
(23)
siendo válidas las tres últimas para j=1,2,...,n.
En las expresiones anteriores x*B es una parte de x* (solución óptima) formada por
las componentes básicas del vector solución, colocadas en el orden asociado a la base B; cB
es el vector de costes asociados a la base, cuyas componentes están, asimismo, puestas en el
mismo orden.
5.1.1.- Modificación de un coeficiente de la función objetivo.
Consideremos el problema:
Max ctx
s.a Ax = b
x≥0
y supongamos que un coeficiente de la función objetivo cj se modifica, pasando a valer c 0j .
Se trata de verificar si este cambio supone una modificación en la estructura de la solución
del problema original, entendiendo por ello un cambio en B, en x*B , o en ambos.
En lo que sigue, supondremos
B = {P1, P2, ..., Pm}
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
145
es decir, que la base final ha sido: { P1* , P2* , ..., Pm* } y, por lo tanto, {1,2,...,m} son los
subíndices asociados a las variables básicas y por consiguiente {m+1,...,n} los asociados a
las restantes (no básicas).
Pues bien, si de cj pasamos a c 0j puede ocurrir dos cosas:
A) j ∈ {1,2,...,m} es decir, que el coste modificado, cj, sea básico: cj ∈ cB. En este caso, por
(21) y (22):
zk = cBtB-1Pk
k=1,2,...,n
de donde resulta que todos los zk dependen de los costes básicos y ello quiere decir que una
modificación de cB va a afectar a todos los zk, pasando a valer z k0 , k=1,2,...,n.
Ahora bien, dichos valores son de dos tipos:
A-1) k ∈ {1,2,...,m}, es decir, los z k0 básicos (asociados a variables básicas), los cuales no
van a afectar a la estructura del problema, dado que
ck - z k0 = 0 ∀ k ∈ {1,2,...,m}
A-2) k ∈ {m+1,...,n}, en este caso puede ocurrir que algún o algunos ck - z k0 se hagan
positivos, se anulen o sigan siendo negativos. En los dos primeros casos se continúa el
método del símplex hasta su fin, modificándose, por lo tanto, la estructura del problema; en
el tercer caso la modificación de cj no ha producido cambio en dicha estructura.
B) j ∈ {m+1,...,n} es decir, el coste modificado c 0j no es básico. En este caso el único
problema que va a surgir es que c 0j - zj deje de ser negativo y se haga, por lo tanto, nulo o
positivo, en cuyo caso resultará que hemos de continuar aplicando el método del símplex
hasta su fin.
Veamos este hecho en un problema concreto:
Supongamos una fábrica dedicada a la obtención de levadura, harina normal y harina
integral obteniendo un beneficio unitario de 5, 4 y 2 u.m. respectivamente. La fábrica
trabaja 10 horas diarias necesitando la producción, tanto de cada tonelada de levadura como
de cada tonelada de harina normal, 3 horas diarias, mientra que la obtención de una tonelada
de harina integral requiere 4 horas. Por otra parte, el coste de una tonelada de levadura es 12
u.m., mientras que la de harina supone 6 y 7 u.m., respectivamente. ¿Cuál sería la
producción óptima diaria si se desea maximizar el beneficio sabiendo que el presupuesto de
cada día es de 24 u.m.?.
Si denominamos x1 a la cantidad de toneladas de levadura obtenida en un día, y x2 y
x3 a la cantidad diaria de toneladas de harina normal y harina integral, la formulación de este
problema sería la siguiente:
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
146
Max 5x1 + 4x2 + 2x3
s.a 3x1 + 3x2 + 4x3 ≤ 10
12x1 + 6x2 + 7x3 ≤ 24
x1 , x2 , x3 ≥ 0
que pasado a forma estándar quedaría:
Max 5x1 + 4x2 + 2x3 + 0x4 + 0x5
s.a 3x1 + 3x2 + 4x3 + x4 = 10
12x1 + 6x2 + 7x3 + x5 = 24
x1 , x2 , x3 , x4 , x5 ≥ 0
Si la resolvemos por el método del símplex tendremos las siguientes tablas:
B
P4
P5
B
P4
P1
B
P2
P1
CB
0
0
CB
0
5
CB
4
5
P0
10
24
0
5
P1
3
12
5
4
P2
3
6
4
2
P3
4
7
2
0
P4
1
0
0
0
P5
0
1
0
P0
4
2
10
5
P1
0
1
0
4
P2
3/2
1/2
3/2
2
P3
9/4
7/12
-11/12
0
P4
1
0
0
0
P5
-1/4
1/12
-5/12
P0
8/3
2/3
14
5
P1
0
1
0
4
P2
1
0
0
2
P3
3/2
-1/6
-19/2
0
P4
2/3
-1/3
-1
0
P5
-1/6
1/6
-1/6
Luego, la solución final sería (2/3, 8/3, 0, 0, 0). Supongamos que el beneficio
unitario de la levadura pasa a ser 9 u.m., ¿qué pasará con la solución?, ¿será la misma?.
Lo que ha ocurrido es que un coste básico c1 se ha modificado pasando de valer 5 a
valer 9. Dicho cambio afectará a los cj - zj no básicos, pudiendo tomar cualquier valor. En
nuestro caso, si en la tabla final modificamos el valor de c1 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
B
P2
P1
CB
4
9
P0
8/3
2/3
50/3
147
9
P1
0
1
0
4
P2
1
0
0
2
P3
3/2
-1/6
-15/6
0
P4
2/3
-1/3
1/3
0
P5
-1/6
1/6
-5/6
con lo cual vemos que ésta no sería la última tabla puesto que c4 - z4 es positivo, teniendo
que entrar P4 en la base ocupando el lugar de P2. La tabla que refleja este cambio sería:
B
P4
P1
CB
0
9
P0
4
2
18
9
P1
0
1
0
4
P2
3/2
1/2
-1/2
2
P3
9/4
7/12
-13/4
0
P4
1
0
0
0
P5
-1/4
1/12
-3/4
tabla final donde la nueva solución sería:(2, 0, 0, 4, 0).
Supongamos ahora que el beneficio que cambia no es el de la levadura sino el de la
harina integral, pasando de valer 2 a valer 6. En este caso, como este coeficiente
corresponde a una variable no básica (puesto que P3 no está en la base), su modificación
sólo afecta al valor de c3 - z3. Si en la tabla final modificamos el valor de c3 obtenemos:
B
P2
P1
CB
4
5
P0
8/3
2/3
14
5
P1
0
1
0
4
P2
1
0
0
6
P3
3/2
-1/6
5/6
0
P4
2/3
-1/3
-1
0
P5
-1/6
1/6
-1/6
con lo cual, al obtener un valor positivo en c3 - z3. debemos introducir P3 en la base
debiendo salir P2,
B
P3
P1
CB
6
5
P0
16/9
26/27
418/27
5
P1
0
1
0
4
P2
2/3
1/9
-5/9
6
P3
1
0
0
0
P4
4/9
-7/27
-37/27
0
P5
-1/9
8/54
-2/27
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
148
por tanto, la solución, tras la modificación de este coste, sería:(26/27, 0, 16/9, 0, 0).
5.1.2.- Modificación de un recurso.
Suponemos ahora que un recurso bi cambia a bi0 . Llamemos b0 al nuevo vector de
recursos:
 b1 
 . 
 0
b0 =  bi 
 . 
 
 bm 
Por (20): x*B = B-1P0 = B-1b, es decir, un cambio en los recursos va a suponer un
cambio en la solución del problema original. Sin embargo, este cambio no produce
directamente modificación de la matriz B ni de los valores cj - zj.
Ahora bien, puede ocurrir que al efectuar el producto:
B-1b0 = x*0
resulte que la nueva solución no sea admisible por tener alguna componente negativa, con lo
cual ha de procederse a aplicar el método dual del símplex para obtener la solución
admisible.
Volviendo al problema considerado en el apartado anterior, vamos a estudiar qué
ocurre si el recurso de la primera restricción cambia. Supongamos que por problemas
técnicos, la fábrica pasa de trabajar 10 horas diarias a trabajar sólo 5. ¿Cuál será la nueva
solución de este problema?.
Sabemos que la nueva solución se obtiene multiplicando la inversa de la matriz B
por el vector de recursos original en el que se ha modificado el primer recurso, así tenemos:
 2 / 3 − 1 / 6  5   − 2 / 3
x *0 = B −1b 0 = 

 = 
 − 1 / 3 1 / 6   24  7 / 3 
Podemos observar cómo la primera componente de este vector es negativa, cosa que
no podemos admitir, puesto que todas las variables deben tomar valores mayores o iguales a
cero. Para arreglar esta cuestión, como ya hemos indicado, debemos utilizar el método dual
del símplex. Colocando este nuevo vector en la tabla final de este problema tenemos:
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
B
P2
P1
CB
4
5
P0
-2/3
7/3
9
149
5
P1
0
1
0
4
P2
1
0
0
2
P3
3/2
-1/6
-19/2
0
P4
2/3
-1/3
-1
0
P5
-1/6
1/6
-1/6
2
P3
-9
4/3
-14/3
0
P4
-4
1/3
-5/3
0
P5
1
0
0
teniendo que salir de la base P2 y entrar P5 quedando:
B
P5
P1
CB
0
5
P0
4
5/3
25/3
5
P1
0
1
0
4
P2
-6
1
-1
Por consiguiente, la nueva solución tras la modificación de este recurso sería:
(5/3, 0, 0, 0, 4).
5.1.3.- Modificación de un coeficiente de la matriz asociado a una variable no básica.
Estudiamos en este apartado cómo repercute un cambio sufrido por un coeficiente
técnico asociado a una variable no básica en la estructura del problema original.
Sea aij un coeficiente técnico no básico; supongamos que se modifica, pasando a
valer aij0 . Llamemos Pj0 al vector en que se ha convertido Pj una vez que hemos cambiado aij
por aij0 :
 a1 j 
 . 
 0
Pj0 =  aij 
 . 
 
 amj 
Dado entonces que zj depende de Pj, su valor modificado sería:
z 0j = cBtB-1 Pj0
de donde resulta:
A) Si cj - zj < 0, la modificación sufrida por el coeficiente técnico aij no ha afectado a la
estructura general del 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
150
B) Si cj - zj ≥ 0, el vector Pj0 ha de entrar en la base, y el problema ha de continuarse tal y
como se ha visto en apartados anteriores.
5.1.4.- Adición de nuevas variables.
Se puede observar cómo la introducción de nuevas variables (siempre en el supuesto
de tener ya resuelto el problema primitivo) crea nuevos vectores y, por tanto, nuevos cj - zj,
que pueden ser calculados por (23):
cj - zj = cj - cBtB-1Pj
y nuevas columnas en nuestras tablas del símplex, que pueden ser obtenidas por (21):
Pj* = B-1Pj
De esta forma, el método a seguir es inmediato, dado que si el nuevo término cj - zj
es negativo, la variable introducida no modifica la estructura del problema, la nueva variable
no ha de entrar en la base, con lo que su nivel de utilización es cero. Si cj - zj es positivo,
entonces se introduce Pj en la base y se obtiene su nivel de utilización. Obsérvese que el
caso cj - zj nulo supone que la introducción de la nueva variable no va a suponer cambio
alguno en z0 y puede considerarse entonces como que no supone cambio en la estructura del
problema.
Vamos a estudiar en nuestro ejemplo el efecto de la entrada de una nueva variable.
Para ello, supongamos que se está planeando la fabricación de otro tipo de levadura más
suave que supondría un beneficio unitario de 7 u.m., necesitando la producción de cada
tonelada de la misma 4 horas, con un coste de 15 u.m.. ¿Sería rentable su fabricación?.
Con esta nueva variable la formulación del problema es:
Max 5x1 + 4x2 + 2x3 + 7x4
s.a 3x1 + 3x2 + 4x3 + 4x4 ≤ 10
12x1 + 6x2 + 7x3 + 15x4 ≤ 24
x1 , x2 , x3 , x4 ≥ 0
luego, pasado a forma estándar queda:
Max 5x1 + 4x2 + 2x3 + 7x4 + 0x5 + 0x6
s.a 3x1 + 3x2 + 4x3 + 4x4 + x5 = 10
12x1 + 6x2 + 7x3 + 15x4 + x6 = 24
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0
Para saber si la fabricación de este nuevo tipo de levadura resulta rentable o no es
necesario conocer su beneficio marginal y, para ello, debemos conocer qué forma tendría
este vector en nuestra última tabla, lo que se puede obtener mediante la siguiente fórmula:
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
151
 2 / 3 −1 / 6 4   1 / 6 
P4* = B −1 P4 = 
  = 

 −1 / 3 1 / 6 15   7 / 6
1 / 6
luego, c4 - z4 = 7 - ( 4 5)
 = 1 / 2 . Este valor es positivo lo que significa que resulta
 7 / 6
rentable la fabricación de esta nueva levadura, puesto que, su entrada en la base va a
suponer un aumento en el valor del beneficio total, es decir, en z0. Sustituyendo estos
resultados en la tabla final que disponemos de este problema tenemos:
B
P2
P1
CB
4
5
5
P1
0
1
0
P0
8/3
2/3
14
4
P2
1
0
0
2
P3
3/2
-1/6
-19/2
7
P4
1/6
7/6
1/2
0
P5
2/3
-1/3
-1
0
P6
-1/6
1/6
-1/6
7
P4
0
1
0
0
P5
5/7
-2/7
-6/7
0
P6
-4/21
1/7
-5/21
luego, P4 debe entrar en la base teniendo que salir P1.
B
P2
P4
CB
4
7
5
P1
-1/7
6/7
-3/7
P0
18/7
4/7
100/7
4
P2
1
0
0
2
P3
32/21
-1/7
-65/21
con lo que la nueva solución es: (0, 18/7, 0, 4/7, 0) donde vemos que se debe producir esa
nueva levadura para maximizar los beneficios.
5.1.5.- Adición de nuevas restricciones.
Supongamos que al problema original le añadimos p restricciones de la forma:
∑a
j
ij
x j ≤ bi
i = m+1,...,m+p
pudiendo ocurrir dos cosas:
A) Que las restricciones añadidas sean satisfechas por el óptimo; en este caso x* sigue
siendo la solución del problema y la modificación habida no ha cambiado la estructura de la
solución.
B) Que al menos una de las restricciones no fuese satisfecha por el óptimo. En este caso se
añaden a la última tabla del símplex nuevas filas con las nuevas restricciones, operando
convenientemente para que en el caso en que la base quede afectada, quede en la forma
acostumbrada y aplicando, si fuese necesario, el método dual del símplex.
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
152
Vamos a introducir una nueva restricción en nuestro problema original. Supongamos
que por exigencias del mercado el quíntuple de la cantidad total producida de levadura no
puede ser mayor que la suma de las cantidades de harina obtenidas, es decir, se debe
verificar:
5x1 ≤ x2 + x3
Dicha restricción no es verificada por el óptimo obtenido, que si recordamos era
(2/3, 8/3, 0, 0, 0), ya que,
5 · 2/3 > 8/3 + 0
por lo que tenemos que introducirla en nuestro problema. Sumándole una variable de
holgura para conseguir la igualdad, dicha restricción adopta la siguiente forma:
5x1 - x2 - x3 + x6 = 0
que al incorporarla en la última tabla del símplex nos genera una nueva fila en dicha tabla y
una nueva columna correspondiente a la nueva variable de holgura introducida.
B
P2
P1
P6
CB
4
5
0
P0
8/3
2/3
0
14
5
P1
0
1
5
0
4
P2
1
0
-1
0
2
P3
3/2
-1/6
-1
-19/2
0
P4
2/3
-1/3
0
-1
0
P5
-1/6
1/6
0
-1/6
0
P6
0
0
1
0
Vemos cómo la base canónica ha desaparecido, ya que ni P1 ni P2 tienen la forma del
segundo y primer vector de la base canónica, respectivamente, como debía de ser, luego,
debemos “arreglar” esta cuestión. Para ello, debemos trabajar con las filas buscando una
pivote, como hacemos en el método del símplex para pasar de una tabla a otra.
Primero intentaremos conseguir que el vector P1 adopte la forma del segundo vector
de la base canónica, para lo cual a la tercera fila debemos restarle la segunda multiplicada
por 5:
B
P2
P1
P6
CB
4
5
0
P0
8/3
2/3
-10/3
14
5
P1
0
1
0
0
4
P2
1
0
-1
0
2
P3
3/2
-1/6
-1/6
-19/2
0
P4
2/3
-1/3
5/3
-1
0
P5
-1/6
1/6
-5/6
-1/6
0
P6
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
153
Pero, todavía no tenemos la base canónica, ya que P2 no tiene la forma del primer
vector de la base. Vamos a conseguirlo en la siguiente tabla actuando de forma análoga:
B
P2
P1
P6
CB
4
5
0
P0
8/3
2/3
-2/3
14
5
P1
0
1
0
0
4
P2
1
0
0
0
2
P3
3/2
-1/6
4/3
-19/2
0
P4
2/3
-1/3
7/3
-1
0
P5
-1/6
1/6
-1
-1/6
0
P6
0
0
1
0
Ya tenemos la base canónica, pero podemos ver una componente negativa en el
vector P0, cosa que no podemos admitir teniendo que utilizar el método dual del símplex
para arreglar este hecho. Debe salir P6 de la base y debe entrar P5.
B
P2
P1
P5
CB
4
5
0
P0
25/9
5/9
2/3
125/9
5
P1
0
1
0
0
4
P2
1
0
0
0
2
P3
23/18
1/18
-4/3
-61/18
0
P4
5/18
1/18
-7/3
-25/18
0
P5
0
0
1
0
0
P6
-1/6
1/6
-1
-1/6
obteniéndose como solución (5/9, 25/9, 0, 0, 2/3, 0).
5.2.- Análisis de sensibilidad.
Consideremos el problema general de Programación Lineal puesto en forma
estándar:
Maximizar ctx
s.a. Ax = b
x≥0
Sea x* la solución de dicho problema, a la que corresponde una base final B.
Tratamos en esta sección de determinar para qué conjunto de valores de los parámetros del
problema se mantiene la estructura del mismo en el sentido dado anteriormente.
Obsérvese, por lo tanto, cómo el análisis de sensibilidad completa lo estudiado en el
análisis de la post-optimización, ya que, vamos a determinar intervalos para cj, bi, aij, tales
que cuando un parámetro toma valores dentro de ellos la estructura del problema no se
modifica.
Al igual que en el análisis de la post-optimización, supondremos sólamente el
cambio en un parámetro, mientras los demás se mantienen constantes.
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
154
5.2.1.- Variación de coeficientes de la función objetivo.
Partimos del problema general de Programación Lineal en forma estándar:
Max ctx
s.a Ax = b
x≥0
y del conocimiento de la base final B, formada, como siempre, por los m primeros vectores:
B = {P1, P2, ..., Pm}
Trataremos de calcular para cada ci, i∈{1,2,...,n} un intervalo [ci-, ci+], tal que en el
mismo, se conserve la base. Para determinar dicho intervalo vamos a suponer que un
coeficiente cualquiera ck pasa a valer ck0 y veamos cuánto debe valer dicho coeficiente para
que la base no se modifique. Bajo estos supuestos pueden presentarse los siguientes casos:
A) Si k ∈ {1,2,...,m}. En este caso, dado que los zj dependen del vector cB, pues
zj = cBtPj =
m
∑c x
i=1
i
ij
resultará que una modificación de ck a ck0 va a suponer otra de zj a z 0j , cuyo valor será:
x1 j 
 . 
  m
z 0j = (c1... ck0 ...cm)  x kj  = ∑ ci xij + ck0 x kj
 .  ii =≠1k
 
 x mj 
que puede ser transformado de la siguiente forma:
z 0j =
m
∑c x
i =1
i
ij
- ckxkj + ck0 xkj = zj + xkj( ck0 - ck)
Entonces, para que la base se conserve, todos los valores cj - z 0j deben mantenerse
negativos o nulos Ahora bien, dado que los básicos son nulos, sólo hemos de centrar nuestra
atención en los no básicos, es decir:
cj - zj + xkj( ck0 - ck ) ≤ 0
j ∈ {m+1,...,n}
pero, dado que cj - zj ≤ 0, para que se conserve la base, el nuevo valor ck0 ha de ser:
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
ck0 ≥ ck +
ck0 ≤ ck +
155
cj − zj
si xkj < 0
x kj
cj − zj
si xkj > 0
x kj
con j ∈ {m+1,...,n}, o dicho de otra forma:
ck0 ≥ Máximo ck +
ck0 ≤ Mínimo ck +
cj − zj
si xkj < 0
x kj
j ∈ {m+1,...,n}
cj − zj
si xkj > 0
x kj
con lo que ya hemos determinado el intervalo buscado:
[ck-, ck+] = [ Max {ck +
cj − zj
x kj
xkj <0
}, Min {ck +
xkj >0
cj − zj
x kj
}]
B) Si k ∈ {m+1,...,n}. Como ya vimos en el análisis de la post-optimización, un cambio en
un coste no básico solamente puede suponer que la diferencia ck0 - zk pueda hacerse positiva,
con lo que se modificaría la base. Luego el valor que podemos modificar a ck ha de ser tal
que la diferencia se mantenga no positiva, por tanto el intervalo será:
[zk, ∞)
Ahora podemos preguntarnos ¿qué pasaría si ck0 toma uno de los valores extremos
del intervalo?. Supongamos que ck0 = ck- y sea r ∈ {m+1,...,n}, el subíndice donde se
alcanza el máximo, es decir:
ck0 = ck- = Max {ck +
xkj <0
cj − zj
x kj
} = ck +
cr − z r
x kr
Luego cj - z 0j ≥ 0 con j = m+1,...,n, pero zr0 será:
zr0 = zr + xkr( ck0 - ck) = zr + xkr [ck +
cr − zr
- ck] = cr
xkr
y, en consecuencia, cr - zr0 = 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
156
con lo que resultará que se hace cero un cj - zj no básico, es decir, en este caso ck0 hace que el
problema tenga infinitas soluciones. Análogamente ocurriría si ck0 =ck+, como puede
fácilmente demostrarse.
Tenemos que hacer notar que es posible realizar un análisis de sensibilidad de los
coeficientes de la función objetivo sin tener que recurrir a las fórmulas, pues, basta con
tomar, en la última tabla dicho elemento como un parámetro y recalcular todos los valores
cj - zj e imponerles la condición de no positividad, obteniendo un intervalo para el mismo.
Para explicar esta última posibilidad vamos a realizar el análisis de sensibilidad para
los costes del problema tratado en los epígrafes dedicados a post-optimización. La última
tabla de dicho problema era:
B
P2
P1
CB
4
5
P0
8/3
2/3
14
5
P1
0
1
0
4
P2
1
0
0
2
P3
3/2
-1/6
-19/2
0
P4
2/3
-1/3
-1
0
P5
-1/6
1/6
-1/6
Vamos a buscar primero un intervalo para c1 de forma que si dicho coste toma
valores en ese intervalo la base se mantenga. Puesto que c1 es un coste básico su posible
modificación afecta a todos los cj - zj de aquellos vectores no básicos, puesto que ya
sabemos que los correspondientes a vectores básicos valen cero. Para que no exista
modificación en la base los beneficios marginales de las posibles entradas deben ser
negativos, es decir, los cj - zj no básicos deben ser menores o iguales a cero. En nuestro caso
se tiene que verificar lo siguiente:
 3/ 2 
c3 − z 3 = 2 − ( 4 c1 )
≤ 0
 −1 / 6 
2/ 3
c4 − z4 = 0 − ( 4 c1 )
≤ 0
 −1 / 3
 −1 / 6 
c5 − z5 = 0 − ( 4 c1 )
≤ 0
 1/ 6 
es decir,
1
−4 + c1 ≤ 0 ⇒ c1 ≤ 24
6
8 1
− + c1 ≤ 0 ⇒ c1 ≤ 8
3 3
2 1
− c ≤ 0 ⇒ c1 ≥ 4
3 6 1
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
157
Luego, para que no se modifique la base debe cumplirse que c1 ∈[4, 8]. Como hemos
indicado anteriormente, si c1 toma alguno de los valores extremos de este intervalo existirán
infinitas soluciones, puesto que un cj - zj no básico se hará cero. Comprobémoslo
suponiendo que c1 = 4. Para este valor la última tabla de nuestro problema sería:
B
P2
P1
CB
4
4
P0
8/3
2/3
40/3
4
P1
0
1
0
4
P2
1
0
0
2
P3
3/2
-1/6
-10/3
0
P4
2/3
-1/3
-4/3
0
P5
-1/6
1/6
0
tabla en la que se puede observar que c5 - z5 = 0, correspondiendo a un vector no básico,
luego existen infinitas soluciones. Ya tenemos un vértice, otro se puede obtener
introduciendo en la base a P5 lo cual no puede modificar el valor de la función objetivo
obtenido, es decir z0 no va a cambiar, como se puede ver en la siguiente tabla que refleja la
entrada de P5 en la base.
B
P2
P5
CB
4
0
P0
10/3
4
40/3
4
P1
1
6
0
4
P2
1
0
0
2
P3
4/3
-1
-10/3
0
P4
1/3
-2
-4/3
0
P5
0
1
0
Podemos realizar también un análisis de sensibilidad para c2. Actuando de la misma
forma que en el caso anterior, para que no se modifique la base debe verificarse que:
c3 − z3 = 2 − ( c2
 3/ 2 
5)
≤ 0
 −1 / 6 
c4 − z4 = 0 − ( c2
2/ 3
5)
≤ 0
 −1 / 3
c5 − z5 = 0 − ( c2
 −1 / 6 
5)
≤ 0
 1/ 6 
es decir,
17 3
17
− c2 ≤ 0 ⇒ c2 ≥
6 2
9
5 2
5
− c2 ≤ 0 ⇒ c2 ≥
3 3
2
5 1
− + c2 ≤ 0 ⇒ c2 ≤ 5
6 6
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
158
Luego, en este caso para lograr que la base se mantenga c2 debe pertenecer al
intervalo [5/2, 5] y, al igual que ocurría para el otro coste estudiado, si toma alguno de los
valores extremos tendremos un problema con infinitas soluciones.
Por último, podemos realizar un análisis de sensibilidad para c3. En este caso
estamos hablando de un coste no básico y su estudio difiere de los dos casos anteriores.
Como ya hemos estudiado en post-optimización, si se modifica el coste de un vector que no
pertenece a la base sólo se ve afectado el cj - zj correspondiente a ese vector. Si pretendemos
estudiar el intervalo en el que se mantiene la base debemos obligar a que dicho beneficio
marginal sea negativo o igual a cero. En nuestro caso tenemos:
 3/ 2 
c3 − z3 = c3 − ( 4 5)
≤ 0
 −1 / 6 
es decir,
c3 − 31 / 6 ≤ 0 ⇒ c3 ≤ 31 / 6
Vemos que existe una cota superior para este coste pero ninguna inferior, luego el
intervalo es (-∞, 31/6]
5.2.2.- Variación de recursos.
Suponemos resuelto el problema original, lo cual supone el conocimiento de x*B y de
B (y por lo tanto de B-1).
Supondremos asimismo, como en el epígrafe anterior, que B está constituida por los
m primeros vectores:
B = {P1, P2, ..., Pm}
Como se ha comentado anteriormente, tratamos de calcular para cada recurso bi,
i∈{1,2,...,m} un intervalo: [bi-, bi+], tal que, cuando dicho recurso bi tome valores en dicho
intervalo, la base permanezca inalterada.
Además este intervalo será "completo" en el sentido de que cuando bi toma valores
fuera del intervalo, tenemos la seguridad de que la base B se modifica.
Pues bien, el método que vamos a seguir para determinar el intervalo es suponer la
modificación del recurso k-ésimo de tal manera que la misma conserve la base.
Sea bk0 el valor modificado, por lo cual x*B pasará a valer x*B0 , siendo su expresión:
0
0
donde P0 es:
x*B0 = B-1 P0
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
159
 b1 
 .
 
P00 = b 0 
k
 .
 
bm 
ya que P0 era:
 b1 
 .
 
P0 =  bk 
 .
 
bm 
Si denotamos los elementos de B-1 por:
 b11
b
21
-1
B =
 .

bm1
b12
b22
.
bm2
... b1m 
... b2 m 

.
. 

... bmm 
resultará que:
 b11
b
21
x*B = 
 .

 bm1
b12
b22
.
bm 2
... b1m  b1 
... b2m  b2 
 
.
.  .. 
 
... bmm  bm 
xi* = bi1b1 + bi2b2 + ... + bimbm =
m
∑b b ,
j =1
ij
j
i = 1,2,...,m
y, por lo tanto:
xi*0 =
m
∑b b
ij
j =1
j≠k
j
+ bikbk0
i = 1,2,...,m
que operando:
xi*0 =
m
∑b b + bikb
j =1
ij
j
0
k
- bikbk = xi* + bik(bk0 - bk)
dado que bk0 ha de ser tal que se conserve la base, y esta se modifica cuando algún xi*0 se
hace negativo, calculemos entonces bk0 , 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
160
xi*0 ≥ 0 ⇔ xi* + bik(bk0 - bk) ≥ 0
i = 1,2,...,m
es decir, para i ∈ {1, 2,...,m}:
bk0 ≥ bk -
xi*
, si bik > 0
bik
bk0 ≤ bk -
xi*
, si bik < 0
bik
lo cual es equivalente a decir:
xi*
}
bik
bk0 ≥ Maximo {bk bik >0
bk0 ≤ Mínimo{bk bik <0
xi*
}
bik
de tal forma que ya hemos obtenido el intervalo deseado:
[bk-, bk+] = [ Maximo {bk bik >0
xi*
x*
}, Mínimo{bk - i }]
bik <0
bik
bik
Evidentemente, cualquiera de los extremos de dicho intervalo puede ser infinito; por
ejemplo, si ocurriese que no existe para un determinado índice k, ningún bik negativo, el
extremo derecho del intervalo sería infinito: bk+ = ∞.
La última cuestión que nos quedaría por resolver sería: ¿qué ocurre con la solución si
el recurso toma uno de los valores extremos del intervalo [bk-, bk+]?.
Supongamos que bk0 = bk0
k
b =
bk-
xi*
xr*
= Maximo {bk } = bk bik >0
brk
bik
r ∈ {1, 2,...,m}
Sabemos que:
xi*0 = xi* + bik(bk0 - bk) ≥ 0
i = 1,2,...,m
pero
xr*
x = x + brk(b - bk) = x + brk(bk - bk) = 0
brk
*0
r
*
r
0
k
*
r
Luego, la solución es degenerada.
Al igual que ocurría con la sensibilidad de costes, existe un método alternativo para
la determinación de dicho intervalo, sin que sea necesario recordar las expresiones
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
161
anteriores. Consiste en realizar dicho proceso donde el valor de bk sea paramétrico e
imponer condiciones de no negatividad en las componentes del vector resultante.
Vamos a utilizar este último procedimiento para calcular los intervalos de
sensibilidad de los dos recursos de nuestro problema.
Comenzando por b1 sabemos que cualquier modificación del mismo produce un
cambio en la solución del problema pero, si queremos que la base se mantenga la nueva
solución que surja debe tener todas sus componentes positivas o cero, es decir, se debe
verificar lo siguiente:
 2

b1 − 4   0
/
/
b
2
3
1
6
−





1
x* = B −1P0 = 
≥ 
  = 3
 −1 / 3 1 / 6  24   − 1 b + 4   0
 3 1

lo que implica que:
b1 ≥ 6
b1 ≤ 12
Por consiguiente, si b1 ∈[6, 12] la base se mantiene. Si toma alguno de los valores
extremos tendremos una solución degenerada, puesto que en el nuevo vector P0 existirá
alguna componente nula. Comprobémoslo suponiendo que b1 = 6. En este caso tenemos:
 2 / 3 −1 / 6  6   0 
x* = B −1 P0 = 
  =  
 −1 / 3 1 / 6  24   2 
luego, la última tabla del problema sería:
B
P2
P1
CB
4
5
P0
0
2
10
5
P1
0
1
0
4
P2
1
0
0
2
P3
3/2
-1/6
-19/2
0
P4
2/3
-1/3
-1
0
P5
-1/6
1/6
-1/6
También podemos realizar un análisis de sensibilidad para b2. En este caso, para
lograr mantener la base, se debe verificar lo siguiente:
 20 1 
/
/
2
3
1
6
10
−




 3 − 6 b2   0
−1
x* = B P0 = 
≥ 
  =
 −1 / 3 1 / 6  b2   − 10 + 1 b   0
 3 6 2
es decir,
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
162
b2 ≤ 40
b2 ≥ 20
luego, el intervalo buscado es [20, 40] verificándose, como en el caso anterior, que si el
recurso toma un valor extremo tenemos una solución degenerada.
5.2.3.- Variación de coeficientes de la matriz no básicos.
En este apartado tratamos de analizar la incidencia de la variación de uno de los
valores de la matriz A correspondiente a un vector no básico en la base óptima obtenida.
En la última tabla del problema propuesto se ha de mantener la condición cj - zj ≤ 0
para cada j, donde debemos determinar para qué valores del coeficiente aik, k ∈ {m+1,...,n},
la base óptima obtenida no se modifica.
Si el vector Pk no se encuentra en la base se verifica que:
ck - z k ≤ 0
o lo que es equivalente:
ck - cBB-1Pk ≤ 0
Si modificamos aik, llamando Pk0 al nuevo vector tendremos que, para que no se
modifique necesariamente la base, se debe cumplir que:
ck - z k0 = ck - cBB-1 Pk0 ≤ 0
es decir:

 a1 k 

a 

2k
 

 . 
ck - cBB-1  0  = ck - cBB-1Pk - cBB-1  a 0
ik
a

 ik 

 . 

 

a
 mk 

0 

.

0
− a ik  = ck - zk - cBbi (aik - aik)

.


0 
0
siendo bi la columna i de B-1. Escrito en forma desarrollada:
m
ck - zk + ( ∑ c j b ji ) (aik - aik0 ).
j =1
Para que la expresión anterior sea negativa se pueden presentar tres casos:
m
A) Si ( ∑ c j b ji ) > 0 entonces para que se cumpla lo anteriormente dicho, es decir:
j =1
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
163
m
ck - zk + ( ∑ c j b ji ) (aik - aik0 ) < 0
j =1
se debe verificar que
aik0 > aik +
ck − z k
m
∑c b
j
j =1
ji
luego, para cualquier valor comprendido en el intervalo
(aik +
cj − zj
, ∞)
m
∑c b
j =1
j
ji
la base se mantiene inalterada.
m
B) Si ( ∑ c j b ji ) = 0, entonces,
j =1
ck - z k0 = ck - zk
y la influencia de la variación de aik es nula, esto es, el intervalo de variación para el que la
base óptima no varía es toda la recta real.
m
C) Si ( ∑ c j b ji ) < 0, obtenemos, actuando de la misma forma que en A), que:
j =1
aik0 <aik +
ck − z k
m
∑c b
j
j =1
ji
por lo que el intervalo definido es:
(-∞, aik +
ck − z k
m
∑c b
j =1
j
)
ji
Es conveniente hacer notar que tanto en el caso A) como en el C), en el extremo
finito del intervalo al problema posee varios óptimos ya que
ck - z k0 = 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
164
5.3.- Programación lineal paramétrica.
Una generalización natural de los estudios anteriores es la Programación Lineal
Paramétrica, puesto que en muchos momentos surge la necesidad de parametrizar algún
elemento de un determinado problema de Programación Lineal.
Obsérvese como, en general, la Programación Lineal Paramétrica permite un estudio
conjunto de las modificaciones de todos los elementos semejantes, estudio que no se
realizaba en el Análisis de Sensibilidad.
5.3.1.- Variación paramétrica de coeficientes de la función objetivo.
Consideremos:
Max (c + λc')tx
s.a Ax = b
x≥0
(24)
donde λ es un parámetro que puede tomar cualquier valor real.
Demos a dicho parámetro el valor cero: λ = 0; (24) quedará entonces:
Max ctx
s.a Ax = b
x≥0
(25)
problema general de Programación Lineal que puede tener solución finita o ilimitada.
Supondremos en primer lugar que (25) posee solución finita, estudiando posteriormente el
otro caso.
A) El problema original posee solución finita.
En este caso sea B la base (o si dicho problema tuviese para λ = 0 infinitas
soluciones, una de ellas) correspondiente a la solución x*B .
Supongamos B = {P1, P2, ..., Pm}.
Se trata de determinar un intervalo para λ tal que en el mismo se conserve dicha base
B.
Supondremos en primer lugar que λ ∈
posterior.
R+, ya que ello va a facilitar el desarrollo
Como por hipótesis (25) tiene como solución x*B , resulta que
cj - z j ≤ 0
j = 1, 2, ..., n
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
165
con:
cj - zj = cj - cBtB-1Pj
Si pasamos del problema (25) al (24), aparece una modificación de los coeficientes
de la función objetivo, resultando:
c*j − z *j = (cj + λcj') - (cB + λcB')tB-1Pj
que son los valores modificados del cj - zj al cambiar c por c + λc'. Operando:
c*j − z *j = cj - zj - λ(cBt'B-1Pj - cj')
j = 1,2, ..., n
(26)
Ahora bien, el hecho de que se conserve la base B va a depender en definitiva del
signo de los c*j − z *j , ya que si éstos permaneciesen, tras la modificación habida, no
positivos, resultaría que no existiría cambio en la base para cualquier valor positivo de λ.
Obsérvese además que no es necesario estudiar el signo de los c*j − z *j para todo j, sino
únicamente para los no básicos, ya que:
c*j − z *j = 0 para j = 1,2, ..., m
luego, estudiaremos el signo de c*j − z *j para j = m+1, ..., n.
Pueden ocurrir dos cosas:
1ª) Que para todo j = m+1, ..., n, se verifique que cBt'B-1Pj - cj' ≥ 0. En este caso como
cj - zj ≤ 0 y el parámetro λ lo estamos suponiendo positivo, resulta que:
c*j − z *j ≤ 0,
j = m+1, ..., n
de donde se tiene que la base {P1, P2, ..., Pm} correspondiente a λ = 0 se conserva para
cualquier valor positivo de λ. Esto quiere decir que la base B se conserva para valores de λ
en [0, ∞).
2ª) Supongamos ahora que un cBt'B-1Pk - ck' < 0, con k ∈ {m+1, ..., n}. En este caso el signo
de c*k − z *k puede variar dependiendo del valor del parámetro. Llamemos entonces λk al valor
de λ que hace que c*k − z *k sea igual a cero:
c*k − z *k = ck - zk - λk (cBt'B-1Pk - ck') = 0.
es decir:
λk =
ck − z k
c B -1 Pk - c k '
't
B
(27)
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
166
Entonces, si λ < λk resultará c*k − z *k ≤ 0 mientras que, si λ > λk, c*k − z *k >0; luego λk
será el valor buscado, ya que, cuando la diferencia anterior es positiva ha de introducirse Pk
en la base, con lo cual se modifica la misma.
En el caso de que para más de un k resulte que cBt'B-1Pk - ck' sean negativas, tenemos
que el extremo superior del intervalo donde se conserva la base viene dado por:


ck − z k
/ c 'tB B −1 Pj − c j ' < 0
λ* = Min  't −1
 c B B Pk − c k '

Tras calcular, para λ ∈
0, estamos interesados en:
R+, el intervalo [0, λ*) donde se conserva la base para λ =
(a) Determinar las distintas bases asociadas a valores de λ superiores a λ*.
(b) Ver qué ocurre cuando λ = λ*.
(a) Si λ > λ* la base se va a modificar, ya que al menos un c*s − z *s > 0 con s ∈ {m+1, ..., n}.
Entonces Ps va a entrar en la base y pueden ocurrir dos cosas:
1.- ais ≤ 0 ∀ i = 1, 2, ..., m: ello quiere decir que el problema carece de solución para
valores de λ superiores a λ*.
2.- Algún ais es positivo. Sea entonces:
xr 0
x
= min( i 0 ,ais > 0)
a rs
ais
por lo que, Pr saldrá de la base y tendremos una nueva base:
B* = {P1, ..., Pr-1, Pr+1, ..., Pm, Ps}
En este caso puede determinarse, al igual que en el apartado anterior, hasta dónde se
conserva esta nueva base mediante:


c −z
λ** = Min  't* −k1* k
/ c 'tB*B −1*Pj − c j ' < 0
j =r

 c B B Pk − ck '
j = m+1,...,n
j≠s
El proceso se continúa, determinando los intervalos pertinentes hasta que para una
base B0 se verifique:
c'B0t B0-1Pj - cj' ≥ 0
en cuyo caso la base B0 se conservaría hasta el infinito.
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
167
(b) Cuando, determinado un intervalo [0, λ*) para el que se conserva una cierta base B,
resulta que λ toma el valor λ*, entonces si suponemos que es precisamente λk el que verifica
(27), resulta evidente que c*k − z *k = 0 con k ∈ {m+1, ..., n}; estamos en un problema con
solución múltiple. Obsérvese que para λ = λ* se mantiene la base B que suponemos se
conserva en [0, λ*) y aparece, al menos, otra base B* que será la que se conserve para
λ>λ*; es por ello por lo que el intervalo anterior podía, sin cometer con ello error, cerrarse
en λ*.
Para terminar, veamos qué hemos de cambiar en el caso en que λ ∈ R-.
Esquemáticamente, apoyándonos en lo dicho anteriormente para el caso de que λ fuese
positivo, tenemos:
Por (26) si cBt'B-1Pj - cj' ≤ 0 para todo j = m+1, ..., n, tenemos que:
c*j − z *j < 0
en cuyo caso la base B se conserva para todo λ < 0, es decir, en el intervalo (-∞, 0].
Si algunos cBt'B-1Pj - cj' son positivos, entonces la base B se conserva en (-λ*, 0] con


ck − z k
/ c 'tB B −1 Pj − c j ' > 0
λ* = Max − 't −1
j = m+1,...,n  c B P − c '

k
B
k
Pudiendo determinar, al igual que para λ > 0, sucesivos intervalos en cada uno de los
cuales se conservarían distintas bases.
B) El problema original posee solución ilimitada.
Supongamos, por último, que al resolver (25) resulta que dicho problema tiene
solución ilimitada. Se trata de determinar hasta qué valor de λ la solución continúa siendo
ilimitada; si dicho valor es finito se pueden determinar sucesivas bases por el procedimiento
antes desarrollado.
Evidentemente, si (25) tiene solución ilimitada se va a verificar:
Max (cj - zj > 0) = cr - zr con air ≤ 0, i=1,2,...,m
Supongamos λ ∈ R+. Recordemos:
cr* − zr* = cr - zr - λ(cBt'B-1Pr - cr')
y como por hipótesis cr - zr > 0, resulta que la solución va a seguir siendo ilimitada si
cr* − zr* >0, ya que los air seguirán siendo no positivos.
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
168
Puede entonces ocurrir:
I) cBt'B-1Pr - cr' ≤ 0, en cuyo caso la solución es ilimitada para todo λ ∈ R+.
II) cBt'B-1Pr - cr' > 0, en cuyo caso calculamos:
λ* =
cr − z r
c 'tB B −1 Pr −c r '
ocurriendo que para valores λ > λ* la solución deja de ser ilimitada, dado que, para esos
valores cr* − zr* < 0, siempre que no ocurra lo mismo para otro cs - zs, en cuyo caso habría
que repetir el proceso anterior.
5.3.2.- Variación paramétrica de recursos.
En este apartado el parámetro que antes aparecía en los coeficientes de la función
objetivo lo tenemos ahora en los recursos, es decir, el problema es de la forma:
Max ctx
s.a
Ax = b + αb'
x≥0
con α ∈
recursos.
(28)
R. Este parámetro va a representar cambios continuos en la disponibilidad de los
Vamos a suponer en primer lugar que α ∈ R+.
Iniciemos el proceso resolviendo el problema en el caso α = 0:
Max
s.a
ctx
Ax = b
x≥0
(29)
pudiendo ocurrir:
A) Que dicho problema tenga solución ilimitada, en cuyo caso la tendrá también para
cualquier valor de α, dado que los valores de los coeficientes técnicos son independientes de
los valores de b.
B) Que tenga solución finita. En este caso, llamemos B a la base correspondiente a la
solución óptima, la cual supondremos, como siempre, constituida por los m primeros
vectores. Sea esta x*B , dado que
x*B = B-1b
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
169
resulta que si llamamos bij a los elementos de B-1, las componentes de x*B serán:
xi* =
m
∑b b
j =1
ij
i = 1, 2, ..., m
j
(30)
tratando de calcular hasta que valor de α, α*, se conserva la base.
Si en (30) ponemos b + αb' en lugar de b tendremos un nuevo vector x*B ' de
componentes:
m
*
i
x '=
donde hemos llamado xi* ' =
∑b (b
j =1
ij
j
m
m
j =1
j =1
+ αb j ' ) = ∑ bij b j + ∑ bijαb j ' = xi* + α xi* '
(31)
m
∑b b '
j =1
ij
j
Es evidente que B se conservará siempre que:
xi* + α xi* ' ≥ 0
para todo i = 1, 2 ,..., m. Ahora bien, dado que xi* ≥ 0, resultan dos posibilidades:
1.- xi* ' > 0 ∀ i = 1, 2, ..., m. En este caso (31) siempre será no negativo para todo α ∈ R+.
2.- Algún xi* ' es negativo. En este caso, supongamos que x *k ' < 0 con k ∈ {1, 2, ..., m}.
Llamemos entonces αk al valor de α que anula a (31), es decir:
αk = −
x *k
x *k '
Obsérvese entonces que si x *k ' fuese el único negativo, valores de α menores que αk
supondrían la no negatividad de (31), es decir, αk = α* buscado.
Si hay más de un xi* ' negativo resultará:
α* = Min { −
xi*
| xi* ' < 0}
xi* '
(32)
Una vez calculado α* cabe preguntarse qué ocurre si tomamos α >α*. Lógicamente
la base se va a modificar, ya que se hará negativa alguna componente de x*'. De este modo
nos veremos en la necesidad de aplicar el método dual del símplex el cual nos dará la nueva
base. A partir de este momento todo lo demás se llevará a cabo como se ha indicado en el
apartado anterior.
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
170
Por último, en el caso en que α = α*, de (31) y (32) es inmediato comprobar que la
solución es degenerada, no habiendo, por lo tanto, modificación alguna de la base.
En el caso en que α ∈ R- puede fácilmente comprobarse cómo los criterios antes
dados para valores positivos se modifican del modo siguiente:
1.- Si xi* ' ≤ 0 la base B se conserva para todo α ∈ R-.
2.- Si xi* ' > 0, elegimos:
α*= Max { −
xi*
| xi* ' > 0}
xi* '
R. Caballero, T. Gómez, M. González, M. Hernández, F. Miguel, J. Molina, M.M. Muñoz, L. Rey, F. Ruiz
Descargar