Es gibt ein System linearer Bedingungen . Ich möchte einen streng positiven Vektor , der diese Bedingungen erfüllt. Das heißt, wird für jede Komponente von . Wie kann ich einen LP-Solver verwenden, um einen solchen streng positiven Vektor (oder um zu bestätigen, dass kein existiert)? Ich kann nicht einfach ein anderes System von Bedingungen einführen , da die Gleichheit in einer LP immer zulässig sein muss - aber ich kann den LP-Solver mit wechselnden Zielfunktionen mehrmals verwenden. Ich denke, ich sollte die Slack-Variable-Methode verwenden, aber ich weiß nicht wie.x > 0 x i > 0 x i x x x x i > 0
15
Für ein LP-Machbarkeitsproblem würde ich kein Standard-Simplex verwenden. Standard-Simplex-Algorithmen für Primzahlen (oder Dual-Simplex-Algorithmen) ermitteln nur die Eckpunkte der möglichen Menge der Primzahlen (oder Dual-Simplex-Probleme).
Nehmen wir an, dass die realisierbare Menge des Problems, das Sie tatsächlich lösen möchten, ist und dass Sie stattdessen das Problem lösen sollten ( F ε ):F={x:Ax≤b,x>0} Fε
Die nächste Annäherung an das Problem, das Sie lösen möchten, ist , das etwas zu viele Punkte zulässt. Das Problem ist , dass die Grenze des positiven Orthanten (dh die Menge B = { x : x ≥ 0 , ∃ i : x i = 0 } Teil der Grenze der zulässigen Menge von Make - up konnte F 0 . Wir würden möchte diese Punkte ausschließen. Eine Möglichkeit, dies zu tun, besteht darin, das zu tun, was Aron vorgeschlagen hat, nämlich ε zu setzenF0 B={x:x≥0,∃i:xi=0} F0 ε auf einen kleinen positiven Wert und verwenden Sie dann einen beliebigen Standard-LP-Algorithmus. Diese Strategie ist gut und wird wahrscheinlich in einer Vielzahl von Situationen funktionieren. Es wird jedoch versagen, wenn epsi ; nicht durchführbar ist. Wir wissen, dass F 0 ⊂ F ⊂ F ε für alle ε > 0 ist (um die Notation zu missbrauchen und auf eine durchführbare Menge durch das entsprechende Problem Bezug zu nehmen), und es ist möglich, dass der LP-Löser auch dann anzeigt , wenn Sie kleine positive Werte von ε auswählen dass deine LP nicht machbar ist.Fε F0⊂F⊂Fε ε>0 ε
Für einen LP-Solver würde ich einen beliebigen Algorithmus für interne Punkte für LPs verwenden, der mit einem machbaren Punkt beginnt und machbar bleibt. Dies ist eine weitere Möglichkeit, Punkte in auszuschließen . Sie müssen für diese Algorithmen keinen praktikablen Punkt angeben. Standardlöser erledigen das für Sie. Methoden wie affine Skalierung, Potentialreduktion und Barrieremethoden stellen zusätzliche LPs auf, die praktikable Lösungen finden, und die Iterationen für diese Algorithmen durchlaufen das Innere des praktikablen Bereichs. Sie müssen nur einen Punkt in Ihrer realisierbaren Region lokalisieren. Solange die von den LP-Lösern verwendeten Hilfsprobleme einen realisierbaren Punkt für Ihr Problem lokalisieren und dieser realisierbare Punkt absolut positiv ist, sollten Sie in Ordnung sein. Wenn die Lösung von F & epsi; für kleine positive Werte von & epsi; fehlschlägtB Fε ε können Sie diese Methoden möglicherweise weiterhin verwenden, um einen streng positiven realisierbaren Punkt innerhalb von zu lokalisieren .F0
Verwenden Sie jedoch kein Simplex, da nur die Eckpunkte von , was genau das ist, was Sie vermeiden möchten.Fε
quelle
Machbarkeitsprobleme sind ein etwas kniffligeres Spiel als allgemeine lineare Probleme, die Sie bemerkt haben. Wenn Sie eine Näherungslösung durchführen (mithilfe einer Gleitkommadarstellung des Gleichungs- und Beschränkungssystems), ist es zulässig, zu fordern , wobei ϵ ein sehr kleiner Zahlenwert ist, der groß genug ist, um sicherzustellen, dass x i tatsächlich ist lebt in ℜ + , ist aber so klein, dass eine Lösung an der Grenze nicht in Betracht gezogen wird.xich> = ϵ ϵ xich R+
Möglicherweise müssen Sie einstellen und Ihre Lösung wird auf „innerhalb eines Faktors von qualifiziert sein ε “, aber dies für viele Situationen ausreichend ist.ϵ ϵ
quelle
Die Antwort von aeismail ist sorgfältig zu lesen, siehe lp
st
Es hat Lösungen und ( 0 , 1 ) sowie andere (entartet). Die Allgemeinheit der Frage impliziert, dass auch diese Fälle behandelt werden müssen.(1,0) (0,1)
Da Sie Ihre Zielfunktion auswählen können, können Sie versuchen, sie iterativ zu ändern. ZB Beginnen Sie mit allen Koeffizienten für alle Variablen gleich eins, und prüfen Sie, ob Sie eine geeignete Lösung erhalten. Wenn eine Variable Null ist, erhöhen Sie den Koeffizienten und beginnen Sie erneut ...
Ich kann jedoch keinen mathematischen Beweis dafür liefern, dass dies funktioniert (oder ein genau definiertes Verfahren zum Ändern der Zielfunktion). Ich hoffe das hilft :)
quelle