Studientag zur Algorithmischen Mathematik Lineare Optimierung Winfried Hochstättler Diskrete Mathematik und Optimierung FernUniversität in Hagen 1. Juli 2012
Outline Lineares Programm (LP) in Standardform Dualität Der Simplexalgorithmus
Lineares Programm (LP) in Standardform max c x so dass Ax = b x 0 mit b 0, A R m n, b R m, c R n.
Umformung in Standardform min c x max c x so dass Ax = b x 0
Umformung in Standardform min c x max( c) x max c x so dass Ax = b x 0
Umformung in Standardform min c x max( c) x b i < 0 max c x so dass Ax = b x 0
Umformung in Standardform min c x max( c) x max c x so dass Ax = b x 0 b i < 0 multipliziere Zeile i mit ( 1)
Umformung in Standardform min c x max( c) x max c x so dass Ax = b x 0 b i < 0 multipliziere Zeile i mit ( 1) a x b i
Umformung in Standardform max c x so dass Ax = b x 0 min c x max( c) x b i < 0 multipliziere Zeile i mit ( 1) a x b i a x + s i = b i, s i 0 (s i Schlupfvariable)
Umformung in Standardform max c x so dass Ax = b x 0 min c x max( c) x b i < 0 multipliziere Zeile i mit ( 1) a x b i a x + s i = b i, s i 0 a x b i (s i Schlupfvariable)
Umformung in Standardform max c x so dass Ax = b x 0 min c x max( c) x b i < 0 multipliziere Zeile i mit ( 1) a x b i a x + s i = b i, s i 0 a x b i a x s i = b i, s i 0 (s i Schlupfvariable) (s i Schlupfvariable)
Umformung in Standardform max c x so dass Ax = b x 0 min c x max( c) x b i < 0 multipliziere Zeile i mit ( 1) a x b i a x + s i = b i, s i 0 a x b i a x s i = b i, s i 0 beliebiges x i (ohne x i 0) (s i Schlupfvariable) (s i Schlupfvariable)
Umformung in Standardform min c x max( c) x max c x so dass Ax = b x 0 b i < 0 multipliziere Zeile i mit ( 1) a x b i a x + s i = b i, s i 0 (s i Schlupfvariable) a x b i a x s i = b i, s i 0 (s i Schlupfvariable) beliebiges x i (ohne x i 0) x i = x + i x i, x + i, x i 0 Aufspalten der Variablen
Beispiel min x 1 x 2 s.d. x 1 x 2 3 2x 1 + x 2 8 x 2 0
Beispiel min x 1 x 2 s.d. x 1 x 2 3 2x 1 + x 2 8 x 2 0 max x 1 + x 2 s.d. x 1 x 2 3 2x 1 + x 2 8 x 2 0
Beispiel min x 1 x 2 s.d. x 1 x 2 3 2x 1 + x 2 8 x 2 0 max x 1 + x 2 s.d. x 1 x 2 s 1 = 3 2x 1 + x 2 + s 2 = 8 x 2, s 1, s 2 0
Beispiel min x 1 x 2 s.d. x 1 x 2 3 2x 1 + x 2 8 x 2 0 max x + 1 x 1 + x 2 s.d. x + 1 x 1 x 2 s 1 = 3 2x + 1 2x 1 + x 2 + s 2 = 8 x + 1, x 1, x 2, s 1, s 2 0
Das duale Programm (P) max c x s.d. Ax = b x 0 primales Programm
Das duale Programm (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm
Das duale Programm (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm x heißt zulässig für (P), falls x die Nebenbedingungen erfüllt, d.h. Ax = b, x 0.
Das duale Programm (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm x heißt zulässig für (P), falls x die Nebenbedingungen erfüllt, d.h. Ax = b, x 0. (P) heißt zulässig, wenn es ein zulässiges x für (P) gibt.
Das duale Programm (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm x heißt zulässig für (P), falls x die Nebenbedingungen erfüllt, d.h. Ax = b, x 0. (P) heißt zulässig, wenn es ein zulässiges x für (P) gibt. (P) heißt beschränkt, wenn der optimale Zielfunktionswert endlich ist.
Das duale Programm (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm x heißt zulässig für (P), falls x die Nebenbedingungen erfüllt, d.h. Ax = b, x 0. (P) heißt zulässig, wenn es ein zulässiges x für (P) gibt. (P) heißt beschränkt, wenn der optimale Zielfunktionswert endlich ist. Analog definiert man diese Begriffe für (D).
Schwache Dualität (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm Satz: Ist x 0 zulässig für (P) und y zulässig für (D), so gilt c x y b.
Schwache Dualität (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm Satz: Ist x 0 zulässig für (P) und y zulässig für (D), so gilt c x y b. Beweis: c x c y A x 0
Schwache Dualität (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm Satz: Ist x 0 zulässig für (P) und y zulässig für (D), so gilt c x y b. Beweis: c y A c x 0 x (y A)x =
Schwache Dualität (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm Satz: Ist x 0 zulässig für (P) und y zulässig für (D), so gilt c x y b. Beweis: c x c y A x 0 (y A)x = y (Ax) Ax=b =
Schwache Dualität (P) max c x s.d. Ax = b x 0 primales Programm min y (D) b s.d. y A c duales Programm Satz: Ist x 0 zulässig für (P) und y zulässig für (D), so gilt c x y b. Beweis: c x c y A x 0 (y A)x = y (Ax) Ax=b = y b
Dualitätssatz Satz: Ist (P) zulässig und beschränkt, so ist auch (D) zulässig und beschränkt, und es gibt Optimallösungen x von (P) und y von (D) mit c x = y b.
Dualitätssatz Satz: Ist (P) zulässig und beschränkt, so ist auch (D) zulässig und beschränkt, und es gibt Optimallösungen x von (P) und y von (D) mit c x = y b. Beweisidee Sei x Optimallösung von (P), d.h. von min c x (P) s.d. Ax = b x 0
Dualitätssatz Satz: Ist (P) zulässig und beschränkt, so ist auch (D) zulässig und beschränkt, und es gibt Optimallösungen x von (P) und y von (D) mit c x = y b. Beweisidee Sei x Optimallösung von (P), d.h. von min c x (P) s.d. Ax = b x 0 f = c h = A g = I n
Dualitätssatz Satz: Ist (P) zulässig und beschränkt, so ist auch (D) zulässig und beschränkt, und es gibt Optimallösungen x von (P) und y von (D) mit c x = y b. Beweisidee Sei x Optimallösung von (P), d.h. von min c x f = c (P) s.d. Ax = b h = A x 0 g = I n Nach Kuhn-Tucker existieren dann notwendigerweise λ R m und µ R n, µ 0 mit 1. c = λ A µ I n 2. µ x = 0
Dualitätssatz Satz: Ist (P) zulässig und beschränkt, so ist auch (D) zulässig und beschränkt, und es gibt Optimallösungen x von (P) und y von (D) mit c x = y b. Beweisidee Sei x Optimallösung von (P), d.h. von min c x min y (P) s.d. Ax = b (D) b s.d. y x 0 A c Nach Kuhn-Tucker existieren dann notwendigerweise λ R m und µ R n, µ 0 mit 1. c ( λ )A 2. (( λ )A c )x = 0
Dualitätssatz Satz: Ist (P) zulässig und beschränkt, so ist auch (D) zulässig und beschränkt, und es gibt Optimallösungen x von (P) und y von (D) mit c x = y b. Beweisidee Sei x Optimallösung von (P), d.h. von min c x min y (P) s.d. Ax = b (D) b s.d. y x 0 A c Nach Kuhn-Tucker existieren dann notwendigerweise λ R m und µ R n, µ 0 mit 1. c ( λ )A 2. (( λ )A c )x = 0 ( λ )b = ( λ )Ax = c x.
Dualitätssatz (ausführliche Version) Entweder (P) und (D) sind beide zulässig und beschränkt.
Dualitätssatz (ausführliche Version) Entweder (P) und (D) sind beide zulässig und beschränkt. Dann haben Sie den gleichen Zielfunktionswert
Dualitätssatz (ausführliche Version) Entweder (P) und (D) sind beide zulässig und beschränkt. Dann haben Sie den gleichen Zielfunktionswert oder (P) ist zulässig und unbeschränkt und (D) ist unzulässig
Dualitätssatz (ausführliche Version) Entweder (P) und (D) sind beide zulässig und beschränkt. Dann haben Sie den gleichen Zielfunktionswert oder (P) ist zulässig und unbeschränkt und (D) ist unzulässig oder (P) ist unzulässig und (D) ist zulässig und unbeschränkt
Dualitätssatz (ausführliche Version) Entweder (P) und (D) sind beide zulässig und beschränkt. Dann haben Sie den gleichen Zielfunktionswert oder (P) ist zulässig und unbeschränkt und (D) ist unzulässig oder (P) ist unzulässig und (D) ist zulässig und unbeschränkt oder (P) und (D) sind beide unzulässig.
Dualisieren Manchmal ist es hilfreich, duale Programme von Problemen aufzustellen, die nicht in Standardform gegeben sind.
Dualisieren Manchmal ist es hilfreich, duale Programme von Problemen aufzustellen, die nicht in Standardform gegeben sind. (P) max c x s.d. Ax b
Dualisieren Manchmal ist es hilfreich, duale Programme von Problemen aufzustellen, die nicht in Standardform gegeben sind. (P) max c x + c x s.d. Ax + Ax + s = b x +, x, s 0
Dualisieren Manchmal ist es hilfreich, duale Programme von Problemen aufzustellen, die nicht in Standardform gegeben sind. (P) max c x + c x s.d. Ax + Ax + s = b x +, x, s 0 (D) min y b s.d. y A c y A c y A 0
Dualisieren Manchmal ist es hilfreich, duale Programme von Problemen aufzustellen, die nicht in Standardform gegeben sind. (P) max c x + c x s.d. Ax + Ax + s = b x +, x, s 0 (D) min y b s.d. y A c y A c y A 0 (P) max c x s.d. Ax b (D) min y b s.d. y A = c y A 0
Geometrische Interpretation der Schritte des Simplexalgorithmus gestrichelt: Zulässigkeitsbereich.
Geometrische Interpretation der Schritte des Simplexalgorithmus gestrichelt: Zulässigkeitsbereich. BlauePfeile: Pivotschritte in Phase I.
Geometrische Interpretation der Schritte des Simplexalgorithmus gestrichelt: Zulässigkeitsbereich. BlauePfeile: Pivotschritte in Phase I. Rote Pfeile: Pivotschritte in Phase II.
Geometrische Interpretation der Schritte des Simplexalgorithmus gestrichelt: Zulässigkeitsbereich. BlauePfeile: Pivotschritte in Phase I. Rote Pfeile: Pivotschritte in Phase II.
Lösung linearer Programme mit dem Simplexalgorithmus max c x Ax = b ( 0) x 0 Begriffe: Basis: Indexmenge von m linear unabhängigen Spalten von A.
Lösung linearer Programme mit dem Simplexalgorithmus max c x Ax = b ( 0) x 0 Begriffe: Basis: Indexmenge von m linear unabhängigen Spalten von A. Ecke: Zu Basis B gehört eine Ecke x B = A 1.B b, x N = 0.
Lösung linearer Programme mit dem Simplexalgorithmus max c x Ax = b ( 0) x 0 Begriffe: Basis: Indexmenge von m linear unabhängigen Spalten von A. Ecke: Zu Basis B gehört eine Ecke x B = A 1.B b, x N = 0. zulässige Basis: B heißt zulässig, wenn x 0.
Lösung linearer Programme mit dem Simplexalgorithmus max c x Ax = b ( 0) x 0 Begriffe: Basis: Indexmenge von m linear unabhängigen Spalten von A. Ecke: Zu Basis B gehört eine Ecke x B = A 1.B b, x N = 0. zulässige Basis: B heißt zulässig, wenn x 0. Starte von zulässiger Basis (Ecke) und gehe in Aufstiegsrichtung, so lange es möglich ist.
Der Simplexalgorithmus Ggb. zulässige Basis B. 0... 0 c N c B A 1.B A.N c B A 1.B b A 1.B A.B A 1.B A.N A 1.B b
Der Simplexalgorithmus Ggb. zulässige Basis B. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b
Der Simplexalgorithmus Finde Aufstiegsrichtung. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b Finde Aufstiegsrichtung: c j c B A 1.B A.j > 0
Der Simplexalgorithmus Finde begrenzende Nichtnegativitätsrelation. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b Finde Aufstiegsrichtung: c j cb A 1.B A.j > 0 Finde begrenzende Nichtnegativitätsrelation: i = argmin{ A 1.B b (A 1.B A) ij (A 1.B A) ij > 0}.
Der Simplexalgorithmus Pivotiere auf (A 1.B A) ij. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b Finde Aufstiegsrichtung: c j cb A 1.B A.j > 0 Finde begrenzende Nichtnegativitätsrelation: i = argmin{ A 1.B b (A 1.B A) ij Pivotiere auf (A 1.B A) ij. (A 1.B A) ij > 0}.
Der Simplexalgorithmus Falls keine Aufstiegsrichtung existiert, ist (cb A 1.B )A c. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b Finde Aufstiegsrichtung: c j cb A 1.B A.j > 0 Finde begrenzende Nichtnegativitätsrelation: i = argmin{ A 1.B b (A 1.B A) ij Pivotiere auf (A 1.B A) ij. (A 1.B A) ij > 0}.
Der Simplexalgorithmus Falls keine Aufstiegsrichtung existiert, ist (cb A 1.B )A c. Also ist cb A 1.B zulässig für (D) und cb A 1.B b = c B x B = c x. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b Finde Aufstiegsrichtung: c j cb A 1.B A.j > 0 Finde begrenzende Nichtnegativitätsrelation: i = argmin{ A 1.B b (A 1.B A) ij Pivotiere auf (A 1.B A) ij. (A 1.B A) ij > 0}.
Der Simplexalgorithmus Falls es keine begrenzende Nichtnegativitätsrelation gibt, so ist das Problem unbeschränkt. 0... 0 c N c B A 1.B A.N c B A 1.B b I B A 1.B A.N A 1.B b Finde Aufstiegsrichtung: c j cb A 1.B A.j > 0 Finde begrenzende Nichtnegativitätsrelation: i = argmin{ A 1.B b (A 1.B A) ij Pivotiere auf (A 1.B A) ij. (A 1.B A) ij > 0}.
Phase I Falls keine zulässige Startbasis bekannt ist, lösen wir mit dem Simplexalgorithmus das Hilfsproblem
Phase I Falls keine zulässige Startbasis bekannt ist, lösen wir mit dem Simplexalgorithmus das Hilfsproblem max y i Ax + y = b x, y 0
Phase I Falls keine zulässige Startbasis bekannt ist, lösen wir mit dem Simplexalgorithmus das Hilfsproblem max y i Ax + y = b x, y 0 0... 0 1... 1 0 A I n b
Phase I Falls keine zulässige Startbasis bekannt ist, lösen wir mit dem Simplexalgorithmus das Hilfsproblem max y i Ax + y = b x, y 0 e A 0... 0 e b A I n b
Phase I Falls keine zulässige Startbasis bekannt ist, lösen wir mit dem Simplexalgorithmus das Hilfsproblem max y i Ax + y = b x, y 0 e A 0... 0 e b A I n b Wenn Lösung Zielfunktionswert 0 hat, d.h. alle y = 0, dann kann man künstliche Zeilen streichen und hat zulässige Basis
Phase I Falls keine zulässige Startbasis bekannt ist, lösen wir mit dem Simplexalgorithmus das Hilfsproblem max y i Ax + y = b x, y 0 e A 0... 0 e b A I n b Wenn Lösung Zielfunktionswert 0 hat, d.h. alle y = 0, dann kann man künstliche Zeilen streichen und hat zulässige Basis ansonsten hat ursprüngliches Problem keine zulässige Lösung
Beispiel max x + 1 x 1 + x 2 s.d. x + 1 x 1 x 2 s 1 = 3 2x + 1 2x 1 + x 2 + s 2 = 8 x + 1, x 1, x 2, s 1, s 2 0
Beispiel max x + 1 x 1 + x 2 s.d. x + 1 x 1 x 2 s 1 = 3 2x + 1 2x 1 + x 2 + s 2 = 8 x + 1, x 1, x 2, s 1, s 2 0 Wir haben mit s 2 schon einen Einheitsvektor, deswegen benötigen wir nur noch eine künstliche Schlupfvariable und erhalten folgendes Hilfstableau.
Beispiel max x + 1 x 1 + x 2 s.d. x + 1 x 1 x 2 s 1 = 3 2x + 1 2x 1 + x 2 + s 2 = 8 x + 1, x 1, x 2, s 1, s 2 0 Wir haben mit s 2 schon einen Einheitsvektor, deswegen benötigen wir nur noch eine künstliche Schlupfvariable und erhalten folgendes Hilfstableau. 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 0 1 3 2 2 1 0 1 0 8
Beispiel max x + 1 x 1 + x 2 s.d. x + 1 x 1 x 2 s 1 = 3 2x + 1 2x 1 + x 2 + s 2 = 8 x + 1, x 1, x 2, s 1, s 2 0 Wir haben mit s 2 schon einen Einheitsvektor, deswegen benötigen wir nur noch eine künstliche Schlupfvariable und erhalten folgendes Hilfstableau. 1 1 1 1 0 0 3 1 1 1 0 0 0 0 1 1 1 1 0 1 3 2 2 1 0 1 0 8
Beispiel 1 1 1 1 0 0 3 1 1 1 0 0 0 0 1 1 1 1 0 1 3 2 2 1 0 1 0 8
Beispiel 1 1 1 1 0 0 3 1 1 1 0 0 0 0 1 1 1 1 0 1 3 2 2 1 0 1 0 8 0 0 0 0 0 1 0 0 0 2 1 0 1 3 1 1 1 1 0 1 3 0 0 3 2 1 2 2
Beispiel 1 1 1 1 0 0 3 1 1 1 0 0 0 0 1 1 1 1 0 1 3 2 2 1 0 1 0 8 0 0 0 0 0 1 0 0 0 2 1 0 1 3 1 1 1 1 0 1 3 0 0 3 2 1 2 2 künstlicher Zielfunktionswert ist 0 = zulässige Basis gefunden
Beispiel 1 1 1 1 0 0 3 1 1 1 0 0 0 0 1 1 1 1 0 1 3 2 2 1 0 1 0 8 0 0 0 0 0 1 0 0 0 2 1 0 1 3 1 1 1 1 0 1 3 0 0 3 2 1 2 2 künstlicher Zielfunktionswert ist 0 = zulässige Basis gefunden 0 0 2 1 0 3 1 1 1 1 0 3 0 0 3 2 1 2
Beispiel 0 0 0 1 3 2 3 13 3 1 1 0 1 3 0 0 1 2 3 1 3 1 3 11 3 2 3
Beispiel 0 0 0 1 3 2 3 13 3 1 1 0 1 3 0 0 1 2 3 Tableau ist final, Optimallösung (x + 1, x 1, x 2, s 1, s 2 ) = ( 11 3, 0, 2 3, 0, 0), optimaler Zielfunktionswert = 13 3 1 3 1 3 11 3 2 3
Beispiel 0 0 0 1 3 2 3 13 3 1 1 0 1 3 0 0 1 2 3 Tableau ist final, Optimallösung (x + 1, x 1, x 2, s 1, s 2 ) = ( 11 3, 0, 2 3, 0, 0), optimaler Zielfunktionswert = 13 3 Also ist 1 3 (11, 2) Optimallösung des Ausgangsproblems. 1 3 1 3 11 3 2 3
Veranschaulichung der Schritte 8 7 6 5 4 3 2 1 1 2 3 4 5 6