Optimierungsprobleme Häufig in Alltagssituationen anzutreffen (z.b. Kauf eines Gerätes) Optimierungsprobleme (OPs) sind Probleme, die i.a. viele zulässige Lösungen besitzen Jeder Lösung ist ein bestimmter Wert (Zielfunktionswert, Kosten) zugeordnet Optimierungsalgorithmen suchen in der Menge aller zulässigen Lösungen, diejenige mit dem optimalen Wert Heuristiken sind Algorithmen, die irgendeine (möglichst gute) Lösung berechnen Helmar Burkhart Algorithmen und Datenstrukturen
Mathematische Formulierung min 4x 1 +8x 2 +6x 3 ; s.t. x 2 x 3 ; x 1 0:5; x 1 + x 2 + x 3 =1; x 1 = x 3 ; x i 0 i =1; 2; 3 min P 3 i=1 c ix i ; s.t. Ax b; A 0 x = b 0 ; A 00 x b 00 ; x i 0 i =1; 2; 3 Ax b = ( 1) Ax b min c T x; s.t. Ax b; x 0 x 2 R n ;c2 R n ;A2 R m;n ;b2 R m Ax = b () Ax b; Ax b
Mathematische Problemformulierung Entscheidungsvariablen Wieviel CHF soll man investieren? x 0 Wieviele Autos sollen von Typ i produziert werden? y i 2 N Wieviel Gewinn bringt mir Produkt i in Abteilung j ein? z ij 2 Z Soll Objekt i mit auf die Reise genommen werden? x i 2 B (= f0; 1g)
Lineare Optimierungsproblemklassen Lineares Optimierungsproblem opt c T x; s.t. Ax b; x 0 Ganzzahliges Optimierungsproblem opt c T x; s.t. Ax b; x 0; x2 Z B µμ N µμ Z µμ Q µμ R c 2 R n ; b 2 R m ; A; B 2 R m;n Kombinatorisches Optimierungsproblem opt c T x; s.t. Ax b; x 2 B Gemischt-Ganzzahliges Optimierungsproblem Alle Funktionen sind linear opt f(x; y); s.t. Ax + By b; x 2 N;y 0
Lineare Optimierungsprobleme (LP) Minimiere eine lineare Zielfunktion über x 1 ;:::;x n unter lineare Nebenbedinungen durch Wahl der x j 0 m opt c T x; f(x) =c 1 x 1 + c 2 x 2 + :::+ c n x n s.t. Ax b; a i1 x 1 + a i2 x 2 + :::+ a in x n b i i 2f1;:::;mg x 0 x j 0 j 2f1;:::;ng 0 1 0 1 0 1 Eingabe c 1 a 11 ::: a 1n b B C c = @. A A = B @... C 1.. A B C b = @. A a m1 ::: a mn Ausgabe x = 0 B @ x 1. c n x n 1 C A 0mitAx b und f(x) =c T x =minfc T x 0 g b m
Graphische Lösung: Beispiel Unternehmen stellt zwei Güter her, welche mit Hilfe von drei Inputfaktoren (z.b. Maschinenlaufzeiten) produziert werden Produktionskoeffizienten, Deckungsbeiträge pro produzierte Einheit und Maximalkapazitäten für Inputfaktoren sind bekannt Ziel: Maximiere den Gesamtdeckungsbeitrag Produkte Input Faktoren Produkt 1 Produkt 2 Max. Verfügbare Kapazitäten Produktionsfaktor 1 4 2 200 Produktionsfaktor 2 2 4 200 Produktionsfaktor 3 2 2 120 Deckungsbeiträge pro Einheit 150 100
Mathematisches Modell x i Entscheidungsvariable: := Anzahl Mengeneinheiten, die von Produkt i produziert werden sollen Produkte Input Faktoren Produkt 1 Produkt 2 Max. Verfügbare Kapazitäten Produktionsfaktor 1 4 2 200 Produktionsfaktor 2 2 4 200 Produktionsfaktor 3 2 2 120 Deckungsbeiträge pro Einheit 150 100 max 150x 1 +100x 2 ; s.t. 4x 1 +2x 2 200; 2x 1 +4x 2 200; 2x 1 +2x 2 120; x i 0 i =1; 2
Graphische Lösung x 2 100 80 max 150x 1 +100x 2 ; s.t. 4x 1 +2x 2 200; 2x 1 +4x 2 200; 2x 1 +2x 2 120; x i 0 i =1; 2 60 40 20 S x? x? =(x 1 ;x 2 )=(40; 20) f(x? ) = 8000 zulässiger Bereich S 20 40 60 80 100 x 1
Lösungen für zulässigen Bereich S Wie sieht eine Lösung aus? S = ; unzulässiges Problem S 6= ; und beschränkt eindeutige Lösung S 6= ; und unbeschränkt, f(x)! 1 in S keine Lösung S 6= ; und unbeschränkt, f(x) beschränkt in S eindeutige Lösung
Graphische Lösung: Diskussion Bis drei dimensionale Probleme (max. 3 Entscheidungsvariablen) gut darstellbar und vorstellbar In Praxis eher höher dimensionale Probleme Aber... Es gibt schnelle und gute Algorithmen Was können wir lernen von der graphischen Lösung? Lösungen befinden sich auf dem Rand und in einer Ecke Ecke im bestimmt durch Schnitt von n Hyperebenen R n R 2 : Schnitt von Geraden, R 3 : Schnitt von Ebenen Form der Hyperebene bestimmt durch Nebenbedingung a i1 x i1 + :::+ a in x in b i
Graphische Lösung: Diskussion Eine optimale Lösung kann durch einen Extrempunkt (Schnittpunkt von Hyperebenen) charakterisiert werden Dimension Wieviele Extrempunkte im R n gibt es? Wir wählen aus Bedingungen n aus: Test auf lineare Unabhängigkeit der Hyperebenen n + m #Nebenbedingungen Test auf Zulässigkeit des Schnittpunktes Berechnung des Schnittpunktes µμ n + m = O((n + m) n ) >> O(2 n ) n Eindeutig zu viele!!! Schlaue Selektion von Extrempunkten Simplex Verfahren
Simplex Simplex : Konvexe Menge M µμ R n mit n +1Extrempunkten M µμ R n heisst konvex, wenn 8x; y 2 M : f x +(1 )y 0 1g µμ M gilt. Verbindungsstrecke zwischen x und y Konvexe Menge Nicht Konvexe Menge
Top 10 Algorithmen im 20. Jahrhundert 1. 1946: Metropolis Algorithm for Monte Carlo 2. 1947: Simplex Method for Linear Programming 3. 1950: Krylov Subspace Iteration Method 4. 1951: The Decompositional Approach to Matrix Computations 5. 1957: Fortran Optimizing Compiler 6. 1959: QR Algorithm 7. 1962: Quicksort 8. 1965: Fast Fourier Transform 9. 1977: Integer Relation Detection 10. 1987: Fast Multipole Method
Simplex Verfahren für LPs 1947 von George Dantzig vorgestellt Worst Case exponentielle Laufzeit Worst Case Instanzen (Klee-Minty Würfel, 1973) In Praxis sehr schnell Charakteristische Form opt c T x; s.t. Ax b; x 0 Standardform max c T x; s.t. Ax = b; x 0
Überführung in Standardform Nebenbedingungen: Führe Schlupfvariablen für jede Ungleichung i ein a i1 x 1 + :::a in x n b i! a i1 x 1 + :::a in x n + x n+i = b i Entscheidungsvariable: x 1 ;:::;x n ;x n+1 ;:::;x n+m Zielfunktion: Schlupfvariablen falls maximiert wird kann Zielfunktion übernommen werden falls minimiert wird, maximiere das negative der originalen Zielfunktion ( min cx! ( )max cx ) Schlupfvariablen mit Koeffizienten c n+1 ;:::;c n+m =0werden in Zielfunktion integriert: f(x) =c 1 x 1 + :::+ c n x n +0x n+1 + :::+0x n+m
Beispiel Charakteristische Form min 150x 1 100x 2 ; s.t. 4x 1 +2x 2 200; 2x 1 +4x 2 200; 2x 1 +2x 2 120; x i 0 i =1; 2 Standardform max 150x 1 +100x 2 +0x 3 +0x 4 +0x 5 ; s.t. 4x 1 +2x 2 + x 3 =200; 2x 1 +4x 2 + x 4 =200; 2x 1 +2x 2 + x 5 =120; x i 0 i =1; 2;:::;5
Simplex Verfahren (unter Annahme b 0) Löst lineare Optimierungsmodelle in Standardform max c T x; s.t. Ax = b; x 0 Besteht aus 2 Phasen: Phase 1 (Eröffnungsphase) : Ermittlung einer ersten zulässigen Basislösung x (0) Heuristik Phase 2 (Iterationsphase) : Ausgehend von dieser Basislösung erfolgt die Konstruktion einer Folge von zulässigen Basislösungen x (1) ;x (2) ;::: mit der Eigenschaft c T x (i 1) c T x (i) Stopp, wenn optimale zulässige Basislösung x? gefunden
Phase 1 (Eröffnungsphase): Beispiel Ermittlung einer zulässigen Basislösung x (0) Schritt 1: Überführe das gegebene lineare Optimierungsmodell in die Standardform max 150x 1 +100x 2 ; s.t. 4x 1 +2x 2 200; 2x 1 +4x 2 200; 2x 1 +2x 2 120; x i 0 i =1; 2 max 150x 1 +100x 2 +0x 3 +0x 4 +0x 5 ; s.t. 4x 1 +2x 2 + x 3 =200; 2x 1 +4x 2 + x 4 =200; 2x 1 +2x 2 + x 5 =120; x i 0 i =1; 2;:::;5
Simplex Verfahren: Phase 1 (Eröffnungsphase) Schritt 2: Stelle das sogenannte Simplex-Tableau auf und bestimme dann eine zulässige Basislösung Entscheidungsvariablen Schlupfvariablen x 1 x 2 ::: x n x n+1 x n+2 ::: x n+m a 11 a 12 ::: a 1n 1 0 ::: 0 a 21 a 22 ::: a 2n 0 1 ::: 0............ a m1 a m2 ::: a mn 0 0 ::: 1 c 1 c 2 ::: c n 0 0 ::: 0 b 1 b 2. b m 0 rechte Seite Zielfunktionszeile Aktueller Wert der Zielfunktion
Simplex Verfahren: Phase 1 (Eröffnungsphase) Entscheidungsvariablen Schlupfvariablen x 1 x 2 ::: x n x n+1 x n+2 ::: x n+m a 11 a 12 ::: a 1n 1 0 ::: 0 a 21 a 22 ::: a 2n 0 1 ::: 0............ a m1 a m2 ::: a mn 0 0 ::: 1 c 1 c 2 ::: c n 0 0 ::: 0 Zielfunktionszeile Zulässige Startlösung kann wegen b 0 direkt abgelesen werden x (0) und 1 = x (0) 2 = :::= x (0) n =0 x (0) n+1 = b 1 ;:::;x (0) n+m = b m d.h. x (0) =(0;0;:::;0;b 1 ; :::; b m ) 2 R n Nicht-Basisvariable: x (0) 1 ;:::;x (0) n Basisvariable: x (0) n+1;:::;x (0) b 1 b 2. b m 0 rechte Seite Aktueller Wert der Zielfunktion n+m
Phase 1 (Eröffnungsphase): Beispiel max 150x 1 +100x 2 ; s.t. 4x 1 +2x 2 200; 2x 1 +4x 2 200; 2x 1 +2x 2 120; x i 0 i =1; 2 max 150x 1 +100x 2 +0x 3 +0x 4 +0x 5 ; s.t. 4x 1 +2x 2 + x 3 =200; 2x 1 +4x 2 + x 4 =200; 2x 1 +2x 2 + x 5 =120; x i 0 i =1; 2;:::;5 x 1 x 2 x 3 x 4 x 5 4 2 1 0 0 200 2 4 0 1 0 200 2 2 0 0 1 120-150 -100 0 0 0 0 x (0) =(0; 0; 200; 200; 120) Nicht-Basisvariablen: x 1 ;x 2 Basisvariablen: x 3 ;x 4 ;x 5
Iterationsphase: Schritt 1 Man bestimme unter allen Spalten von Nicht-Basisvariablen denjenigen Spaltenindex, dessen zugehöriger Koeffizient in der Zielfunktionszeile negativ und betragsmässig am grössten ist. Um wieviel geht Zielfunktionswert zurück, wenn man diese NBvariable in die Lösung aufnehmen würde (Reduzierte Kosten) Diese Spalte i wird Pivot-Spalte genannt. Falls alle diese zugehörigen Koeffizienten nicht negativ sind, gehe zu Schritt 8. x 1 x 2 x 3 x 4 x 5 Spalten von NB-Variablen: x 1 ;x 2 4 2 1 0 0 200 2 4 0 1 0 200 2 2 0 0 1 120-150 -100 0 0 0 0 Pivotspalte: i =1! x i = x 1
Simplex Verfahren: Phase 2 (Iterationsphase) Von der Basislösung wird eine bessere zulässige Basislösung gesucht, bei der eine Nicht-Basisvariable zu einer Basisvariable und eine Basisvariable zu einer Nicht-Basisvariable wird. Das Simplex-Tableau wird von Iteration zu Iteration derart verändert, dass in jeder Iteration eine zulässige Basislösung ablesbar ist. eine gefundene Basislösung keinen schlechteren Zielfunktionswert hat. festgestellt werden kann, ob die gefundene zulässige Basislösung eine Optimallösung ist.
Iterationsphase: Schritt 2, 3, 4 Identifiziere alle positiven Elemente in der Pivotspalte. Berechne Quotienten aus der zu der Zeile entsprechenden rechten Seite und dem Element, d.h. b q =a qi Quotient gibt maximalen Wert an, so das q-te Nebenbedingung genau erfüllt ist Zulässigkeit der Lösung gesichert Bestimme aus allen Quotienten denjenigen mit dem kleinsten Wert und identifiziere entsprechende Zeile j. Diese Zeile wird auch Pivot-Zeile genannt (Restriktion als erste wirksam). x 1 x 2 x 3 x 4 x 5 Schritt 2: 4, 2, 2 4 2 1 0 0 200 Schritt 3: 200/4 = 50, 2 4 0 1 0 200 200/2 = 100, 2 2 0 0 1 120 120/2 = 60-150 -100 0 0 0 0 Schritt 4: Pivot-Zeile j = 1 a qi
Iterationsphase: Schritt 5 Identifiziere diejenige bisherige Basisvariable in der Pivot-Zeile, die den Koeffizienten 1 hat. Dies sei Variable. x 1 x 2 x 3 x 4 x 5 Schritt 2: 4, 2, 2 4 2 1 0 0 200 Schritt 3: 200/4 = 50, 2 4 0 1 0 200 200/2 = 100, 2 2 0 0 1 120 120/2 = 60 Schritt 4: Pivot-Zeile j = 1 Schritt 5: x k = x 3-150 -100 0 0 0 0 x k Vorgehen von Schritt 1 bis Schritt 5 nennt man Pivot-Suche (Pivot- Zeile j, Pivot-Spalte i, Pivot-Element a ji )
Graphische Interpretation: Pivot-Suche x 2 100 80 max 150x 1 +100x 2 ; s.t. 4x 1 +2x 2 200; 2x 1 +4x 2 200; 2x 1 +2x 2 120; x i 0 i =1; 2 60 40 20 S x? x? =(x 1 ;x 2 )=(40; 20) f(x? ) = 8000 zulässiger Bereich S 20 40 60 80 100 x 1
Iterationsphase: Schritt 6 (Austauschschritt) Setze die bisherige Basisvariable x k =0. x k wird damit zu einer Nicht-Basisvariablen. Berechne Werte sämtlicher Basisvariablen inklusive neuer Basisvariable x i, mittels elementarer Zeilenumformungen innerhalb des Simplex-Tableau x 1 x 2 x 4 x 5 x 3 :2 4 2 1 0 0 200 2 4 0 1 0 200 2 2 0 0 1 120-150 -100 0 0 0 0 :2 37:5 :4 x 1 x 2 x 3 x 4 x 5 1 1/2 1/4 0 0 50 0 3-1/2 1 0 100 0 1-1/2 0 1 20 0-25 37.5 0 0 7500
Austauschschritt: Pivot-Spalte 1, 1. Gleichung 1. Operation: I. / 2, II. I. I. II. III. IV. I. II. III. IV. x 1 x 2 x 4 x 5 x 3 x 1 x 2 x 3 x 4 x 5 4 2 1 0 0 200 4 2 1 0 0 200 2 4 0 1 0 200 0 3-1/2 1 0 100 2 2 0 0 1 120 2 2 0 0 1 120-150 -100 0 0 0 0-150 -100 0 0 0 0 3. Operation: I. * 37.5, IV. + I. 2. Operation: I. / 2, III. I. 4. Operation: I. / 4 x 3 x 1 x 2 x 3 x 4 x 5 4 2 1 0 0 200 1 1/2 1/4 0 0 50 x 1 x 2 x 4 x 5 0 3-1/2 1 0 100 0 3-1/2 1 0 100 0 1-1/2 0 1 20 0 1-1/2 0 1 20-150 -100 0 0 0 0 0-25 37.5 0 0 7500
Iterationsphase: Schritt 7 Gehe mit dem erhaltenen Simplex-Tableau zu Schritt 1 (Neue Iteration) x 1 x 2 x 3 x 4 x 5 Schritt 1: i =2! x 2 soll 1 1/2 1/4 0 0 50 Basisvariable werden 0 3-1/2 1 0 100 Schritt 5: k =5! x 5 soll 0 1-1/2 0 1 20 Nicht-Basisvariable werden 0-25 37.5 0 0 7500 Schritt 6: x 1 x 2 x 3 x 4 x 5 1 0 1/2 0-1/2 40 0 0 1 1-3 40 0 1-1/2 0 1 20 0 0 25 0 25 8000
Iterationsphase: Schritt 8 STOP: Optimallösung gefunden. Jede Basisvariable wird mit dem entsprechendem Wert der rechten Seite gleichgesetzt. Alle übrigen Variablen sind 0. Den Optimalwert kann man rechts unten im Tableau ablesen. x 1 x 2 x 3 x 4 x 5 1 0 ½ 0-1/2 40 x (2) =(40; 20; 0; 40; 0) 0 0 1 1-3 40 0 1-1/2 0 1 20 0 0 25 0 25 8000 f(x (2) )=8000 http://www.zweigmedia.com/realworld/simplex.html maximize p = 150x+100y subject to 4x + 2y <= 200, 2x + 4y <= 200, 2x + 2y <= 120
Bemerkungen: Simplex Verfahren Treten im optimalen Tableau Zielfunktionskoeffizienten der Nicht- Basisvariablen auf, welche 0 sind, bedeutet dies, dass diese Variablen in die Basis aufgenommen werden können, ohne die Zielfunktion zu verbessern. Es existieren mehrere optimale Lösungen. Es gibt Möglichkeiten auch lineare Optimie ungsprobleme mit negativer rechter Seite ( 9j : b j < 0 ) mit dem Simplex Verfahren zu lösen Pivot-Suche wichtiger Prozess für Konvergenz Simplex Verfahren nützlich wenn Lösung bereits für ähnliches Problem bekannt Es gibt alternative Verfahren (Innere-Punkte Verfahren)