Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 54: 54 [54,54]
3 Lineare Optimierung Zwei typische Schreibweisen für ein Lineares Programm (LP) LP in Standardform min s.t. c T x Ax = b x 0 LP in kanonischer Form max s.t. c T x Ax b x 0 Wenn nicht anders erwähnt, dann c R n, A R m n, b R m. x 0 und Ax b sind jeweils elementweise zu vestehen, also x 0 : x R n + = {x R n : x i 0, i = 1,... n} Egal ob man minimieren oder maximieren will, Gleichungen oder Ungleichungen hat, Variablen mit oder ohne Nichtnegativitätsbedingungen hat, man kann jedes LP in so eine Form bringen. 55: 55 [55,55]
Umformen von LPs maximieren minimieren: max c T x s.t. Ax = b, x 0 min( c) T x s.t. Ax = b, x 0 Gleichungen Ungleichungen: [ A Ax = b A ] [ x b b Ungleichungen Gleichungen: durch Schlupfvariablen s 0 max s.t. c T x Ax b x 0 max c T x [ ] x s.t. [A, I ] = b s x 0, s 0 ] [I Identität] Statt jeder freien Variable x i R zwei vorzeichenbeschränkte: x + i 0 und x i 0 mit x i = x + i x i 56: 56 [56,56]
Kleines Beispiel zur Illustration: Mozart-Problem Maximiere den Gewinn bei Produktion von Mozart-Kugeln und -Talern: Marzipan Nougat Edelherb Gewinn Pro Kugel: 2 Teile 1 Teil 1 Teil 3 Euro Pro Taler: 1 Teil 1 Teil 2 Teile 2 Euro verfügbar: 10 Teile 6 Teile 9 Teile Variablen: x K... Anzahl Kugeln x T... Anzahl Taler max 3x K + 2x T s.t. 2x K + 1x T 10 1x K + 1x T 6 1x K + 2x T 9 x K 0, x T 0 min [ 3, 2, 0, 0, 0]x 2 1 1 0 0 s.t. 1 1 0 1 0 x = 1 2 0 0 1 x 0 [x R 5 +] 10 6 9 57: 57 [57,57]
Anwendung: Tschebyscheff-Approximation z.b. in der Filtersynthese (hier stark vereinfacht): Eine gewünschte Impulsantwort (geg. Funktion) h : [0, 1] R soll möglichst gut durch gewichtete Addition verfügbarer Impulsantworten h i : [0, 1] R, i = 1,..., n dargestellt werden. Modellierung: h(t) n i=1 x ih i (t) für gegebene t j [0, 1], Variable x i R, i = 1,..., n als Gewicht von h i, Diskretisierung von [0, 1] z.b. in Schritte t j := j 1 m 1, j = 1,..., m min s [max. Abweichung über alle t j ] s.t. 58: 58 [58,58] s h(t j ) n i=1 x ih i (t j ) s, j = 1,..., m, x R n, s R h(t j ) und h i (t j ) sind mit Diskretisierung t j gegebene Konstanten! Mathematisches Problem: Minimiere Ax b über x R n [ d := max i=1,...,m d i Unendlich-Norm für d R m ] min s s.t. 1s Ax b 1s 1 = [1, 1,..., 1] T x R n, s R
Ähnlich: 1-Norm Minimierung Mathematisches Problem: Minimiere Ax b 1 über x R n [ d 1 := m i=1 d i 1-/Manhattan-Norm für d R m ] Variable s i d i s i d i s i (i {1,..., m}) Formulierung als LP: min s.t. 1 T s I s Ax b I s x R n, s R m Im Gegensatz zur -Norm ist es bei der 1-Norm egal, wo die Abweichung groß ist, solange die Summe klein bleibt. Ausreißer fallen weniger ins Gewicht (aber es gibt meist auch ein paar Koordinaten mit starker Abweichung). 59: 59 [59,59]
Geometrische LP-Interpretation: WH Skalarprodukt c T x c T x = c x cos α mit α Winkel zw. c und x. Für c = 1 ist (wie im Bild) c T x die Länge der Projektion von x auf die Gerade {γc : γ R} {x : c T x γ} ist der Halbraum aller Punkte, deren Projektion auf c kleiner gleich γ ist. c ist Gradient der linearen Fkt. c T x (zeigt in Richtung steilster Anstieg) Für A = a T 1. a T m x α c T x T c x< γ T c x= γ ist Zeile j von Ax b gerade a T j x b j T c c x> γ 60: 60 [60,60]
Geometrische Interpretation: am Mozart-Problem Wegen x K 0 x K 0 ist [ max 3 2 ] x c T 2 1 a1 T 1 1 [ ] s.t. 1 2 xk a2 T x T a3 T 1 0 0 1 wieder das Mozart-Problem. 10 6 9 0 0 e T 1 e T 2 Definition Ein Polyeder ist der Schnitt endlich vieler Halbräume. Die zulässige Menge jedes LPs ist also ein Polyeder. e 1 x T a 2 a 1 e 2 c a 3 x K 61: 61 [61,61]
Geometrische Interpretation: Optimallösung Wegen x K 0 x K 0 ist [ max 3 2 ] x c T 2 1 a1 T 1 1 [ ] s.t. 1 2 xk a2 T x T a3 T 62: 62 [62,62] 1 0 0 1 wieder das Mozart-Problem. 10 6 9 0 0 e T 1 e T 2 Offensichtlich ist eine Ecke des Polyeders eine Optimallösung, sie erfüllt Dimension viele Ungleichungen mit Gleichheit, hier: a1 T [ ] [ ] [ ] 2 1 xk 10 a2 T = x 1 1 x T 6 K = 4, x T = 2 Ecken sind besonders wichtig! Interpretation in Standardform? e 1 x T a 2 a 1 e 2 c a 3 x K
Interpretation einer Ecke in Standardform (Standardform: nur Gleichungsnebenbed. durch Schlupfvariablen) max s.t. [ ] 3 2 0 0 0 x 2 1 1 0 0 10 1 1 0 1 0 x = 6 1 2 0 0 1 9 x K 0, x T 0, s 1 0, s 2 0, s 3 0 In dieser Darstellung ist n = 5, m = 3. Jeder Ungleichung ist genau eine Schlupfvariable zugeordnet! (s i Zeile i, x K für x K 0 und x T für x T 0) Wegen der m Gleichungen hat das Polyeder Dimension n m. Jede Ecke erfüllt n m weitere Ungleichungen als Gleichungen ( Schlupfvariablen sind 0), die eindeutig diesen Punkt festlegen, der sich ergebende Wert der anderen Schlupfvariablen (= Abstand zu Ungleichungen) muss dabei nichtnegativ sein (sonst unzul. ). e 1 x T a 2 a 1 e 2 c a 3 x K 63: 63 [63,63]
Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 64: 64 [64,64]
3.2 Der Simplex-Algorithmus (für Standardform) Gegeben A R m n, b R m, c R n, mit Rang A = m, bestimme 65: 65 [65,65] min c T x s.t. Ax = b, x 0 Idee: Gehe von der aktuellen Ecke zu einer benachbarten besseren. Notation: Für B {1,..., n} m sei A B := [A,B(1),..., A,B(m) ] R m m. B {1,..., n} m heißt Basis, falls A B regulär ist. Wir fassen eine Basis B auch als Menge von Spaltenindices auf, definieren eine dazupassende Nichtbasis N ({1,..., n} \ B) n m mit B N = {1,..., n}, dann teilt sich das System in Ax = b A B x B + A N x N = b x B = A 1 B (b A Nx N ). Jede Wahl x N R n m erzwingt ein eindeutiges x B zu einer gemeinsamen Lösung x von Ax = b. Gilt für x N = 0, dass x B = A 1 B b 0, heißt die Basis zulässig. Die Nichtbasisvariablen x i, i N, werden auf 0 gesetzt, die Basisvariablen x i, i B, durch x B = A 1 B b bestimmt.
Eine benachbarte bessere Ecke finden 66: 66 [66,66] B sei nun eine zulässige Basis, also 0 x B := A 1 B (b A N x N ) für x N := 0 Benachbarte Ecke: Eine Gleichung x i = 0 mit i N aufgeben und x i vergrößern bis die nächste Ungleichung erreicht wird. Veränderung der Zielfunktion abhängig von x N : e1 x T a1 a 2 x K ++ c T x = cb T x B + cn T x N = cb T A 1 B b + (c N A T N A T B c B) }{{} =: z N e 2 c T xn Die reduzierten Kosten z N zeigen die Veränderung abh. von x N an. Ist z N 0 Ecke nicht verbesserbar, Optimallösung gefunden. Sonst wähle im Pricing-Schritt ein î N mit zî < 0 xî ist die (in die Basis) eintretende Variable und wird vergrößert. a3 x K
Zur Zulässigkeit muss x B = A 1 B (b A îxî) 0 bleiben, [Aî Spalte î] mit w := A 1 B A î muss wxî x B erfüllt sein. Ist w 0 darf xî beliebig groß werden Problem unbeschränkt. Sonst wähle im Ratio-Test { } xb(j) ĵ Argmin j=1,...,m : w j > 0 w j x B(ĵ) ist die (aus der Basis) austretende Variable. Sie wird nun im Basisaustauschschritt durch xî ersetzt, N N \ {î} {B(ĵ)}, B(ĵ) î, und der Algorithmus wird von dieser neuen Ecke aus fortgesetzt. 67: 67 [67,67]
Das (primale revidierte) Simplex-Verfahren Input: zulässige Basis B, x B = A 1 B b 0 1. BTRAN: Bestimme ȳ := A T B c B durch Lösen von A T B y = c B. 2. PRICE: z N := c N A T Nȳ. Ist z N 0, STOP (Optimallösung), sonst wähle î N mit zî < 0. 3. FTRAN: Bestimme w := A 1 B A î durch Lösen von A B w = Aî. 4. RATIO: Ist w 0, STOP (Problem { unbeschränkt), } sonst wähle xb(j) ĵ Argmin j=1,...,m w j : w j > 0, ξ := x B(ĵ) wĵ 5. Update: x B := x B ξ w, xî := ξ, N := (N \ {î}) {B(ĵ)}, B(ĵ) := î, GOTO 1. (Lösung der Glgssysteme nutzt sparsity etc., nicht invertieren!) Das Paar (ĵ, î) wird auch Pivot-Element genannt. 68: 68 [68,68]
Endlichkeit und Kreisen In jeder Iteration mit ξ > 0 wird der Zielfunktionswert strikt besser, und der Algorithmus besucht diese Ecke nie wieder. 69: 69 [69,69] Ist ξ = 0, wechselt man nur zu einer anderen Basisdarstellung derselben Ecke (sie liegt auf mehr als n m Ungleichungen). Bei ungünstiger Wahl in Pricing und Ratio-Test wird die gleiche Basis später wieder besucht der Algorithmus kreist. Mit den Auswahlregeln von Bland (wähle aus den erlaubten Variablen jeweils die mit kleinstem Index) wird jede Basis höchstens einmal besucht und der Algorithmus endet nach endlich vielen Iterationen. (In der Praxis nimmt man andere Auswahlregeln und nutzt Bland nur, wenn Kreisen beobachtet wird.) Hat ein LP zwei unterschiedliche Basen, die den gleichen Punkt beschreiben, nennt man das LP und derartige Basen degeneriert oder entartet. Für entartete LPs kann der Simplex-Algorithmus sehr langsam sein, dann sind Innere-Punkte-Verfahren (s. dort) meist besser.
Finden einer zulässigen Ausgangsbasis Die 2-Phasen-Methode Löse in Phase 1 das Hilfsproblem (o.b.d.a. b 0) zul. Anfangs-Basis: die Spalten von s min 1 T s Ist Optimalwert=0 zul. Basis des Originalproblems gefunden, löse dieses in Phase s.t. Ax + Is = b x 0, s 0 2. Liefert überprüfbaren Nachweis (Zertifikat) für (Un-)Zulässigkeit! Die Big-M Methode (o.b.d.a. b 0) min s.t. c T x + M1 T s Ax + Is = b x 0, s 0 zul. Basis: die Spalten von s Ist M > 0 groß genug, werden die s i = 0. Vorteil: sucht gleich gute Basis Nachteil: Wie groß muss M sein? 70: 70 [70,70] In Standard-Software muss man sich darum nicht kümmern!
Mit dem Simplex-Algorithmus zeigt man Satz (Hauptsatz der Linearen Optimierung) Hat ein LP in Standardform einen endlichen Optimalwert, so wird dieser auch in einer Ecke angenommen. 71: 71 [71,71]
Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Anwendung: Spieltheorie Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 72: 72 [72,72]
3.3 Dualität Mit jedem konvexen Minimierungsproblem löst man automatisch ein verwandtes konvexes Maximierungsproblem, das als die Bestimmung einer besten Schranke für den Optimalwert des Originalproblems interpretiert werden kann. Die duale Optimallösung (wenn sie existiert) gibt wichtige Zusatzinformation über das Originalproblem. Für Lineare Optimierung ist das besonders einfach und anschaulich. 73: 73 [73,73]
Untere Schranken, algebraisch 74: 74 [74,74] Eine Ungleichung a T x α heißt gültig für ein Optimierungsproblem mit zulässiger Menge X, wenn sie für alle x X erfüllt ist. a T Betrachte X := {x : Ax b} mit A = 1.. Nichtneg. Linearkombination der Zeilen Ax b und r.s. verkleinern a T m a T 1 x b 1 y 1 ( 0). amx T b m y m ( 0) 0 T x 1 η( 0) : (y T A)x y T b η [ x X ] liefert eine gültige Ungleichung für X (und man erhält alle so!). Für ein ȳ 0 mit A T ȳ = c folgt min{c T x : Ax b} b T ȳ. Die größte untere Schranke? max{b T y : A T y = c, y 0}
Das Duale in Normalform Betrachte min c T x s.t. Ax = b, x 0. Erlaubte Linearkombination der Zeilen Ax = b und Ix 0 a T 1 x = b 1 y 1 ( R). amx T = b m y m ( R) e1 T x 0 z 1( 0). en T x 0 z n ( 0) : (y T A + z T I )x y T b Die beste untere Schranke liefert das Duale LP in Normalform: max b T y max b T y s.t. A T y + z = c y R m, z 0 s.t. A T y c y R m, 75: 75 [75,75] y und z sind die Dualvariablen.
Dualisierungsregeln Nach dem gleichen Muster ergibt sich min c T x max b T y Ax b y 0 Ax b y 0 Ax = b y frei x 0 A T y c x 0 A T y c x frei A T y = c Insbesondere ist das Duale des Dualen LPs wieder das Primale LP. 76: 76 [76,76]
Mozart: das Duale geometrisch (P M ) (D M ) A = 77: 77 [77,77] 2 1 1 1 1 2 [ ] 3 max s.t. c T x Ax b x 0 min b T y s.t. A T y c y 0 e1, b =, 10 6 9 c = 2 1 ȳ = 0 A T ȳ = 2 [ 4 5 x T a 2 a 1 e 2 ] c, b T ȳ = 28 c a 1+ 2a 3 a 3 x K
Mozart: das Duale optimal (P M ) max s.t. c T x Ax b x 0 min b T y (D M ) s.t. A T y c a 2 y 0 a 1+a 2 = c A = 2 1 1 1, b = 10 e1 6, a3 1 2 9 [ ] 3 c = 2 e2 1 [ ] [ ȳ = 1 3 4 A T ȳ = = c, b 2 T ȳ = 16, x = 2 0 78: 78 [78,78] x T a 1 ] x K
Wo ist das Duale im Simplex-Algorithmus? Input: zulässige Basis B, x B = A 1 B b 1. BTRAN: Bestimme ȳ := A T B c B durch Lösen von A T B y = c B. 2. PRICE: z N := c N A T Nȳ, ist z N 0, STOP (Optimallösung), sonst wähle î N mit zî < 0.. (P) 79: 79 [79,79] min c T x s.t. [A B, A N ] x 0 [ xb x N ] =b (D) max b [ T y A T s.t. B A T N ] [ zb y + y R m, z 0 1. Schritt: Setze z B = 0 und löse 1. duale Block-Zeile ȳ 2. Schritt: Bestimme z N aus der 2. dualen Block-Zeile Ist die duale Lösung zulässig ( z N 0), ergibt das die Schranke z N ] [ cb = c N min x X ct x ȳ T b = c T B A 1 B b = c B x B = c T x [ OL] Beachte: PRICE sucht einfach ein dual unzulässiges z i mit i N! ]
(D) max b T y s.t. Das duale Simplex-Verfahren [ A T B A T N ] y + [ zb z N ] = [ cb c N ], y R m, z 0 Dual zulässige Basis: z B = 0, y = A T B (c B z B ), z N = c N A T N y 0 Kostenänderung in Abh. von z B : y T b = cb T c B zb T A 1 B }{{ b } =: x B Input: dual zulässige Basis B, ȳ = A T B c b, z N = c N A T Nȳ 0 1. FTRAN: Bestimme x B := A 1 B b durch Lösen von A Bx B = b. 2. PRICE: Ist x B 0, STOP (Optimallösung), sonst wähle ĵ {1,..., m} mit x B(ĵ) < 0. 3. BTRAN: Bestimme w := A T ĵ und berechne ω N := A T N w B 4. RATIO: Ist ω N 0 STOP (Duales unbeschränkt), sonst wähle î Argmin i N { z i ω i : ω i > 0}, ζ := z î ωî 5. Update: ȳ := ȳ ζ w, z N := z N ζ ω, z B(ĵ) := ζ N := (N \ {î}) {B(ĵ)}, B(ĵ) := î, GOTO 1. 80: 80 [80,80]
81: 81 [81,81] (P) min s.t. Schwache und Starke Dualität c T x Ax = b x 0 (D) max s.t. b T y A T y + z = c y R m, z 0 Ist x primal zulässig und (y, z) dual zulässig, dann gilt c T x b T y = (A T y + z) T x b T y = (Ax b) T y + z T x = z T x 0 Schwache Dualität: Der Wert jeder zulässigen Lösung beschränkt den Optimalwert des jeweils Dualen. [gilt immer!] Ist ein LP unbeschränkt, ist dessen Duales unzulässig. Dualitätslücke: Differenz aus primalem und dualem Optimalwert. Starke Dualität: Primaler und dualer Optimalwert sind gleich, (beide werden angenommen). [gilt i.a. nicht für Konv. Opt.] Satz (Starke Dualität in der Linearen Optimierung) Hat ein LP einen endlichen Optimalwert, so wird dieser sowohl primal als auch dual angenommen. Beweis: Simplex-Alg. mit Auswahlregeln von Bland.
Es können beide unzulässig sein! (P u ) max x 1 s.t. x 1 x 2 1 x 1 + x 2 0 x 1 0, x 2 0 (D u ) (P u ) Es kann nicht x 2 1 + x 1 und x 2 x 1 sein. (D u ) Es kann nicht y 1 1 + y 2 und y 1 y 2 sein. max y 1 s.t. y 1 y 2 1 y 1 + y 2 0 y 1 0, y 2 0 82: 82 [82,82]
Anwendung: Spieltheorie 2-Personen Matrix-Spiel: Für eine gegebene Auszahlungsmatrix M R m n wählt Spieler 1 (S1) eine Zeile i und Spieler 2 (S2) eine Spalte j. Spieler 1 zahlt an Spieler 2 den Betrag M ij. 83: 83 [83,83] Wenn S2 weiß, dass S1 Zeile i wählt, wählt S2 max j=1,...,n (M T e i ) j. S1 bestimmt eine optimale Wahrscheinlichkeits-Verteilung für eine zufällige Zeilenwahl, um nicht so leicht voraussagbar zu sein: min max j=1,...,n (M T min s x) j s.t. 1 T s.t. s (M x = 1 (P 1 ) T x) j j = 1,..., n 1 x 0 T x = 1 x 0, s R S2 tut das gleiche für sich max min i=1,...,m (My) i s.t. 1 T y = 1 y 0 (P 2 ) max t s.t. t (My) j i = 1,..., m 1 T y = 1 y 0, t R (P 2 ) ist das Duale zu (P 1 ), beide sind zul., also ist v(p 1 ) = v(p 2 ). Man muss die Strategie des Gegners gar nicht kennen!
Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 84: 84 [84,84]
85: 85 [85,85] (P) min s.t. c T x Ax = b x 0 Komplementarität (D) max s.t. b T y A T y + z = c y R m, z 0 c T x b T y = z T x 0 gilt für bel. primal und dual zul. Lösungen. Satz (vom komplementären Schlupf) Primal und dual zulässige Lösungen x und (ȳ, z) sind genau dann optimal, wenn x i z i = 0 für i = 1,..., n. Eine Ungleichung heißt aktiv in einem Punkt, wenn sie in dem Punkt mit Gleichheit erfüllt ist, sonst nicht aktiv oder inaktiv. Folgerungen: Ist in einer OL eine Variable in x oder z > 0, ist deren duale Ungleichung in jeder OL des jeweiligen dualen aktiv! Ist in einer OL eine Unglg. des LPs inaktiv, ist deren Dualvariable in jeder OL des jeweiligen dualen gleich Null! Tatsächlich gibt die Größe der Dualvariablen wesentliche Information über den Einfluss der Unglg. auf den Optimalwert...
e 1 Geometrische Interpretation der Komplementarität x T e 2 a 2 a 1 (P M ) a +a =c 1 2 a 3 max s.t. x K c T x Ax b x 0 A = 2 1 1 1 1 2 (D M ) min s.t., b = b T y A T y c y 0 10 6 9 [ ] 3, c = 2 Inaktive Ungleichungen können nicht zur besten Schranke beitragen, die aktiven Restr. halten die OL. (Gleichungen sind immer aktiv!) y j a j (bzw. z i ) ist Kraftanteil von Restriktion i im Kräftegleichgewicht. Der Gradient der Zielfunktion liegt im Kegel der Gradienten der aktiven Restriktionen. (Die Vorzeichen sind je nach Richtungen anzupassen!) 86: 86 [86,86]
Sensitivitätsanalyse Wie sensibel reagiert die OL auf Änderungen in welchen Daten? (P) min s.t. c T x Ax = b x 0 (D) max s.t. b T y A T y + z = c y R m, z 0 Wie weit ist b veränderbar bei gleicher optimaler Basis B? x B = A 1 B b 0, y = A T B c B, z N = c N A T N y 0 b(t) := b + t b erhält duale Zul. für t R, primale aber nur wenn x B (t) = xb +t A 1 B }{{ b 0 max } [x B ] i [ x B ] i >0 [ x B ] i t max =: x B Für diese t ist der Optimalwert = b T y + t b T y (Kompl.!), sonst ist dieser Wert auf jeden Fall eine untere Schranke. 87: 87 [87,87] [x B ] i [ x B ] i <0 [ x B ] i Für b = e j beziffert yj die marginalen Kosten der Veränderung, bei Ressourcennebenbed. heißen die yj oft Schattenpreise.
Sensitivitätsanalyse für die Kostenkoeffizienten Wie weit ist c veränderbar bei gleicher optimaler Basis B? x B = A 1 B b 0, y = A T B c B, z N = c N A T N y 0 c(t) := c + t c erhält primale Zul. für t R, duale aber nur wenn z N (t) = zn + t ( c N A T N A T B c B) 0 }{{} =: z N max [ z N ] i >0 [z N ] i [ z N ] i t max [ z N ] i <0 [z N ] i [ z N ] i Für diese t ist der Optimalwert = c T x + t c T x (Kompl.), sonst ist dieser Wert eine obere Schranke. 88: 88 [88,88]
Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 89: 89 [89,89]
3.5 Spaltengenerierung Was tun, wenn es zu viele Variablen gibt um das LP aufzustellen? Das Simpex-Verfahren benötigt je Iteration nur die Basis-Variablen (x N = 0!), solange eine verbessernde Nichtbasis-Spalte in PRICE erzeugt werden kann. Das nutzt die Spaltengenerierung. Am Beispiel: Zuschnittproblem: Aus möglichst wenigen Metern von Standardblechrollen der Breite (b 0 = 1000mm) sollen kleinere Breiten b j (in mm) mit Gesamtlänge h j, j = 1,..., m geschnitten werden. 90: 90 [90,90]
Modellierung des Zuschnittproblems 91: 91 [91,91] Daten: Länge h j der Breite b j N (j = 1,..., m) aus Breite b 0 Modell: Schnittmuster s N m 0 enthält die Breite b j genau s j mal. { Menge der zul. Schnittmuster: S = s N m 0 : } m j=0 s jb j b 0 Variable x s gibt die Länge an, mit der s S geschnitten wird. [sx s ] j ist der Beitrag von Schnittmuster s zum Bedarf h j. min s S x s max h T y (P S ) s.t. s S sx s h (D S ) s.t. s T y 1 s S x 0 y 0 sucht die minimal notwendige Gesamtlänge um alle h j zu erfüllen. Schwierigkeit: S ist riesig! Idee: Starte mit Ŝ = {e j : j = 1,..., m}, löse (PŜ) ŷ, bestimme, wie in PRICE, s S mit kleinsten red. Kosten s Argmin s S ẑ }{{} s := 1 s T ŷ setze Ŝ := Ŝ { s}, iteriere. Pricingproblem
Das Pricingproblem des Zuschnittproblems Für ŷ 0, b j N (j = 0,..., m), bestimme s Argmin s S {1 s T ŷ} 92: 92 [92,92] max ŷ T s s.t. b T s b 0, s N m 0 Dieses ganzzahlige Optimierungsproblem heißt Rucksackproblem. Falls b 0 nicht zu groß, gut rekursiv lösbar (dynamic programming). Die beste Füllung bis Kapazität b mit Objekten 1,..., k hat den Wert k k F ( b, k) := max ŷ j s j : b j s j b, s j N 0 für b = 0,..., b 0, k = 0,..., m, j=1 j=1 wobei F (0, 0) := 0 und F ( b, k) := für ( b) N, k = 0,..., m. Nun gilt F ( b, k) = max { } b = 1,..., b F ( b, k 1), F ( b b k, k) + ŷ k für 0, k = 1,..., m. (Entweder k nicht verwenden oder k einmal verwenden und Rest bestmöglich füllen)
Beispiel Rucksackproblem b 0 = 10, b 1 = 3, b 2 = 5, b 3 = 6, ŷ 1 = 2, ŷ 2 = 4, ŷ 3 = 5 F ( b, k) = max { F ( b, k 1), F ( b b k, } b = 1,..., b k) + ŷ k für 0, k = 1,..., m. b F ( b, 0) F ( b, 1) F ( b, 2) F ( b, 3) 10 0 6(1) 8 (2) 8 (2) 9 0 6(1) 6 (1) 7 (3) 8 0 4(1) 6 (2) 6 (2) 7 0 4(1) 4 (1) 5 (3) 6 0 4(1) 4 (1) 5 (3) 5 0 2(1) 4 (2) 4 (2) 4 0 2(1) 2 (1) 2 (1) 3 0 2(1) 2 (1) 2 (1) 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 Rekonstruktion der Lösung durch Objektindices. 93: 93 [93,93]
Zusammenfassung Spaltengenerierung Zuschnittproblem 94: 94 [94,94] Daten: Länge h j der Breite b j (j = 1,..., m) aus Breite b 0 0. Schritt: Ŝ = {e j : j = 1,..., m} (pro j: Breite j einmal) 1. Schritt Ermittle OLen ˆx, ŷ von (PŜ) min s.t. s Ŝ x s s Ŝ sx s h x 0 (DŜ) max h T y s.t. s T y 1 s Ŝ y 0 2. Schritt: Löse das Pricingprobelm als Rucksack max (ŷ ) T s s.t. b T s b 0, s N m 0 s 3. Schritt: Ist 1 s T ŷ 0 (oder beinahe) STOP (gut genug) sonst Ŝ := Ŝ { s}, GOTO 1. (auch Entfernen ungebrauchter Muster möglich) Bemerkungen zur Praxis: Anfangsmenge Ŝ muss Zulässigkeit und endliche OL garantieren Verwendet m verschiedene Schnittmuster (# Basisvar.). Oft zu viele! Längen ˆx S nicht ganzzahlig, oft wenige lange, einige sehr kurze Anfangs gute Verbesserung, dann SEHR langsam (tailing off effect)
Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 95: 95 [95,95]
3.6 Schnittebenenverfahren Gleiche Idee, wenn es zu viele Ungleichungen a T j x b j, j I gibt: 96: 96 [96,96] 0. Schritt: Wähle Î I, die endliche OL garantiert 1. Schritt Ermittle OLen ˆx, ŷ von (PÎ) min max ct x s.t. aj T (DÎ) s.t. x b j j Î j Î b jy j j Î a jy j c y 0 2. Schritt: Löse das Separierungsproblem: Finde eine (maximal) verletzte Ungleichung j Argmax j I {b j a T j ˆx } 3. Schritt: Ist b j a T j ˆx 0 (oder beinahe) STOP (gut genug) sonst Î := Î { j}, GOTO 1. (auch Entfernen inaktiver Ungleichungen möglich) Bemerkungen: Schnittebenenvefahren = Spaltengenerierung im Dualen gute Erfolge in kombinatorischer/ganzz. Optimierung Eher ungünstig: Linearisierung konvexer Nebenbedingungen Je nach separierter Unglg.-Klasse starker tailing off effect
Konvexe Nebenbedingungen mit Schnittebenen 1. 2. 3. 4. Problem: Schleifende Schnitte numerisch ungünstig, ungenau 97: 97 [97,97]
Inhalt Lineare Optimierung Standardform und kanonische Form Der Simplex-Algorithmus Dualität Komplementarität und Sensitivitätsanalyse Spaltengenerierung Schnittebenenverfahren Welchen Simplex wann? 98: 98 [98,98]
3.7 Wann primalen, wann dualen Simplex verwenden? Für ein festes LP: Für viele LPs aus der Praxis scheint der duale Simplex etwas schneller zu sein (vermutlich weil viele LPs nach ähnlichen Denkmustern erstellt werden). Innere-Punkte-Verfahren (s. später) sind bei großen Instanzen oft schneller und weniger anfällig bzgl. Degeneriertheit, aber ein Test lohnt sich. Spaltengenerierung: Nach Einfügen von Variablen bleibt die primale Basis zulässig (die alte Duale Lösung nicht), also setzt man mit dem primalen Simplex direkt fort! (Innere-Punkte-Verfahren sind dafür ungeeignet) Schnittebenen-Verfahren: Nach Einfügen einer Schnittebene bleibt die duale Basis zulässig (die alte primale Lösung nicht), also setzt man mit dem dualen Simplex direkt fort! (Innere-Punkte-Verfahren sind dafür ungeeignet) 99: 99 [99,99]