Tengo un algoritmo que genera una solución factible a un problema de programación lineal. Sin embargo, es muy probable que este no sea un punto de esquina. Esto hace que no sea adecuado para uso directo como una solución inicial factible para un solucionador Simplex acotado. ¿Cómo puedo encontrar eficientemente un punto de esquina de esta solución que pueda usar?
En resumen, ¿cómo puedo iniciar el método Simplex desde un punto interno factible?
Respuestas:
Cada libro sobre optimización lineal explica el método simplex como un algoritmo de dos etapas: el primero para encontrar una esquina factible como punto de partida, y el segundo para encontrar el óptimo. El primero usa un doble problema. Eche un vistazo a D. Bertsimas y JN Tsitsiklis: "Introducción a la optimización lineal" , por ejemplo.
La razón por la que se necesita el enfoque de dos fases es que generalmente es difícil encontrar un punto factible: en espacios de altas dimensiones, el conjunto factible es muy pequeño en comparación con, por ejemplo, la caja de la unidad. A partir de su pregunta, parece que tiene una forma diferente de encontrar al menos un punto factible, y en ese caso puede ser posible generar un vértice del poliedro factible desde este punto. Una idea sería utilizar el siguiente enfoque: cada restricción de desigualdad representa un medio espacio separado por un hiperplano. Dado un punto factible , encuentre los n + 1 hiperplanos que están más cerca de x ∗X∗ n + 1 X∗ y tomar su intersección. Intuitivamente, este vértice debería ser factible, aunque admito que habría que pensar un poco más sobre esto.
fuente
Lamentablemente, la solución de Wolfgang Bangerth no garantiza que funcione:
fuente
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
sujeto a
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 AUNA metro n A
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. BB B
Resuelve las ecuaciones para obtener los valores de las variables básicas.Ax=b
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. MM M
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.
fuente
Estaba buscando la solución para una pregunta similar: para un programa lineal disperso muy grande, solo el método simplex probó el trabajo, pero solo cuando la solución predeterminada 0 es factible. Parece que el algoritmo de la fase uno (como en linprog de Matlab) es malo. Y el código fuente de la fase uno es tan complejo para sustituirlo por otro algoritmo como el algoritmo genético, por lo que un método alternativo es hacer una transformación lineal del problema original, de modo que en las nuevas variables la solución factible inicial proporcionada sea 0, y esto 0 será utilizado por la fase uno sin usar su propio método para encontrar un punto de partida diferente.
Al probar este método, paso a paso a través de linprog.m, simplex.m, simplexpresolve.m y simplexphaseone.m, en los casos en que solo se usan restricciones de desigualdad, se confirma que el 0 predeterminado se usará para las variables originales, donde Las variables de holgura tomarán las diferencias. Por lo tanto, la transformación lineal puede colarse x0 en simplex, lo que intencionalmente evita x0 proporcionado por el usuario. A continuación, puede ver el mensaje de "El punto de inicio predeterminado es factible, omitiendo la Fase 1".Por otro lado, generalmente GA puede encontrar una solución cercana al programa lineal al 0.01 por ciento mediante el uso de tiempos dobles o triples, por lo que puede no merecer los esfuerzos de la transformación lineal de esas restricciones, objetivos y límites, especialmente cuando las restricciones se crean artificialmente .
fuente