Reduzieren der linearen Programmierung auf positive lineare Programmierung

7

Angenommen, wir haben ein Orakel, das Probleme der Form löst

maximize  cTxsubject to  Ax=b,x0

wenn c0 (alle Koeffizienten im Maximierungsziel sind nicht negativ).

Kann es verwendet werden, um allgemeine lineare Programme effizient zu lösen?

FAILED ATTEMPT # 1: Ersetzen Sie jede Variable xi , die durch einen negativen Koeffizienten in cTx , durch eine andere Variable yi:=xi . Leider erfüllt dieses yi nicht die Nicht-Negativitätsbedingung.

FAILED ATTEMPT # 2: Stellen Sie sicher, dass alle Elemente in b nicht positiv sind (multiplizieren Sie die Gleichung bei Bedarf mit -1). Erstellen Sie dann die Dual-LP:

maximize  bTysubject to  ATyc

Hier sind alle Koeffizienten im Objektiv nicht negativ. Diese Form stimmt jedoch nicht mit der Form überein, die das Orakel lösen kann, da die Bedingungen keine Gleichungsbedingungen sind und die Variablen y unbegrenzt sind.

Erel Segal-Halevi
quelle
Sie können versuchen, die Reduzierung von der Optimierung zur Machbarkeit zu verwenden (im Wesentlichen binäre Suche).
Yuval Filmus
Darf ich fragen, was die Motivation für diese Nicht-Negativität ist?
John L.
1
@ Apass.Jack Ich habe versucht, die Härte eines Problems zu beweisen, und dachte, dass ein möglicher Weg darin besteht, die lineare Programmierung darauf zu reduzieren. In meinem Problem sind die Koeffizienten jedoch alle positiv. Ich wollte wissen, ob positive lineare Programmierung genauso schwierig ist wie das allgemeine Problem.
Erel Segal-Halevi

Antworten:

5

Sie können für einige eine Variable und eine lineare Gleichheit hinzufügen . Dann entspricht das ursprüngliche Problem der Maximierung von im neuen System.yy=cTx+c0c0y

Mit Ausnahme der Bedingung . Hier kommt ins . Wir müssen groß machen, dass wir für ein realisierbares ( und hold) . In diesem Fall spielt es keine Rolle, dass Nicht-Negativität Teile des realisierbaren Raums abschneidet. Der optimale Wert ist immer noch der gleiche.y0c0c0xAx=bx0cTx+c00

Wie wählt man also ? Ich bin kein Experte für lineare Optimierung. Ist es einfacher, ein machbares finden, als eines, das die Zielfunktion maximiert? Wenn ja, können wir als .c0x0c0cTx0

Wenn die angegebenen Koeffizienten rational sind, gibt es einen anderen Weg. Stellen wir zunächst fest, dass das Polytop von machbarem Eckpunkte hat (es sei denn, es ist leer): Sei ein Punkt in einer minimaldimensionalen Grenzzelle des Polytops. Nehmen Sie im Widerspruch an, dass die Dimension dieser Zelle . Dann gibt es einen anderen Punkt in derselben Zelle. Da die Zelle eine minimale Abmessung hat, ist sie unbegrenzt, so dass Punkte der Form in derselben Zelle und somit im Polytop liegen. Da , haben einige solcher negative Koordinaten, was der Polytopbedingung widerspricht .xp1qr=p+t(qp)qp0rr0

Machen Sie nun alle Koeffizienten von und ganzzahlig, indem Sie mit dem gemeinsamen Nenner multiplizieren. Sei die Dimension (die Länge des Vektors ) und sei der maximale Absolutwert eines beliebigen Koeffizienten von , oder . Dann können wir die Koordinaten eines beliebigen Scheitelpunkts des realisierbaren Polytops durch binden . Wählen Sie also .AbncMAbcn!Mnc0:=nn!Mn+1

[BEARBEITEN]

Noch ein anderer Ansatz, falls Sie bereit sind, das Orakel mehrmals anzurufen: Versuchen Sie zunächst das Obige mit . Wenn Sie eine Lösung oder die Antwort "unbegrenzt" erhalten, geht es Ihnen gut. Wenn die Antwort "unlösbar" ist, müssen Sie herausfinden, ob es Lösungen mit negativer Zielfunktion gibt. Setzen Sie daher und maximieren Sie stattdessen . Wenn Sie eine Lösung erhalten, können Sie diese als . Wenn Sie wieder "unlösbar" werden, sind Sie auch fertig. Der letzte Fall ist die Antwort "unbegrenzt". Dann müssen Sie immer größere ausprobieren (verwenden Sie für einige Orakelaufrufe eine schnell wachsende Funktion; die Ackermann-Funktion kann dies tun), bis Sie eine Lösung erhalten.c0=0z=cTzx0c0

Knie
quelle
Hört sich gut an. Ich denke, Sie brauchen nicht einmal den letzten Teil. Um eine praktikable Lösung zu finden, können Sie einfach ein Dummy-Problem lösen, z. B. "1 maximieren, abhängig von ". Die Antwort sollte 1 sein, wenn es eine praktikable Lösung gibt (aber nicht sicher). Ax=b,x0
Erel Segal-Halevi
-1

Sie können eine Variable x ohne positive Einschränkung durch zwei Variablen ersetzen, wobei sowohl als auch positiv sind. Alle ihre Koeffizienten sind identisch, außer dass sie das entgegengesetzte Vorzeichen haben.x+xx+x

Im Simplex-Algorithmus ist es immer möglich, nur einen davon in die Basis zu stellen. Tatsächlich können Sie zusätzliche Berechnungen vermeiden, indem Sie einfach verfolgen, ob eine Basisvariable derzeit positiv oder negativ ist.

gnasher729
quelle
Ich habe diese Antwort nicht verstanden. Wenn Sie durch zwei Variablen ersetzen , sind die Koeffizienten im Maximierungsziel negativ.x
Erel Segal-Halevi