Sie sind auf Seite 1von 8

Método de la Gran M

Por:

 Pérez López Noe Laurentino


 Rosas Castro Julio
Método de la Gran M

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

Aquí detallaremos el Método de la Gran M.

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:

Min Z = 2X1 + X2 + 3X3


Sujeto a:
3X1 + X2 + 2X3 <= 10
X1 - 2X2 + 3X3 >= 6
2X1 + 3X2 - X3 <= 9
X1 + X2 +2X3 = 7

1. Convertir al Modelo Estándar:

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:

X1 - 2X2 + 3X3 >= 6

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 = 6 + S2 que es equivalente a decir: lo usado en la restricción 2 es


igual al mínimo requerido que es 6 mas el adicional que está en S2. Esto lo podemos reescribir como:

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:

2X1 + 3X2 - X3 <= 9 queda


2X1 + 3X2 - X3 + S3 = 9

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.

En resumen el modelo queda de la siguiente manera:

Min Z = 2X1 + X2 + 3X3 + 0S1 + 0S2 + MA1 + 0S3 + MA2


Sujeto a:
3X1 + X2 + 2X3 + S1 = 10
X1 - 2X2 + 3X3 - S2 + A1 = 6
2X1 + 3X2 - X3 + S3 = 9
X1 + X2 + 2X3 + A2 = 7

2. Escribir en formato de Tabla Simplex.

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).

3. Definir la Variable que entra

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:

-Si hay variables de decisión y de holgura, se toma la de holgura.

-Si hay variables de decisión, de holgura y artificiales se toma la variable artificial.

-Si hay variables de decisión y artificiales se toma la variable artificial.


Por esta razón para la primera restricción dónde hay variables de decisión (Xi) y la de holgura S1,
tomamos la S1 para la base, en la segunda restricción hay de holgura, de decisión y artificial, tomamos
la artificial A1, en la tercera hay de decisión y de holgura, tomamos la de holgura S3 y por último en la
cuarta restricción hay de decisión y artificial, por lo que tomamos la A2 para la base. Todas las demás
se asumen en la primera iteración con valor cero.

Llenar la tabla inicial.

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*3+M*1 + 0*2 + M*1 = 2M

0 * 1 + M * (-2) + 0*3 + M*1 = -M

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

1-(-M) = 1+M.… etc.

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??

3. Definir la Variable que Sale

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:

* Convertir la celda pivote en 1, dividiendo toda la fila por ella misma


* Convertir todas las celdas por encima y por debajo de la celda pivote en cero.

Vamos paso por paso: Convertir la celda pivote en 1.


Llenamos un formato vacio simplex, la fila que contiene el pivote la vamos a pasar al nuevo formato convertida
mediante la siguiente operación: dividimos toda la fila por el valor del pivote. (Para convertir el pivote en 1).

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)

Y la pasamos al nuevo formato


Esta nueva fila que hemos calculado va a servir para convertir las demás celdas por la columna del
pivote en cero, como es el requisito del método. Fijémonos un momento en la tabla, en el pivote en
verde, que contiene el 3, precisamente el que acabamos de convertir en 1. Por encima encontramos el
2 y por debajo encontramos el -1 y el 2. Estos valores son los que debemos convertir en ceros. Para
ello hacemos operaciones entre filas y columnas de la siguiente manera (s recuerda bien los detalles
de esto, de sus clases de algebra lineal siéntase libre de saltar esta explicación): Multiplicamos la fila
que contenía el pivote por el opuesto de cada número que deseamos eliminar y se lo sumamos a la fila
que deseamos convertir.
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

Para la primera fila que contiene el 2 que deseamos eliminar multiplicamos la fila pivote por -2 y se la sumamos
así:

La fila pivote que quedó convertida en esto:


0.33 -0.67 1 0 -0.33 0.33 0 0 2
La multiplicamos por -2 y nos da:
-0.67 1.33 -2 0 0.67 -0.67 0 0 -4
El valor anterior lo sumamos componente a componente a la fila en la que queremos hacer la
eliminación: que es la siguiente:
3 1 2 1 0 0 0 0 10
Y el resultado es:
2.33 2.33 0 1 0.67 -0.66 0 0 6

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

Das könnte Ihnen auch gefallen