Beruflich Dokumente
Kultur Dokumente
Por:
Descripción clara del Método de la Gran M para resolver problemas de Programación Lineal usando el
Simplex con restricciones de >= e =
Mientras que los Programas Lineales que solo tienen restricciones de <= se pueden resolver sólo
usando variables de holgura, para aquellos programas lineales que involucren restricciones de tipo >=
e = es necesario como ya lo habíamos comentado, usar variables artificiales. Dijimos también que las
variables de holgura tenían un significado físico real que correspondía a las disponibilidades o
requerimientos no usados en las restricciones, pero que las variables artificiales no tenían ninguna
representación física y que sólo eran usadas como un comodín matemático para ayudar en la solución
del problema. Pues bien, cuando tenemos que usar variables artificiales al tener restricciones de >= e
= debemos usar uno de las siguientes variantes del simplex:
El Método de la Gran M
El Método de las dos fases
Definimos la letra M como un número muy grande pero finito para usarlo como coeficiente de las
variables artificiales en la función objetivo y con sentido contrario a la misma para penalizar de manera
muy grande la existencia de las mismas en la solución. Si el objetivo es minimizar las variables
artifíciales entraran con M positivo y si es maximizar las variables artificiales se usarán como -M.
Ejemplo:
Cada restricción debe ser convertida a una igualdad, agregando variables como se requiera. Con las
restricciones de tipo <=, es supremamente fácil. Simplemente se agrega una en cada restricción con
coeficiente 1 en la misma restricción y con coeficiente cero en la función objetivo. Por ejemplo :
3X1 + X2 + 2X3 <= 10 queda:
3X1 + X2 + 2X3 + S1 = 10
Se puede leer así: el uso de la primera restricción no puede superar la disponibilidad de 10 unidades,
lo que equivale a decir que lo usado mas lo que sobre (s1) es igual a 10. Para las restricciones de tipo
mayor o igual, la lógica es la misma, de esta manera decir:
Se puede leer como: el uso de la restricción 2 debe ser como mínimo 6 unidades. Eso significa que el
uso podría ser 6.1 o tal vez 7 u 8... etc. Podríamos escribirlo también como 6+0.1 o 6+1 o 6+2 ... o en
términos generales:
X1 - 2X2 + 3X3 - S2 = 6
Sin embargo para el método simplex, cuando aparece esta restricción tipo >= es necesario adicionar
una variable comodín, llamada Variable Artificial, sin ningún significado físico, sólo como artificio
matemático. Lo sumamos al lado izquierdo de la restricción como se muestra a continuación:
X1 - 2X2 + 3X3 - S2 + A1 = 6
Al usar una variable artificial debemos penalizar la función objetivo allí la vamos a incluir con un
coeficiente muy grande, llamado M, al estar minimizando la sumamos + .MA1.
La tercera restricción es de tipo <=, por lo que no tenemos ningún problema con ella:
La cuarta restricción es de tipo =. Para este tipo de restricción simplemente adicionamos una variable
artificial al lado izquierdo:
X1 + X2 +2X3 = 7 queda:
X1 + X2 +2X3 + A2 = 7
Nota: las variables de holgura quedan con coeficiente 0 en la función objetivo y las variables
artificiales con coeficiente M. Positiva si es minimizando o negativa si es maximizando.
Si lo escribimos como una matriz, indicando los nombres de las variables en negro queda así:
X1 X2 X3 S1 S2 A1 S3 A2
Min Z 2 1 3 0 0 M 0 M RHS
R1 3 1 2 1 0 0 0 0 10
R2 1 -2 3 0 -1 1 0 0 6
R3 2 3 -1 0 0 0 1 0 9
R4 1 1 2 0 0 0 0 1 7
Dónde X1, X2, X3 son las variables de decisión, S1, S2 y S3 son las variables de Holgura. R1, R2, R3,
R4 son las restricciones y RHS son las disponibilidades o Requerimientos de las restricciones,
(RHS= Light Hand Side: "el lado derecho" es decir los valores numéricos).
Recordemos que tenemos un grupo de variables que llamamos base a las que tenemos en cuenta en
cada iteración para dar la solución, las demás variables las llamamos No Básicas y se toman con valor
cero (de manera análoga a cuando resolvemos un sistema de ecuaciones que tiene más variables que
ecuaciones, tenemos que hacer cierta cantidad de estas variables iguales a cero).
En la primera iteración la regla para escoger las variables que estarán en la base es la siguiente:
Esta el listado de variables que se tienen en la base (en la segunda columna rotulada como base), en
la primera columna están los coeficientes de las variables básicas, luego vienen las restricciones con
sus coeficientes, las disponibilidades/requerimientos de las restricciones en la columna RHS, una
columna vacía llamada Theta que ya llenaremos. Las dos últimas filas son para determinar que variable
va a entrar a la base. Algunas personas omiten la fila Z. Realmente no es necesaria, sólo para dar un
poco más de claridad a la iteración.
La fila Z es el resultado de la suma del producto de la columna 'coef' y de cada columna en la restricción,
así:
0*2+M*3 + 0 *-1 + M*2 = 5M ...de igual manera para las otras 5 columnas.
La fila Cj-Zj es el resultado de restar el coeficiente de la función objetivo (la segunda fila de negro) con
el valor de Z que acabamos de calcular.
2-2M = 2-2M
X1 X2 X3 S1 S2 A1 S3 A2
Coef Base 2 1 3 0 0 M 0 M RHS Theta
0 S1 3 1 2 1 0 0 0 0 10 5.00
M A1 1 -2 3 0 -1 1 0 0 6 2.00 Sale
0 S3 2 3 -1 0 0 0 1 0 9 M
M A2 1 1 2 0 0 0 0 1 7 3.50
Z 2M -M 5M 0 -M M 0 M 13M
Cj- Zj 2-2M 1+M 3-5M 0 M 0 0 0
Entra
En este momento nos hacemos la siguiente pregunta: ¿cuál variable al entrar a la base hace que la función
objetivo disminuya más (porque estamos minimizando)? O en otras palabras, cuál es el valor más negativo de Cj-
Zj? Recordemos que M representa un número finito, muy, muy grande. Rápidamente nos damos cuenta que
corresponde a 3-5M, puesto que de todas es la que tiene el valor negativo de M con mayor valor absoluto. Si no
lo ve tan rápido, haga lo siguiente: reemplace M por un valor grande positivo en la fila Cj -Zj, digamos por
1000.000, notará de inmediato que el valor más negativo está en la columna respectiva a la variable X3. Por lo
tanto, ¿ésta variable debe entrar a reemplazar a otra variable en la base... a cuál??
Para establecer que variable debe salir de la base, hacemos un cociente entre la disponibilidad (RHS)
y la columna de la variable que entra, en nuestro caso, acabamos de decir que es la variable X3. Este
cociente lo vamos a llamar Theta.
10 /2 = 5
6/3 =2
9 / -1 = ... bueno, en caso que dividamos por un valor negativo, no lo vamos a tener en cuenta para salir
7/2 = 3.5
La variable que más nos restringe, por lo tanto la que el valor de theta es menor (pero positivo) es de 2,
correspondiendo a la variable A1. Por lo tanto sale A1 y entra X3.
A la intersección entre la columna de la variable que entra y de la fila de la variable que sale, la llamamos
pivote. Sobre ella se empleará el método de Gauss-Jordán.
X1 X2 X3 S1 S2 A1 S3 A2
Coef Base 2 1 3 0 0 M 0 M RHS Theta
0 S1 3 1 2 1 0 0 0 0 10 5.00
M A1 1 -2 3 0 -1 1 0 0 6 2.00 Sale
0 S3 2 3 -1 0 0 0 1 0 9 M
M A2 1 1 2 0 0 0 0 1 7 3.50
Z 2M -M 5M 0 -M M 0 M 13M
Cj- Zj 2-2M 1+M 3-5M 0 M 0 0 0
Entra
4. Iteración: Gauss-Jordán
Luego que se ha encontrado que variable sale de la base, y cual entra y que por lo tanto ya tenemos
una celda pivote, es necesario realizar la eliminación gaussiana. Ello lo podemos resumir como:
1/3 = 0.33
-2/3 = -0.67
3/3 = 1(Pivote)
0/3= 0
-1/3= -0.33
1/3=0.33
0/3=0
0/3=0
6/3= 2 (En la columna del RHS)
Para la primera fila que contiene el 2 que deseamos eliminar multiplicamos la fila pivote por -2 y se la sumamos
así:
Repetimos este procedimiento para la fila 3 y la fila 4. Con ello ya llenamos todo el formato.
Continuando el algoritmo de la tabla anterior evaluamos que la variable A2 debe salir, la reemplazamos
en el tablero siguiente. Hacemos gauss-Jordán, luego calculamos Z y calculamos Cj-Zj.
X1 X2 X3 S1 S2 A1 S3 A2
Coef Base 2 1 3 0 0 M 0 M RHS Theta
0 S1 2.33 2.33 0.00 1.00 0.67 -0.67 0 0 6 2.57
3 X3 0.33 -0.67 1.00 0.00 -0.33 0.33 0 0 2 M
0 S3 2.33 2.33 0.00 0.00 -0.33 0.33 1 0 11 4.71
M A2 0.33 2.33 0.00 0.00 0.67 -0.67 0 1 3 1.29 Sale
Z 1+0.33M -2+2.33M 3 0 -1+0.66M 1-0.66M 0 M 6+3M
Cj- Zj 1-0.33M 3-2.33M 0 0 1-0.66M -1+1.66M 0 0
Entra
Aquí en el tablero de la siguiente figura, evaluamos si hay algún valor negativo en la fila Cj-Zj, nos
damos cuenta que no, por lo que no hay ninguna variable que al entrar mejore la solución.
Hemos llegado al óptimo: La solución es Z=9.8571 X1=0 (Por que no estaba en la base.) X2= 1.29,
X3=2.86
X1 X2 X3 S1 S2 A1 S3 A2
Coef Base 2 1 3 0 0 M 0 M RHS Theta
0 S1 2.00 0.00 0.00 1.00 0.00 0.00 0.00 -1.00 3.00
3 X3 0.43 0.00 1.00 0.00 -0.14 0.14 0.00 0.29 2.86
0 S3 2.00 0.00 0.00 0.00 -1.00 1.00 1.00 -1.00 8.00
1 X2 0.14 1.00 0.00 0.00 0.29 -0.29 0.00 0.43 1.29
Z 1.43 1.00 3.00 0.00 -0.14 0.14 0.00 1.29 9.8571
Cj- Zj 0.57 0.00 0.00 0.00 0.14 M+0.62 0.00 M+2.43