3.3.2 Detalles de cálculo del algoritmo sımplex En esta sección se

Anuncio
3.3.2 Detalles de cálculo del algoritmo sı́mplex
En esta sección se explican los detalles de cálculo de una iteración sı́mplex,
que incluyen las reglas para determinar las variables de entrada y de salida, ası́
como para detener los cálculos cuando se ha llegado a la solución óptima. Como
medio de explicación usaremos un ejemplo numérico.
Ejemplo 3.3-1
Usaremos el modelo de Reddy Mikks (Ejemplo 2.1-1) para explicar los detalles del método sı́mplex. El problema se expresa en forma de ecuaciones como
sigue:
Maximizar z
=
5x1 + 4x2 + 0s1 + 0s2 + 0s3 + 0s4
s.a. 6x1 + 4x2 + s1
x1 + 2x2 + s2
=
=
24 (materia prima M1)
6 (materia prima M2)
−x1 + x2 + s3
x2 + s 4
x1 , x 2 , s 1 , s 2 , s 3 , s 4
= 1 (lı́mite de demanda)
= 2 (lı́mite de demanda)
0
≥
Las variables s1 , s2 , s3 y s4 son las holguras asociadas con las restricciones
respectivas. A continuación se expresará la función objetivo como sigue:
z − 5x1 − 4x2 = 0
De esta manera, la tabla inicial sı́mplex se puede representar como sigue:
Básica
z
s1
s2
s3
s4
z
1
0
0
0
0
x1
-5
6
1
-1
0
x2
-4
4
2
1
1
s1
0
1
0
0
0
s2
0
0
1
0
0
s3
0
0
0
1
0
s4
0
0
0
0
1
Solución
0
24
6
1
2
fila z
fila s1
fila s2
fila s3
fila s4
En el diseño de la tabla se especifica el conjunto de variables básicas y no
básicas, y también se muestra la solución asociada con la iteración de inicio.
Como se explicó en la sección 3.3.1, las iteraciones sı́mplex comienzan en el origen (x1 , x2 ) = (0, 0). Ası́, el conjunto asociado de variables no básicas y básicas
se define como sigue:
Variables no básicas (cero)
Variables básicas
: (x1 , x2 )
: (s1 , s2 , s3 , s4 )
Dado que las variables no básicas (x1 , x2 ) = (0, 0), y al observar el arreglo
especial 0-1 de los coeficientes de las variables básicas (s1 , s2 , s3 , s4 ) en la tabla,
se dispone de inmediato de la siguiente solución (sin más cálculos):
1
z = 0, s1 = 24, s2 = 6, s3 = 1, s4 = 2
Esta solución se muestra en la tabla, con la lista de las variables básicas en
la columna Básica de la izquierda, y sus valores en la columna Solución de la
derecha. De hecho, la tabla define el punto esquina actual especificando sus
variables básicas y sus valores, ası́ como el valor correspondiente para la función
objetivo, z. Recuerde que las variables no básicas (las que no aparecen en la
lista Básica) siempre son igual a cero.
¿Es óptima la solución de inicio? En la sección 3.3.1 dijimos que la variable no básica con el coeficiente más positivo en una función objetivo de maximización se selecciona para entrar a la solución básica. Esta regla se basa en
expresar la función objetivo como z = 5x1 + 4x2 . Como la tabla sı́mplex expresa la función objetivo en la forma z − 5x1 − 4x2 = 0, la variable de entrada
es x1 , porque tiene el coeficiente más negativo en la función objetivo, que es de
maximización. Si fuera el caso que todos los coeficientes de la función objetivo
fueran ≥ 0, no serı́a posible mejorar z y eso querrı́a decir que se habrı́a llegado
al óptimo.
Para determinar la variable de salida, en forma directa con la tabla, se calculan las intersecciones, o coordenadas (x1 ) al origen, de todas las restricciones
con la dirección no negativa del eje x1 (recuérdese que x1 es la variable de entrada). Esas intersecciones son las razones del lado derecho de las ecuaciones
(columna Solución) entre los coeficientes de restricción correspondientes, abajo
de la variable de entrada x1 , como se ve en la siguiente tabla:
Básica
s1
s2
s3
s4
Entra
x1
6
1
-1
0
Solución
24
6
1
2
Razón
(o intersección)
x1 = 24/6 = 4 ← mı́nimo
x1 = 6/1 = 6
x1 = 1/(−1) = −1 (ignorar)
x1 = 2/0 = ∞ (ignorar)
Como se ve en la figura 3.6, las razones no negativas son iguales a las intersecciones en dirección de x1 creciente. Las razones (intersecciones) que corresponden a s3 y s4 no se toman en cuenta, porque no limitan a x1 en la dirección
no negativa.
La razón no negativa mı́nima corresponde a s1 básica, y quiere decir que s1
es la variable de salida (su valor es cero en la nueva iteración). El valor de la
variable de entrada x1 en la nueva solución también es igual a la razón mı́nima:
x1 = 4 (compárela con el punto B de la figura 3.6). El aumento correspondiente
del valor de la z objetivo es ($5 × 4ton) = $20.
El resultado final de “intercambiar” las variables de entrada y de salida es
que las variables no básicas y básicas en el nuevo punto solución (el punto B)
son:
2
Figure 1:
Variables no básicas (cero)
Variables básicas
: (s1 , x2 )
: (x1 , s2 , s3 , s4 )
Ahora se deben manipular las ecuaciones de la última tabla de modo que
la columna Básica y la columna Solución identifiquen la nueva solución en el
punto B. El proceso se llama operaciones de Gauss-jordan. Los cálculos
son tediosos y voluminosos, por lo que la computadora es el medio esencial para
resolver los programas lineales. Se pide al lector que haga la prueba con cálculos
a mano, al menos una vez, para que pueda apreciar cómo funciona el método.
Después de esta experiencia es posible que nunca deba volver a usar cálculos a
mano.
La siguiente es una réplica de la tabla de inicio. Asocia a la columna pivote y a la fila pivote con las variables de entrada y de salida, respectivamente.
A la intersección de la columna pivote con el fila pivote se le llama pivote o
elemento pivote.
3
↓
Básica z
x1
x2
z
1
-5
-4
←
s1
0
6
4
s2
0
1
2
s3
0
-1
1
s4
0
0
1
Columna pivote
Los cálculos de Gauss-Jordán necesarios
básica son de dos tipos:
s1
0
1
0
0
0
s2
0
0
1
0
0
s3
0
0
0
1
0
s4
0
0
0
0
1
Solución
0
24
6
1
2
fila pivote
para obtener la nueva solución
1. fila pivote
Nueva fila pivote = fila pivote actual ÷ Elemento pivote
2. Todos los demás renglones, incluyendo z
Nuevo fila = (fila actual) - (Su coeficiente en la columna pivote) × (Nueva fila
pivote)
Esos cálculos se aplican a la tabla anterior en la siguiente forma:
1.
2.
3.
4.
5.
Nueva
Nueva
Nueva
Nueva
Nueva
fila
fila
fila
fila
fila
pivote x1 = fila pivote s1 actual ÷ 6
z = fila z actual - (-5) × Nueva fila pivote
s2 = fila s2 actual - (1) × Nueva fila pivote
s3 = fila s3 actual - (-1) × Nueva fila pivote
s4 = fila s4 actual - (0) × Nueva fila pivote
La tabla nueva que corresponde a la nueva solución básica (x1 , s2 , s3 , s4 ) se
convierte en (¡verifı́quelo!):
←
Básica
z
x1
s2
s3
s4
z
1
0
0
0
0
x1
0
1
0
0
0
↓
x2
-2/3
2/3
4/3
5/3
1
Columna pivote
s1
5/6
1/6
-1/6
1/6
0
s2
0
0
1
0
0
s3
0
0
0
1
0
s4
0
0
0
0
1
Solución
20
4
2
5
2
Observe que la nueva tabla tiene las mismas propiedades que la de inicio.
Cuando se igualan las variables no básicas x2 y s1 a cero, la columna Solución
muestra en forma automática la nueva solución básica (x1 = 4, s2 = 2, s3 =
5, s4 = 2). El nuevo valor objetivo correspondiente es z = 20. Este “acondicionamiento” de la tabla es el resultado de aplicar las operaciones fila de GaussJordán.
4
fila pivote
La última tabla identifica a x2 y s2 como las variables de entrada y de
salida, respectiva mente. La justificación de esas selecciones es la siguiente: al
examinar la tabla se ve que no es óptimo, porque la variable no básica x 2 tiene
un coeficiente negativo en el fila z. Este razonamiento, igual al que usamos en
la tabla de inicio, se aclara al expresar el fila z en la forma
5
2
x2 − s1 + 20
3
6
Es benéfico un aumento en x2 respecto a su valor actual de cero, porque
hará aumentar el valor de z, y por consiguiente x2 es la variable de entrada.
A continuación, los cálculos de razones de la siguiente tabla indican que s 2
es la variable de salida.
z=
Básica
x1
s2
s3
s4
Entra
x2
2/3
4/3
5/3
1
Razón
(o intersección)
x2 = 4÷ 2/3 =6
x2 = 2÷4/3=1.5← mı́nimo
x2 = 5÷5/3=3
x2 = 2÷1=2
Solución
4
2
5
2
Se ve que x2 = 1.5, y que el aumento correspondiente en z es 2/3 × 1.5 =
1, dando la nueva z = 20 + 1 = 21.
Dadas x2 y s2 como variables de entrada y de salida, necesitamos aplicar las
siguientes operaciones de fila de Gauss-Jordan para obtener la siguiente tabla.
1.
2.
3.
4.
5.
Nuevo
Nuevo
Nuevo
Nuevo
Nuevo
fila
fila
fila
fila
fila
pivote x2 = fila pivote s2 actual ÷ 4/3
z = fila actual z − (−2/3)× Nuevo fila pivote
x1 = fila x1 actual - (2/3)× Nuevo fila pivote
s3 = fila s3 actual - (3) × Nuevo fila pivote
s4 = fila s4 actual - (1) × Nuevo fila pivote
Con estos cálculos se obtiene la siguiente tabla:
Básica
z
x1
x2
s3
s4
z
1
0
0
0
0
x1
0
1
0
0
0
x2
0
0
1
0
0
s1
3/4
1/4
-1/8
3/8
1/8
s2
1/2
-1/2
3/4
-5/4
-3/4
s3
0
0
0
1
0
s4
0
0
0
0
1
Solución
21
3
3/2
5/2
1/2
Como ninguno de los coeficientes del fila z asociados con las variables no
básicas y s2 son negativos, esta última tabla es óptima.
5
Se puede leer la solución óptima en la tabla sı́mplex como sigue: los valores
óptimos de las variables en la columna Básica se ven en la columna Solución
del lado derecho, y se pueden interpretar del siguiente modo
Variable de desición
x1
Valor óptimo
3
x2
3/2
z
21
Recomendación
Producir 3 ton diarias de pinturas
para exteriores
Producir 1.5 ton diarias de pinturas
para interiores
La utilidad diaria es de $21.000
El lector puede comprobar que los valores s1 = s2 = 0, s3 = 5/2, s4 = 1/2
son consistentes con los valores dados de x1 y x2 .
La tabla sı́mplex muestra una gran cantidad de información adicional, que
comprende:
1. El estado de los recursos.
2. El valor por unidad (precios duales) de los recursos.
3. Todos los datos necesarios para efectuar un análisis de sensibilidad con
la solución óptima.
Un recurso se llama escaso si las actividades (variables) del modelo lo usan
por completo. En caso contrario, es abundante. Esta información se obtiene
en la tabla óptima revisando el valor de la variable de holgura asociada con
la restricción que representa al recurso. Si la variable de holgura es cero, el
recurso se usa por completo, y el recurso es escaso. En caso contrario, una
holgura positiva indica que el recurso es abundante.
En el modelo de Reddy Mikks, las cuatro restricciones se clasifican como
sigue:
Recurso
Materia prima, M1
Materia prima, M2
Lı́mite de demanda 1
Lı́mite de demanda 2
Variable de
holgura
s1 = 0
s2 = 0
s3 = 5/2
s4 = 1/2
Estado o
condición
Escasa
Escasa
Abundante
Abundante
El estado de los recursos indica que está garantizado un aumento en la
disponibilidad de las materias primas M1 y M2, porque los dos son escasos.
La cantidad del aumento se puede calcular con procedimientos adecuados de
análisis de sensibilidad. Este punto se explicó en las secciones 2.3.2 y 2.3.3.
El ejemplo 3.3-1 es de una maximización. En una minimización, la selección
de las variables de salida es igual que en el caso de la maximización. Para la
variable de entrada, ya que máx z = -mı́n(-z), el caso de minimización selecciona
la variable de entrada como la variable no básica con el coeficiente objetivo más
positivo, y se llega a z mı́nima cuando todos los coeficientes del fila z son no
6
positivos.
Las reglas para seleccionar las variables de entrada y de salida se llaman
condiciones de optimalidad y de factibilidad. Por comodidad se resumirán
a continuación esas condiciones, y los pasos del método sı́mplex.
Condición de optimalidad. La variable de entrada en un problema de
maximización (minimización) es la variable no básica que tenga el coeficiente
más negativo (positivo) en el fila de z. Los empates se rompen en forma arbitraria. Se llega al óptimo en la iteración en la que todos los coeficientes de las
variables no básicas en el fila z son no negativos (no positivos).
Condición de factibilidad. En los problemas de maximización y de minimización, la variable de salida es la variable básica asociada con la mı́nima razón
no negativa (con denominador estrictamente positivo). Los empates se rompen
en forma arbitraria. Los pasos del método sı́mplex son los siguientes:
Paso 0. Determinar una solución básica factible de inicio.
Paso 1. Seleccionar una variable de entrada aplicando la condición de optimalidad. Detenerse si no hay variable de entrada; la última solución es la
óptima.
Paso 2. Seleccionar una variable de salida aplicando la condición de factibilidad.
Paso 3. Determinar la nueva solución básica con los cálculos adecuados de
Gauss-Jordán. Ir al paso 1.
7
Descargar