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