Optimierungs- Algorithmen Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen 2
Überblick Lineare Programmierung Dualität Simplex Algorithmus Grundlagen der Polyedertheorie Exakte Lösungsmethoden für ILPs Branch-and-Bound Schnittebenenverfahren Branch-and-Cut Kombinatorische vs. Ganzzahlige Optimierung
Lineare Programmierung Für den Zulässigkeitsbereich P eines Linearen Programms gibt es drei verschiedene Möglichkeiten: P= es existiert keine einzige zulässige Lösung LP ist unlösbar P≠ und inf{ c T x | x P } existiert nicht (z.B. 0 x ≥-1) LP ist lösbar, aber es gibt keine optimale Lösung P≠ und min{ c T x | x P } existiert LP ist lösbar und hat eine endliche Lösung x * mit c T x *=min{ c T x | x P }, x* ist die optimale Lösung
Dualität der Linearen Programmierung Es ist vorteilhaft, Schranken für Lineare Programme angeben zu können Ein Punkt, der (2)-(4) erfüllt, erfüllt auch die Ungleichung: 2(2)+(3) sowie (2)+(4) Wir suchen die besten Schranken: Dualität
Dualität der Linearen Programmierung Primales Programm: Duales Programm:
Dualität der Linearen Programmierung Primales Programm (P): Duales Programm (D): Schwacher Dualitätssatz: Sei x´ein zulässiger Punkt für (P) und y´ zulässig für (D). Dann gilt: y ´ T b ≤ c T x ´
Dualität der Linearen Programmierung Primales Programm (P): Duales Programm (D): Korollar: Ist (P) unbeschränkt, dann ist (D) unlösbar. Sei x´ein zulässiger Punkt für (P) und y´ zulässig für (D). Dann gilt: y ´ T b ≤ c T x ´
Dualität der Linearen Programmierung Primales Programm (P): Duales Programm (D): Starker Dualitätssatz: Sei x* ein zulässiger Punkt für (P) und y* zulässig für (D). Dann gilt: y * T b = c T x * beide Lösungen x* und y* sind optimal
max 5x 1 + 4x 2 + 3x 3 subject to 2x 1 + 3x 2 + x 3 5 4x 1 + x 2 + 2x 3 11 3x 1 + 4x 2 + 2x 3 8 x 1, x 2, x 3 0. Einblick in den Simplex-Algorithmus
Einführung von Schlupf-Variablen um Gleichungen zu erhalten max 5x 1 + 4x 2 + 3x 3 subject to 2x 1 + 3x 2 + x 3 + x 4 = 5 4x 1 + x 2 + 2x 3 + x 5 = 11 3x 1 + 4x 2 + 2x 3 + x 6 = 8 x 1, x 2, x 3, x 4, x 5, x 6 0. Simplex-Algorithmus
Start Zunächst setzen wir x 1 =x 2 =x 3 =0, und schreiben das System um, so dass die Nicht-Null Elemente links stehen; nun können wir direkt die Werte der anderen Variablen ablesen: x 4 =5, x 5 =11, x 6 =8, z=0. z = 5x 1 + 4x 2 + 3x 3 x 4 = 5 - 2x 1 - 3x 2 - x 3 x 5 = x 1 - x 2 - 2x 3 x 6 = 8 - 3x 1 - 4x 2 - 2x 3 Simplex-Algorithmus
Erste Iteration Wir wollen den Wert z erhöhen, mometan ist er 0. Erhöhe z.B. den Wert von x 1. Wie weit können wir erhöhen? z = 5x 1 + 4x 2 + 3x 3 x 4 = 5 - 2x 1 - 3x 2 - x 3 x 5 = x 1 - x 2 - 2x 3 x 6 = 8 - 3x 1 - 4x 2 - 2x 3 x 4 0 5 – 2x 1 0 5 2x 1 x 1 5/2 x 5 0 11 – 4x 1 0 11 4x 1 x 1 11/4 x 6 0 8 – 3x 1 0 8 3x 1 x 1 8/3 Simplex-Algorithmus Wir setzen: x 1 =5/2 x 4 =0
Zweite Iteration Wir wollen den Zielfunktionswert weiter erhöhen. Dies geht momentan nur durch Erhöhung von x 3. z = 25/2 - 7/2x 2 + 1/2x 3 - 1/2x 4 x 1 = 5/2 - 3/2x 2 - 1/2x 3 - 1/2x 4 x 5 = 1 + 5x 2 + 2x 4 x 6 = 1/2 + 1/2x 2 - 1/2x 3 + 3/2x 4 x 1 0 5/2 – 1/2x 3 0 5/2 1/2x 3 x 3 5 x 5 0 x 3 unbeschränkt x 6 0 1/2 – 1/2x 3 0 1/2 1/2x 3 x 3 1 Simplex-Algorithmus
z = x 2 - x 4 - x 6 x 1 = 2 - 2x 2 - 2x 4 + x 6 x 5 = 1 + 5x 2 + 2x 4 x 3 = 1 + x 2 + 3x 4 - 2x 6 Optimal!!! Simplex-Algorithmus Denn: die Koeffizienten des z-Vektors sind alle kleiner gleich 0. Es kann also zu keiner Verbesserung der Zielfunktion kommen.
Graphische Interpretation Max 3x 1 + 2x 2 + 2x 3 Subject to x 1 + x 3 8 x 1 + x 2 7 x 1 + 2x 2 12 x 1, x 2, x 3 0 Simplex-Algorithmus
x1x1 x2x2 x3x3 (0,0,8) (0,6,8) (2,5,6) (0,6,0) (2,5,0) (7,0,1) (7,0,0) Max z = 3x 1 + 2x 2 + 2x 3 z = 0 z = 21 z = 23 Optimal! z = 28 Simplex-Algorithmus
Log started (V8.2.0a1) Tue Apr 8 21:59: Problem name: supply_chain.lp.gz Constraints : Variables : Reduced LP has rows, and variables. Presolve time = sec. Iteration log... Iteration: 0 Infeasibility = Iteration: Infeasibility = Iteration: Infeasibility = Elapsed time = sec. ( iterations) Iteration: Objective = Elapsed time = sec. ( iterations) Iteration: Objective = Removing shift (10). Primal simplex - Optimal: Objective = e+18 Solution time = sec. Iterations = ( ) Typischer Beispiellauf (CPLEX)
Überblick Lineare Programmierung Dualität Simplex Algorithmus Grundlagen der Polyedertheorie Siehe pdf-file