EL MÉTODO DUAL SIMPLEX
Como sabemos, el método simplex es un algoritmo iterativo que
iniciando en una solución básica factible pero no óptima,
genera soluciones básicas factibles cada vez mejores hasta encontrar
la solución óptima (sí esta existe). Nótese
que la base de su lógica es mantener la factibilidad, mientras
busca la optimalidad. Pero surge la posibilidad de usar otro esquema igualmente
iterativo, que como contraparte del simplex, comienza en una solución
básica óptima, pero no factible y mantiene la inmejorabilidad
mientras busca la factibilidad. Con este procedimiento se llega igualmente
a la solución óptima.
El nuevo algoritmo fue desarrollo en 1954 por C. E. Lemke y se conoce
con el nombre de Método Dual-Simplex. A continuación
se presenta su estructura y un ejemplo para ilustrar su aplicación.
Algoritmo Dual-Simplex para un modelo de maximización
Introducción
Primero se debe expresar el modelo en formato estándar, agregando
las variables de holgura y de exceso que se requieran.
Enseguida, en las ecuaciones que tengan variables de exceso (resultantes
de restricciones de tipo >),
se debe multiplicar por (-1) en ambos lados , para hacer positivo el coeficiente
de la variable de exceso, y formar así un vector unitario que nos
permita tomar esta variable de exceso como una variable básica
inicial. sin necesidad de agregar una variable artificial en esa restricción.
Al hacer lo anterior se logra que debajo de las variables básicas
aparezca una matriz identidad, que es la que el simplex siempre toma como
base inicial.
Obtendremos que los términos del lado derecho de las ecuaciones
multiplicadas por (-1) quedan con signo negativo, lo cual hace que la
solución inicial sea infactible.
Es importante destacar que este proceso es muy útil ya que en
muchos modelos evita la inclusión de variables artificiales en
el momento de transformar un modelo a formato estándar.
El algoritmo para resolver un modelo de maximización es el siguiente:
Paso 1: Hallar una solución básica
inicial infactible e inmejorable
Escribir el tablero inicial tomando a las variables de holgura y de
exceso como variables
básicas iniciales
Paso 2: Prueba de factibilidad
-
Si todas las variables básicas son no negatívas, la
actual solución es la óptima.
-
Si hay al menos una variable básica negativa, seleccionar
como variable de salida,
( llamémosla (XB)s ), a aquella con el valor mas negativo.
Los empates se pueden
romper arbitrariamente.
Paso 3: Prueba de inmejorabilidad
-
Sí en el renglón de la variable básica de salida
(XB)s todos los coeficientes de reemplazo con las variables no básicas
son no negativos, la solución del modelo es óptima ¡limitada.
Se termina el proceso.
Si en el renglón de la variable básica de salida (XB)s,
hay al menos un coeficiente de intercambio negativo , se efectúan
los cocientes entre el efecto neto de cada variable no básicas
y su correspondientel coeficiente de intercambio negativo.
Es decir, siendo (XB)s la variable de salida se calculan todos los
cocientes
Se toma como variable de entrada ( llamémosla Xe ) a aquella
que corresponda al mínimo de los cocientes del anterior conjunto
Si la variable de entrada es Xe el elemento pivote será el elemento
(Se)s
El empate se puede romper arbitrariamente.
-
Aplicar la operación de pivoteo para generar la nueva tabla,
en la cual aparezca Xe como variable básica en lugar de la
variable de salida (XB)s
-
Repetir el algoritmo a partir del paso 2.
Ejemplo de aplicación del Método Dual Simplex
Sea el siguiente modelo:
| Maximizar |
Z= |
-2X1 |
-2X2 |
-3X3 |
|
|
| Sujeto a : |
2X1 |
+4X2 |
+2X3 |
> |
10 |
| |
|
3X1 |
-3X2 |
+9X3 |
= |
12 |
| |
|
|
|
|
|
|
| |
con |
X1, X2, X3 >
0 |
Expresemos el modelo en formato estándar
| Maximizar |
Z= |
-2X1 |
-2X2 |
-3X3 |
|
|
|
|
| Sujeto a : |
2X1 |
+4X2 |
+2X3 |
-IE1 |
|
= |
10 |
| |
|
3X1 |
-3X2 |
+9X3 |
|
-IE2 |
= |
12 |
multipliquemos por (-1) en ambos lados de las ecuaciones, para formar
los vectores unitarios, requeridos para contar con una base inicial unitaria.
| Maximizar |
Z= |
-2X1 |
-2X2 |
-3X3 |
|
|
|
|
| Sujeto a : |
-2X1 |
-4X2 |
-2X3 |
+IE1 |
|
= |
-10 |
| |
|
-3X1 |
+3X2 |
-9X3 |
|
+IE2 |
= |
-12 |
paso 1.
Tomando las variables básicas iniciales hacemos lo siguiente:
| Cj |
-2 |
-2 |
-3 |
0 |
0 |
XB |
|
| CB |
X1 |
X2 |
X3 |
E1 |
E2 |
Solución |
Básicas |
| 0 |
-2 |
-4 |
-2 |
1 |
0 |
-10 |
E1 |
| 0 |
-3 |
3 |
-9 |
0 |
1 |
-12 |
E2 |
| Zj |
0 |
0 |
0 |
0 |
0 |
0 |
|
| Ej |
-2 |
-2 |
-3 |
0 |
0 |
0 |
Z |
Paso 2
Sale E2 = (XB)2 o sea s = 2
Paso 3
-
Calculando los cocientes para todo (Sj)2 < 0 obtenemos:
o sea que X3 es la variable de entrada( entonces e = 3) y el elemento
pivote es el (Se)s = (S3)2 = -9
-
Efectuando el pivoteo obtenemos la tabla siguiente:
Tabla 1 (maximizar)
| Cj |
-2 |
-2 |
-3 |
0 |
0 |
XB |
|
| CB |
X1 |
X2 |
X3 |
E1 |
E2 |
Solución |
Básicas |
| 0 |
-4/3 |
-14/3 |
0 |
1 |
-2/9 |
-22/3 |
E1 |
| -3 |
-1/3 |
-1/3 |
1 |
0 |
-1/9 |
4/3 |
X3 |
| Zj |
-1 |
1 |
-3 |
0 |
1/3 |
|
|
| Ej |
-1 |
-3 |
0 |
0 |
-1/3 |
-4 |
Z |
-
Repitiendo el algoritmo desde el paso 1, obtenemos:
sale E1 = (XB)1 y entra X2 por lo cual obtenemos la siguiente
tabla
Tabla 2
| Cj |
-2 |
-2 |
-3 |
0 |
0 |
XB |
|
| CB |
X1 |
X2 |
X3 |
E1 |
E2 |
Solución |
Básicas |
| -2 |
2/7 |
1 |
0 |
-3/14 |
1/21 |
11/7 |
X2 |
| -3 |
3/7 |
0 |
1 |
-1/14 |
-2/21 |
13/7 |
X3 |
| Zj |
-13/7 |
1 |
-3 |
-9/14 |
4/21 |
|
|
| Ej |
-1/7 |
0 |
0 |
-9/14 |
-4/21 |
-61/7 |
Z |
Como se observa, ahora estamos en el óptimo.
En definitiva:
X2* = 11/7
X3* = 13/7
Z* = - 61/7
Otro ejemplo:
Resolver el siguiente modelo usando el método Dual-Simplex
| Minimizar |
Z= |
2X1 |
+ 2X2 |
|
|
|
| Sujeto a : |
3X1 |
+X2 |
|
> |
10 |
| |
|
4X1 |
+3X2 |
|
> |
12 |
|
|
X1 |
+2X |
|
< |
|
| |
con |
X1, X2 >
0 |
Expresando el modelo en formato estándar y ajustándolo
para que las variables básicas sean las variables de holgura
tenemos:
| Minimizar |
Z= |
2X1 |
+ 2X2 |
|
|
|
|
|
| Sujeto a : |
-3X1 |
-X2 |
+IE1 |
|
|
= |
-3 |
| |
|
-4X1 |
-3X2 |
|
+IE2 |
|
= |
-6 |
|
|
X1 |
+2X |
|
|
+IE3 |
= |
3 |
Usando el método Dual Simplex obtenemos, sucesivamente:
Tabla 0
| Basicas |
X1 |
X2 |
E1 |
E2 |
H3 |
Solución |
| E1 |
-3 |
-1 |
1 |
0 |
0 |
-3 |
| E2 |
-4 |
-3 |
0 |
1 |
0 |
-6 |
| H3 |
1 |
2 |
0 |
0 |
1 |
3 |
| Ej |
2 |
1 |
0 |
0 |
0 |
0 |
Sale E2
Entonces los cocientes son
Nota: Obsérvese que cuando el objetivo
es minimizar, se toma el valor absoluto de los cocientes.
Tabla 1
| Basicas |
X1 |
X2 |
E1 |
E2 |
H3 |
Solución |
| E1 |
-5/3 |
0 |
1 |
-1/3 |
0 |
-1 |
| E2 |
4/3 |
1 |
0 |
-1/3 |
0 |
2 |
| H3 |
-5/3 |
0 |
0 |
2/3 |
1 |
-1 |
| Ej |
2 |
0 |
0 |
1/3 |
0 |
2 |
Sale H1
Los cocientes son:
Tabla 2 (óptima)
| Basicas |
X1 |
X2 |
E1 |
E2 |
H3 |
Solución |
| E1 |
1 |
0 |
-3/5 |
1/5 |
0 |
3/5 |
| E2 |
0 |
1 |
4/5 |
-3/5 |
0 |
6/5 |
| H3 |
0 |
0 |
-1 |
1 |
1 |
0 |
| Ej |
0 |
0 |
2/5 |
1/5 |
0 |
12/5 |
La solución óptima es X1 = 3/5, X2 = 6/5 ; Z = 12/5
En la gráfica observamos el camino que realmente siguió
el algoritmo para pasar de la solución infactible con valor
Z= 0 a la solución factible óptima con valor Z = 12/5.
La aplicación del método simplex dual es especialmente
útil en el análisis de sensibilidad. Se usa cuando
después de haber obtenido la solución óptima,
se desea agregar una nueva restricción al modelo si la nueva
restricción no se cumple.
En este caso se obtiene que para los valores óptimos de
las variables de decisión, la solución permanece óptima
pero se convierte en infactible. Surge entonces la necesidad de
aplicar el algoritmo Dual-Simplex para extraer la variable básica
que tiene valor infactible. Cuando estudiemos el tema de análisis
de sensibilidad analizaremos un caso como el citado.
|