En realidad, hay muchos enfoques diferentes para la fase I en el método simplex. En particular, hay algoritmos de fase I que usan iteraciones simples simples simples y otros algoritmos de fase I que usan iteraciones simples simples. Aquí hay un enfoque muy general que podría adaptarse fácilmente para hacer uso de una solución factible conocida. Esta versión usa el método dual simplex en la fase I y el método simplex simple en la fase II, pero hay una variante que usa iteraciones simplex primarias en la fase I e iteraciones simplex dual en la fase II que mencionaré al final. El enfoque que voy a describir aquí se discute en muchos libros de texto sobre programación lineal. Por ejemplo, vea el texto de Robert Vanderbei .
Supongamos que estamos resolviendo
max c x
sujeto a
A x = b
l ≤ x ≤ u
donde de tamaño por . Para simplificar, suponga que las filas de son linealmente independientes (esto se puede lograr mediante una factorización que revela el rango).m n AUNAmetronA
- Elige una base inicial. Esta es una colección de variables para que las columnas correspondientes de formen una matriz no singular . Las variables no básicas restantes se pueden establecer en sus límites superior o inferior (o cero si una variable no tiene límites). A BmAB
Una manera fácil de hacer esto desde su solución inicial es seleccionar como variables básicas aquellas variables que están más lejos de sus límites en la solución factible conocida y luego verificar que no sea singular. Puede que tenga que modificar la base para que no sea singular. El punto aquí es que hay muchas bases posibles, pero esta tiene como variables básicas las variables que parecen ser correctas de su solución factible. BBB
Resuelve las ecuaciones para obtener los valores de las variables básicas. Ax=b
- Es probable que la solución básica que obtenga sea primariamente inviable en el sentido de que algunas de las variables primarias están fuera de sus límites. También es probable que sea doblemente inviable en el sentido de que algunos de los costos reducidos de las variables no básicas tienen signos incorrectos (por ejemplo, variables no básicas en los límites inferiores con costos reducidos positivos o variables no básicas en los límites superiores con costos reducidos negativos).
Superaremos este problema cambiando la función objetivo a una que sea doblemente factible. Para cada variable no básica en su límite inferior, reste una gran cantidad positiva del coeficiente de la función objetivo. Para cada variable no básica en su límite superior, agregue una gran cantidad positiva al coeficiente. Esto asegura que el diccionario sea doblemente factible. MMM
El objetivo de esta modificación de la función objetivo es tratar de trabajar hacia la viabilidad primaria, pero también avanzar hacia la optimización con respecto a la función objetivo original. Desea que sea lo suficientemente grande como para tener doble factibilidad, pero desea mantener tanta influencia como sea posible de la función objetivo original. M
Realice métodos de doble símplex para obtener una solución básica que sea factible primordialmente (todas las variables básicas dentro de boudns) y doble factible (todos los costos reducidos tienen el signo deseado). Esta solución es óptima para el problema de la fase I.
Reemplace la función objetivo de la fase I modificada con la función objetivo original. Ahora tendrá una solución básica que es primordialmente factible (cambiar la función objetivo no afecta a esto) pero doblemente inviable. Realice las iteraciones primarias simples para volver a la optimización.
Una alternativa obvia a este enfoque sería modificar el lado derecho b al comienzo de la fase I, usar iteraciones primarias simples en la fase I para llegar a la óptima, luego volver a colocar el lado derecho original para la fase II y usar iteraciones dobles simples. en la fase II.