Angenommen, wir haben ein Orakel, das Probleme der Form löst
wenn (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 , die durch einen negativen Koeffizienten in , durch eine andere Variable . Leider erfüllt dieses nicht die Nicht-Negativitätsbedingung.
FAILED ATTEMPT # 2: Stellen Sie sicher, dass alle Elemente in nicht positiv sind (multiplizieren Sie die Gleichung bei Bedarf mit -1). Erstellen Sie dann die Dual-LP:
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 unbegrenzt sind.
quelle
Antworten:
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.y y=cTx+c0 c0 y
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.y≥0 c0 c0 x Ax=b x≥0 cTx+c0≥0
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 .c0 x0 c0 −cTx0
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 .x p ≥1 q r=p+t(q−p) q−p≠0 r r≥0
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 .A b n c M A b c n!⋅Mn c0:=n⋅n!⋅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=0 z=−cT z x0 c0
quelle
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+−x− x+ 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.
quelle