Hay un sistema de restricciones lineales . Deseo encontrar un vector estrictamente positivo que satisfaga estas restricciones. Eso significa que es necesario para cada componente de . ¿Cómo puedo usar un solucionador de LP para encontrar un vector tan estrictamente positivo (o confirmar que no existe )? No puedo simplemente introducir otro sistema de restricciones , porque siempre se debe permitir la igualdad en un LP, pero puedo usar el solucionador de LP varias veces, con funciones objetivas cambiantes. Creo que debería usar el método de variable de holgura, pero no sé cómo.x i > 0 x i x x x x i > 0
15
Para un problema de viabilidad de LP, no usaría el simplex estándar. Los algoritmos símplex primarios estándar (o duales) solo visitarán los vértices del conjunto factible de los problemas primarios (o duales).
Supongamos que el conjunto factible del problema que realmente desea resolver es , y suponga que, en cambio, debe resolver el problema ( F ε ):F= { x : A x ≤ b , x > 0 } Fε
La aproximación más cercana del problema que desea resolver es , que admite demasiados puntos. El problema es que el límite del ortante positivo (es decir, el conjunto B = { x : x ≥ 0 , ∃ i : x i = 0 } podría formar parte del límite del conjunto factible de F 0 . les gusta excluir esos puntos. Una forma de hacerlo es hacer lo que Aron sugirió, que es establecer εF0 0 B={x:x≥0,∃i:xi=0} F0 ε a algún valor positivo pequeño, y luego use cualquier algoritmo LP estándar. Esta estrategia es buena y probablemente funcionará en una amplia variedad de situaciones. Sin embargo, fallará si es factible. Sabemos que F 0 ⊂ F ⊂ F ε para todos ε > 0 (para abusar de la notación y referirse a un conjunto factible por su problema correspondiente), y es posible que incluso si selecciona pequeños valores positivos de ε , el solucionador LP indicará que tu LP no es factible.Fε F0⊂F⊂Fε ε>0 ε
Para un software de PL, que haría uso de cualquier algoritmo de punto interior para discos que se inicia con un punto factible y estancias factibles, que es otra manera de excluir puntos en . No es necesario que proporcione un punto factible para estos algoritmos; Los solucionadores estándar lo harán por usted. Métodos como el escalado afín, la reducción de potencial y los métodos de barrera establecen LPs auxiliares que encontrarán soluciones factibles, y los iteraciones para estos algoritmos atraviesan el interior de la región factible. Solo necesita ubicar un punto en su región factible, por lo tanto, mientras los problemas auxiliares utilizados por los solucionadores de LP encuentren un punto factible para su problema, y ese punto factible sea estrictamente positivo, debería estar bien. Si la resolución de F ε falla para pequeños valores positivos de εsi Fε ε , aún puede utilizar estos métodos para localizar un punto factible estrictamente positivo dentro de .F0 0
Sin embargo, no use simplex, ya que solo explorará los vértices de , que es exactamente lo que desea evitar hacer.Fε
fuente
Los problemas de viabilidad son un juego un poco más complicado que los problemas lineales generales, que usted ha notado. Si está resolviendo aproximadamente (mediante el uso de una representación de coma flotante del sistema de ecuaciones y restricciones), es legítimo requerir , donde ϵ es un valor numérico muy pequeño, lo suficientemente grande como para asegurar que x i realmente vive en ℜ + , pero lo suficientemente pequeño como para que no se considere una solución en el límite.xi>=ϵ ϵ xi R+
Puede que tenga que ajustar , y su solución estará calificada para "dentro de un factor de ϵ ", pero esto es suficiente para muchas situaciones.ϵ ϵ
fuente
La respuesta dada por aeismail debe ser leída cuidadosamente, tenga en cuenta el lp
S t
Tiene soluciones y ( 0 , 1 ) así como otras (degeneradas). La generalidad de la pregunta implica que estos casos también deben tratarse.( 1 , 0 ) ( 0 , 1 )
Como puede elegir su función objetivo, puede intentar modificarla de forma iterativa. Por ejemplo, comience con todos los coeficientes para todas las variables iguales a uno, verifique si obtiene una solución adecuada. Si una variable es cero, aumente su coeficiente y comience de nuevo ...
Aunque no puedo dar una prueba matemática de que esto funciona (o un procedimiento bien definido sobre cómo modificar la función objetivo). Espero que esto ayude :)
fuente