Durchführbarkeitsproblem der linearen Programmierung mit strengen Einschränkungen der Positivität

15

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 > 0Axbx>0xi>0xixxxxi>0

Sara
quelle

Antworten:

15

Sie können das Problem der Auswahl einer kleinen umgehen, indem Sie etwas ehrgeiziger vorgehen: Versuchen Sie,ϵ>0x so zu finden, dass Axb und der kleinste Eintrag in x größte ist.

y=[xϵ]Rn+1
xRn
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

Dies ist eine Neuformulierung des folgenden Problems:

maxϵs.tAxbandxϵ1.

Dolch
quelle
Gut gemacht, das ist gleichbedeutend mit einem Trick eines Mitautors, den ich kürzlich in einer Veröffentlichung verwendet habe und der von mir vorgeschlagenen Vorgehensweise definitiv überlegen ist.
Aron Ahmadia
Einverstanden. Gut gemacht, Sir.
Geoff Oxberry
Das neu formulierte Problem kann ein unbegrenztes Ziel haben, wenn die Antwort auf das ursprüngliche Problem trivial ist. Zum Beispiel, wenn das System der Einschränkungen nur . Das ist in Ordnung, solange Sie prüfen, ob der Rückgabestatus Ihres LP-Solvers machbar, optimal oder unbegrenzt ist, oder das ϵ explizit einschränken . x-1ϵ
David Nehme
@DavidNehme: Man kann die Bedingung hinzufügen , um ein beschränktes Ziel zu erhalten. yn+11
Arnold Neumaier
5

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:Axb,x>0}Fε

minx0s.t.Axbxε1.

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 : x0 , 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 setzenF0B={x:x0,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 0F 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εF0FFεε>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ägtBFεε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ε

Geoff Oxberry
quelle
4

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+

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.ϵϵ

Aron Ahmadia
quelle
2

Die Antwort von aeismail ist sorgfältig zu lesen, siehe lp

max(x1+x2)

st

x1+x21

x1,x20

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 :)

Dan
quelle
Wenn Sie jedoch eine große Anzahl von entarteten Lösungen haben, wie würden Sie numerisch damit umgehen? Wird nicht so ziemlich jeder numerische Löser eine Warnung (oder noch schlimmer) über die Lösung dieses Problems ausgeben?
Aeismail
Nein, werden sie nicht; Sie geben nur die erste optimale Lösung zurück. Sie können weiterhin Lösungen generieren, indem Sie Schnittebenen (oder andere Einschränkungen) hinzufügen, die zuvor berechnete optimale Lösungen ausschließen. In diesem Fall können Sie durch Hinzufügen solcher Schnittebenen eine diskrete Approximation der unendlichen Menge optimaler Lösungen zurückgeben.
Geoff Oxberry
Ich würde das als seltsame Programmierentscheidung ansehen; Warum möchten Sie dem Benutzer nicht mitteilen, dass die Zielfunktion in der Nähe der berichteten Lösung etwas Seltsames getan hat? Für einen nichtlinearen Löser könnte es ein Problem geben, herauszufinden, was vor sich geht. Aber sollte das mit einem linearen System nicht einfacher zu sagen sein?
Aeismail
Ich müsste darüber nachdenken, wie man Entartung erkennt, indem man tatsächlich Probleme erstellt. In der Regel möchten Benutzer jedoch eine optimale Lösung. Die wichtigste Information für eine LP ist daher, dass sie zurückgegeben wird, wenn die Lösung optimal, machbar (aber nicht optimal) ist. undurchführbar oder unbegrenzt. (Diese Zustände sind in der Tat das, was ein Löser wie CPLEX zurückgeben würde.) Entartung ist in erster Linie ein theoretisches Problem; Der einzige Grund, warum dies in einem numerischen Kontext diskutiert wird, liegt entweder im Algorithmus-Design oder in der Praxis, um festzustellen, dass die Entartung einen Löser typischerweise verlangsamt.
Geoff Oxberry