Optimierungsalgorithmen



Ähnliche Dokumente
3.4 Exakte Verfahren für (Gemischt-) Ganzzahlige Optimierung

Sandro Pirkwieser, (Bin Hu, Jakob Puchinger) SS 2010

Das Linear Ordering Problem Exakte Lösungsverfahren. für NP-schwierige. VO Algorithm Engineering

Kap. 3: Exakte Lösungsverfahren für NPschwierige. Optimierungsprobleme VO Algorithm Engineering

Kapitel 4. Optimierungsalgorithmen. Technische Universität Wien. Gunnar Klau Technische Universität Wien. Institut für Computergraphik und Algorithmen

Optimierungsverfahren in der Transportlogistik

NP-schwierige kombinatorische Optimierungsprobleme

Kombinatorische Optimierung

Operations Research. Ganzzahlige lineare Programme. ganzzahlige lineare Programme. Ganzzahlige lineare Programme. Rainer Schrader. 25.

Kap. 4: Lineare Programmierung

1. Lineare Optimierungsaufgaben (LOA) als Teilklasse konvexer Optimierungsprobleme. f(x) min, x G (1.1) (Legende)

Optimierung. Vorlesung 02

Ganzzahlige lineare Programme

Schnittebenenverfahren für das symmetrische

mit. Wir definieren (Skalarprodukt = Winkel).

Computer Science Department - High Performance and Web Computing Group. Optimierungsprobleme

Schnittebenenverfahren von Gomory. Stefan Allescher 30. Juni 2005

Optimierung für Wirtschaftsinformatiker: Dualität, Ganzzahlige lineare Optimierung

Optimierung. Optimierung. Vorlesung 8 Lineare Programmierung III: Simplex Algorithmus Fabian Kuhn

10. Die Berücksichtigung nicht vorzeichenbeschränkter Variablen

VORLESUNG 11 Lineare Optimierung (Viele Folien nach Ulf Lorenz, jetzt TU Darmstadt)

Teil I. Lineare Optimierung

Die duale Simplexmethode

How To Solve The Linear Ordering Problem (Lop)

Dualitätssätze der linearen Optimierung

Das Travelling Salesman Problem Exakte Lösungsverfahren für NP-schwierige kombinatorische Optimierungsprobleme 5. VO

Vorlesung Lineare Optimierung (Sommersemester 2010)

Eigenschaften von LPs

4.3.3 Simplexiteration

VORLESUNG 12 Lineare Optimierung (Viele Folien nach Ulf Lorenz, jetzt TU Darmstadt)

Kap. 4.3: Das Dualitätstheorem der linearen Optimierung

Lineare Optimierung: Simplexverfahren Phase Ⅰ

Minimumproblem. Definition 4.7. Ein LP der Form. unter den Nebenbedingungen. d ij x j b i (i =1,...,m)

1 Der Simplex Algorithmus I

Inhaltsübersicht für heute:

Optimierung. Vorlesung 08

Schnittebenenverfahren und Heuristiken

Literatur für diese VO. Überblick. Kap. 5: Approximationsalgorithmen für kombinatorische Optimierungsprobleme

Kap. 5: Approximationsalgorithmen für kombinatorische Optimierungsprobleme

2. Optimierungsprobleme 6

Lineare Optimierung und Simplex-Algorithmus

Die duale Simplexmethode zur Lösung rein ganzzahliger linearer Programme

Optimale Steuerung 1 Prozessoptimierung 1

Vorlesung Wirtschaftsmathematik I WS 2007/2008, Wirtschaftingenieurwesen. Kapitel IV: Grundlagen der Linearen Optimierung

A = A A

VORLESUNG 14 Lineare Optimierung, Dualität (Viele Folien nach Ulf Lorenz, jetzt TU Darmstadt)

Optimierung für Wirtschaftsinformatiker: Lineare Programme

Wir gewichten die Kanten von G wie folgt: Kante e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 d(e i )

Studientag zur Algorithmischen Mathematik

Optimierung für Nichtmathematiker

Übung 3, Simplex-Algorithmus

Kapitel 7 : Lineare Programmierung Die Simplexmethode (G.B.Dantzig, 1947) Beispiel:

1 Lineare Optimierung, Simplex-Verfahren

Kap. 8: Travelling Salesman Problem

Wie schreibe ich einen Kürzester Kruzester

3.6 Branch-and-Bound-Verfahren

Operations Research. Polyeder und Polytope. Polyeder und Polytope. Polyeder. Rainer Schrader. 11. Mai Gliederung. sei P R n

Operations Research. Die Simplexmethode. LP-Dualität. Die Simplexmethode. Rainer Schrader. 18. Juni Zur Erinnerung: Gliederung

Perlen der Informatik I Wintersemester 2012 Aufgabenblatt 7

Wiederholung. Wir gehen von LP s in Standardform aus, wobei A R m n vollen Zeilenrang hat: minc T x A x = b

Kap. 5: Graph Coloring

Der Branching-Operator B

Primale Separierung für Max-Cut und gradbeschränkte minimale

Operations Research. Flüsse in Netzwerken. Flüsse in Netzwerken. Unimodularität. Rainer Schrader. 2. Juli Gliederung.

Technische Universität München Zentrum Mathematik Diskrete Optimierung: Fallstudien aus der Praxis. Station 3: Das Matching-Polytop

Überblick Kap. 5: Graph Coloring

Traveling Salesman Problem (TSP) Exakte Algorithmen für NP-schwere Probleme Integer Lineare Programme Branch-and-Cut

Optimierung. Vorlesung 04

Lineare Optimierungsmodelle

3. Schnittebenenverfahren

ist ein Polyeder. c) Sei F eine Seite von P. Wann ist f 1 (F ) eine Seite von f 1 (P )? Begründen Sie Ihre Antwort. x 1. x = max{ x i i N n }.

Algorithmische Graphentheorie

Simplex-Verfahren. Kapitel 4. Simplex-Verfahren. Peter Becker (H-BRS) Operations Research I Sommersemester / 298

Mathematische Methoden der Algorithmik

3.1. Existenzsatz und Struktur der Lösungsmenge

Betriebliche Optimierung

Mathematik II für Studierende der Informatik (Analysis und lineare Algebra) im Sommersemester 2018

lineare Programmierung

7.1 Matrizen und Vektore

Innere-Punkt-Methoden

Experimente. Zahlenbeispiel. Cache-Optimale Algorithmen. Warum Funktionieren Caches? Cache-Oblivious Speichermodell. Characterisierung von Caches

Näherungsalgorithmen (Approximationsalgorithmen) WiSe 2008/09 in Trier. Henning Fernau Universität Trier

Hauptsatz und Optimalitätskriterium der Simplexmethode

Inhaltsverzeichnis Grundlagen der Linearen Optimierung

Das Matching Polytop

Optimierung. Optimierung. Vorlesung 9 Lineare Programmierung & Kombinatorische Optimierung Fabian Kuhn

Klausur zur Vorlesung Einführung in das Operations Research im Wintersemester 2005/2006

Übungsblatt 6 Lösungsvorschläge

Betriebswirtschaftliche Optimierung

Grundlagen der Optimierung. Übung 6

Lineare Programmierung Teil I

Kapitel 5. Peter Becker (H-BRS) Operations Research I Sommersemester / 298

Algorithmen und Datenstrukturen

Mathematische Grundlagen für Wirtschaftswissenschaftler Lösungshinweise zu den Übungsaufgaben aus Kapitel 3 - Lineare Optimierung

1. Transport- und Zuordnungsprobleme

Formale Grundlagen der Informatik F3: Berechenbarkeit un

Technische Universität München Zentrum Mathematik Diskrete Optimierung: Fallstudien aus der Praxis. Station 3: Das Matching-Polytop

Numerische Lineare Algebra

Inhaltsübersicht für heute:

6. Einführung 43. gilt. Dann soll also A B x B = b eindeutig lösbar sein, also A B vollen Rang haben, d. h. invertierbar (regulär) sein.

Transkript:

Optimierungsalgorithmen Jakob Puchinger Algorithmen und Datenstrukturen 2 Arbeitsbereich für Algorithmen und Datenstrukturen Institut für Computergraphik und Algorithmen Technische Universität Wien

Übersicht Grundlagen 1 Einführung - Optimierungsprobleme Kombinatorische Optimierungsprobleme Lineare Optimierungsprobleme Ganzzahlige Lineare Optimierungsprobleme 2 Lineare Programmierung Geometrische Interpretation Dualität der Linearen Programmierung Grundlagen der Polyedertheorie Der Simplexalgorithmus 3 Kombinatorische Optimierung vs. Ganzzahlige Optimierung

Übersicht Lösungsverfahren 4 Branch-and-Bound für Ganzzahlige Optimierung 5 Schnittebeneverfahren und Branch-and-Cut Schnittebenenverfahren Branch-and-Cut 6 Spaltengenerierung und Branch-and-Price Spaltengenerierung Branch-and-Price

Teil I Grundlagen

Einführung Übersicht 1 Einführung - Optimierungsprobleme Kombinatorische Optimierungsprobleme Lineare Optimierungsprobleme Ganzzahlige Lineare Optimierungsprobleme 2 Lineare Programmierung Geometrische Interpretation Dualität der Linearen Programmierung Grundlagen der Polyedertheorie Der Simplexalgorithmus 3 Kombinatorische Optimierung vs. Ganzzahlige Optimierung

Einführung Kombinatorische Optimierungsprobleme Optimierungsprobleme Was sind Optimierungsprobleme? Vielzahl zulässiger Lösungen Jeder Lösung ist ein Wert zugeordnet Suchen der Lösung mit dem besten (dem optimalen) Wert Beispiele Kürzeste Wege Prozess-Scheduling Personalmanagement...

Einführung Kombinatorische Optimierungsprobleme Optimierungsprobleme Was sind Optimierungsprobleme? Vielzahl zulässiger Lösungen Jeder Lösung ist ein Wert zugeordnet Suchen der Lösung mit dem besten (dem optimalen) Wert Beispiele Kürzeste Wege Prozess-Scheduling Personalmanagement...

Einführung Kombinatorische Optimierungsprobleme Optimierungsprobleme Was sind Optimierungsprobleme? Vielzahl zulässiger Lösungen Jeder Lösung ist ein Wert zugeordnet Suchen der Lösung mit dem besten (dem optimalen) Wert Beispiele Kürzeste Wege Prozess-Scheduling Personalmanagement...

Einführung Kombinatorische Optimierungsprobleme Kombinatorische Optimierungsprobleme Definition Kombinatorisches Optimierungsproblem Grundmenge: endliche Menge E Zulässige Lösungen: I 2 E (2 E ist die Potenzmenge von E) Gewichtungsfunktion: c : E R Zielfunktion: für F I : c(f ) = e F c(e) Aufgabe: Finde I I mit c(i ) maximal bzw. minimal

Einführung Kombinatorische Optimierungsprobleme Travelling Salesperson Problem TSP Gegeben: V, Menge von n Punkten im (zweidimensionalen) Raum Gesucht: Kürzeste Rundtour, die alle Punkte besucht Grundmenge: Menge aller Kanten im vollständigen Graphen K n = (V, E) Zulässige Lösungen: Kantenmengen, die Tour durch alle Punkte beschreiben Zielfunktionswert: Summe der Kantenlängen einer Tour

Einführung Lineare Optimierungsprobleme Lineare Optimierungsprobleme Gegeben m, n positive ganze Zahlen Vektor b R m Vektor c R n Matrix A R m n Gesucht x R n mit Zielfunktion c T x maximal (minimal) unter den Nebenbedingungen (Restriktionen) Ax b Definition c T x = n i=1 c ix i Ax n i=1 a ijx i, für j = 1,, m

Einführung Lineare Optimierungsprobleme Lineare Programmierung Definition Lineares Programm (LP) max c T x Ax b x R n Definition Zulässiger Bereich P = {x R n : Ax b}

Einführung Lineare Optimierungsprobleme Modellierung von Problemen Probleme aus der Praxis oft als lineare Programme beschreibbar Beispiele: Modellierung ist eine wichtige Aufgabe in der Praxis. Produktionsplanung Portfolio-Optimierung Transportprobleme

Einführung Lineare Optimierungsprobleme Modellierung von Problemen Beispiel Ölraffinerie Aus Rohöl verschiedene Produkte herstellen: Schweres Öl S Mittelschweres Öl M Leichtes Öl L Verschieden Crackprozesse produzieren unterschiedliche Mengen der Endprodukte Crackprozeß 1: 2S, 2M, 1L Kosten: 3 EUR Crackprozeß 2: 1S, 2M, 4L Kosten: 5 EUR Bedarfe 3S, 5M, 4L Ziel: Kosten minimieren

Einführung Lineare Optimierungsprobleme Modellierung von Problemen Variablen für Anwendung der Crackprozesse x 1 : Produktionsniveau Crackprozess 1 x 2 : Produktionsniveau Crackprozess 2 Bedeutung von x 1 = 2.5 Prozess x1 wird auf 2.5 Einheiten Rohöl angewendet Kostet 2.5 3 EUR Liefert 2.5 2 S, 2.5 2 M und 2.5 1 L Jeder nicht-negative Vektor (x 1, x 2 ) R 2 bezeichnet ein gewisses Produktionsniveau der Crackprozesse.

Einführung Lineare Optimierungsprobleme Modellierung von Problemen Es müssen 3 Einheiten S produziert werden 2x 1 + x 2 3 Es müssen 5 Einheiten M produziert werden 2x 1 + 2x 2 5 Es müssen 4 Einheiten L produziert werden x 1 + 4x 2 4 Die Kosten der Produktion sind z = 3x 1 + 5x 2

Einführung Lineare Optimierungsprobleme Modellierung von Problemen Lineares Programm Ölrafinerie min 3x 1 + 5x 2 2x 1 + x 2 3 2x 1 + 2x 2 5 x 1 + 4x 2 4 x 1 0 x 2 0

Einführung Lineare Optimierungsprobleme Umformen von Linearen Programmen Verschiedenen Formulierungen für Lineare Programme z.b.: min c T x : Ax b max c T x : Ax b min c T x : Ax b und x 0 min c T x : Ax = b und x 0

Einführung Lineare Optimierungsprobleme Umformen von Linearen Programmen Überführungsregeln 1 max c T x min( c) T x 2 ai T x b i ( a i ) T x b i 3 ai T x = b i ai T x b i und ( a i ) T x b i 4 ai T x b i ai T x + s i = b i, s i 0 a i ist i-te Zeile der Matrix A, b i ist i-ter Eintrag in Vektor b und s i wird als Schlupfvariable bezeichnet.

Einführung Ganzzahlige Lineare Optimierungsprobleme Ganzzahlige Lineare Programme Bei vielen Problemen aus Anwendungen sind nur ganzzahlige Lösungen sinnvoll. Gegenstände können nicht in Bruchteilen beschafft werden. Entscheidungen müssen Ja oder Nein d.h. 0 oder 1 sein. Ganzzahligkeitsbedingungen machen lineare Programme schwer lösbar. Auch das lösen relativ kleiner Probleme braucht oft viele Stunden oder Tage.

Einführung Ganzzahlige Lineare Optimierungsprobleme Ganzzahlige Lineare Programme Gemischt Ganzzahliges Programm max a T x + b T y Ax + By = c Cx + Dy d x, y 0 x Z l y R k Nur ganzzahlige Variablen: Ganzzahliges Programm Nur Variablen in {0, 1}: Binäres Lineares Programm

Einführung Ganzzahlige Lineare Optimierungsprobleme Ganzzahlige Lineare Programme Beispiel Rucksackproblem Rucksack soll gepackt werden Verschiedene Gegenstands-Typen i = 1,, n Jeder Gegenstands-Typ hat Profit p i und Gewicht w i Beliebig viele Gegenstände von jedem Typ vorhanden Rucksack fasst maximal b kg Bestimme Anzahl der Gegenstände von jedem Typ, die in den Rucksack kommt, damit Profit maximiert wird

Einführung Ganzzahlige Lineare Optimierungsprobleme Ganzzahlige Lineare Programme Beispiel Rucksackproblem max c 1 x 1 + c 2 x 2 + + c n x n a 1 x 1 + a 2 x 2 + + a n x n b x i 0 für i = 1, 2,..., n x i Z n für i = 1, 2,..., n. Kein kombinatorisches Optmierungsproblem: Grundmenge unbeschränkt Kombinatorisch durch zusätzliche Ungleichungen: b x i i = 1,, n a i

Einführung Ganzzahlige Lineare Optimierungsprobleme Ganzzahlige Lineare Programme Beispiel Rucksackproblem max c 1 x 1 + c 2 x 2 + + c n x n a 1 x 1 + a 2 x 2 + + a n x n b x i 0 für i = 1, 2,..., n x i Z n für i = 1, 2,..., n. Kein kombinatorisches Optmierungsproblem: Grundmenge unbeschränkt Kombinatorisch durch zusätzliche Ungleichungen: b x i i = 1,, n a i

Lineare Programmierung Übersicht 1 Einführung - Optimierungsprobleme Kombinatorische Optimierungsprobleme Lineare Optimierungsprobleme Ganzzahlige Lineare Optimierungsprobleme 2 Lineare Programmierung Geometrische Interpretation Dualität der Linearen Programmierung Grundlagen der Polyedertheorie Der Simplexalgorithmus 3 Kombinatorische Optimierung vs. Ganzzahlige Optimierung

Lineare Programmierung Lösbarkeit von Linearen Programmen Gegeben ein Lineares Programm min c T x Ax b Für den Zulässigkeitsbereich P = {x Ax b} gilt: P = LP unlösbar, keine zulässige Lösung exisitiert. P, aber inf{c T x x P} existiert nicht LP ist lösbar, aber es gibt keine optimale Lösung. Das LP ist unbeschränkt. P und das min{c T x x P} existiert LP lösbar und endliche optimale Lösung x exisitiert.

Lineare Programmierung Geometrische Interpretation Geometrische Interpretation von LPs LPs mit zwei Variablen lassen sich geometrisch lösen. Ölraffinerie die Zweite min 3x 1 + 5x 2 2x 1 + x 2 3 2x 1 + 2x 2 5 x 1 + 4x 2 4 x 1 0 x 2 0

Lineare Programmierung Geometrische Interpretation Geometrische Interpretation von LPs

Lineare Programmierung Geometrische Interpretation Geometrische Interpretation von LPs Graphisches Lösen (Minimierung) Verschiebe Zielfunktionsgerade z parallel in Richtung abnehmender Zielfunktionswerte Stopp wenn kein weiteres Verschieben, ohne Verlassen des zulässigen Bereichs, mehr möglich ist. Alle zulässigen Punkte auf der Zielfunktionsgerade z geben dann die optimalen Lösungen an.

Lineare Programmierung Geometrische Interpretation Graphisches Lösen Ölraffinerie

Lineare Programmierung Geometrische Interpretation Graphisches Lösen Ölraffinerie

Lineare Programmierung Geometrische Interpretation Graphisches Lösen Ölraffinerie

Lineare Programmierung Dualität der Linearen Programmierung Dualität Beispiel Suche nach Schranken für lineare Programme. Beispiel LP / Primales Problem Wir betrachten folgendes LP: min 4x 1 + 3x 2 x 1 + 2x 2 7 (1) 2x 1 x 2 5 (2) 3x 1 + x 2 2 (3)

Lineare Programmierung Dualität der Linearen Programmierung Dualität Beispiel Beispiel Schranken Neue gültige Ungleichung aus 2 (1)+(2): 4x 1 + 3x 2 19. Koeffizienten stimmen genau mit Zielfunktionsvektors c überein. untere Schranke für die Zielfunktion: 19 Andere gültige Ungleichung aus: (1)+(3): 4x 1 + 3x 2 5. schwächere untere Schranke: 5 Wie finden wir die beste/stärkste untere Schranke?

Lineare Programmierung Dualität der Linearen Programmierung Dualität Beispiel Beispiel Duales Problem Gesucht: Skalierungsfaktoren y i, i = 1, 2, 3 der Ungleichungen Multiplizieren von (1) mit y 1, (2) mit y 2 und (3) mit y 3, dann soll y 1 + 2y 2 + 3y 3 den Zielfunktionskoeffizienten 4 ergeben. Analog soll 2y 1 y 2 + y 3 den Wert 3 ergeben. Die rechte Seite (Schranke) soll so groß wie möglich werden. Daraus folgt folgende Aufgabe, das duale Problem: max 7y 1 + 5y 2 2y 3 y 1 + 2y 2 + 3y 3 = 4 2y 1 y 2 + y 3 = 3

Lineare Programmierung Dualität der Linearen Programmierung Dualität der Linearen Programmierung Allgemein: c als positive Linearkombination der a i darstellen: suche y i 0 mit c = m i=1 y ia i. Für die Zielfunktion folgt daraus m c T x = ( y i a i ) T x = i=1 m y i (ai T x) i=1 m y i b i. i=1 Die beste Schranke wird erreicht, wenn y T b maximiert wird.

Lineare Programmierung Dualität der Linearen Programmierung Dualität der Linearen Programmierung Die Bestimmung der besten unteren Schranke zu dem LP (P) min c T x, so dass Ax b ist also wiederum ein lineares Programm. Definition Dieses heißt das Duale Problem und ist definiert als: (D) max y T b, so dass y T A = c T und y 0. Das duale Problem eines dualen Problems ist das primale Problem.

Lineare Programmierung Dualität der Linearen Programmierung Dualität der Linearen Programmierung Zusammenhang Primal / Dual Regeln Primales Problem minimiere duales Problem maximiere b i 0 Restriktionen b i Variablen 0 = b i frei 0 c j Variablen 0 Restriktionen c j frei = c j

Lineare Programmierung Dualität der Linearen Programmierung Schwache Dualität Schwacher Dualitätssatz Sei x ein zulässiger Punkt für (P) (das zu minimierende primale Problem), und ȳ zulässig für (D) (das duale Problem). Dann gilt: ȳ T b c T x. Das heißt, jede zulässige Lösung des dualen Problems (D) ist eine untere Schranke für das primale Problem (P). Korollar Primales Problem unbeschränkt duales Problem unlösbar.

Lineare Programmierung Dualität der Linearen Programmierung Starke Dualität Starker Dualitätssatz Seien x und y jeweils zulässige primale und duale Lösungen. Dann gilt: c T x = (y ) T b beide Lösungen x und y sind optimal. Findet man zu primaler Lösung duale Lösung mit gleichem Wert dann ist Lösung optimal. Beweis für Optimalität der gefundenen Lösung

Lineare Programmierung Grundlagen der Polyedertheorie Polyedertheorie Allgemeine Bemerkungen Problem mit n Variablen definiert Struktur im n-dimensionalen Raum. Nebenbedingungen mit Ungleichheitszeichen definieren zulässige Halbräume. Schnitt der Halbräume aller Nebenbedingungen entweder leer oder Polyeder. Wenn es optimale Lösung gibt so gibt es auch optimale Ecke des Polyeders.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Linearkombination Definition Für x 1, x 2,..., x k R und heißt λ 1 λ =. y = λ k R k k λ i x i i=1 Linearkombination von x 1,..., x k.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Spezielle Linearkombinationen Definition Gilt für zusätzlich: y = λ 0 k i=1 λ i = 1 k i=1 λ i = 1, λ 0 Kombination von x 1, x 2,..., x k. k λ i x i i=1 so heißt y konische affine konvexe

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Mengen von Linearkombinationen Definition Für S R heißt lin(s) cone(s) aff(s) conv(s) die lineare konische affine konvexe Hülle von S.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Mengen von Linearkombinationen

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Mengen von Linearkombinationen Definition Falls L = lin(s) L = cone(s) L = aff(s) L = conv(s) so ist L ein linearerraum Kegel affinerraum konvexemenge Es gilt: L R n ist ein linearer Unterraum des R n genau dann wenn ein A R m n existiert, so dass L = {x R n Ax = 0}. L R n ist ein affiner Unterraum des R n genau dann wenn ein A R m n, b R m existiert, so dass L = {x R n Ax = b}.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Hyperebenen Für die lineare Programmierung sind spezielle affine Unterräume, die Hyperebenen, interessant, die dem Spezialfall m = 1 entsprechen. Definition Eine Hyperebene ist definiert als {x R n a T x = a 0 } für a R n \ {0}, a 0 R.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Unabhängigkeit Definition Eine Menge S = {x 1, x 2,..., x k } R n von Vektoren heißt linear unabhängig, wenn aus k i=1 λ ix i = 0 folgt, dass λ i = 0 für alle i {1, 2,..., k} gilt. Sie heißt affin unabhängig, wenn aus k i=1 λ ix i = 0, k i=1 λ i = 0 folgt, dass λ i = 0 für alle i {1, 2,..., k} gilt.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Rang Definition Für S R n ist der } Rang rang(s) von S affine Rang affrang(s) { max{ T T S ist linear unabhängig} definiert durch max{ T T S ist affin unabhängig} } Definition Die Dimension von S ist dim(s) = affrang(s) 1. Es gilt: 0 aff(s) dim(s) = rang(s) 0 aff(s) dim(s) = rang(s) 1

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Halbräume, Hyperebenen Definition Für a R n, a 0, a o R heißt H = {x R n a T x a 0 } Halbraum, die durch H definierte Hyperebene ist {x R n a T x = a 0 }. Definition Eine Ungleichung a T x a 0 ist gültig bezüglich einer Teilmenge S R n genau dann, wenn S {x R n a T x a 0 }.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Polyeder Definition Eine Teilmenge P R n heißt Polyeder, falls es eine Matrix A R (m n) und einen Vektor b R m gibt mit Ein alternative Darstellung: P = {x R n Ax b}. P = {x R n Ax b, Dx = d} kann man durch einfache Umformen erzielen.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Besondere Polyeder Halbräume sind Polyeder. Die leere Menge ist ein Polyeder = {x 0 T x 1}. Der gesamte Raum ist ein Polyeder R n = {x 0 T x 1}. Jedes Polyeder P R n ist der Durchschnitt von endlich vielen Halbräumen. Definition Ein Polytop ist ein beschränktes Polyeder: P {x R n x B} für ein B > 0.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Darstellung Die lineare, die affine, die konvexe bzw. die konische Hülle einer endlichen Teilmenge des R n sind Polyeder. Aus den klassischen Theoremen von Minkowski und Weyl folgt: Theorem Jedes Polyeder P R n besitzt eine Darstellung der Form P = conv(v ) + cone(e), wobei V und E endliche Teilmengen des R n entsprechen und umgekehrt.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Darstellung Polyeder sind also genau die Teilmengen des R n, die sich als Summe von konvexen und konischen Hüllen endlicher Teilmengen des R n darstellen lassen. Deshalb existieren immer zwei Darstellungen von Polyedern P = {x R n Ax b} = conv(v ) + cone(e) Polytope lassen sich durch P = conv(v ) darstellen.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Beispiel Wir betrachten das Polytop P = {( ) 0, 1 ( ) 1, 0 ( )} 1 1 Die Darstellung durch Ungleichungen ist graphisch leicht ablesbar: {( ) } x P = R 2 x 1, y 1, x + y 1 y

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Seitenflächen Definition F P heißt Seitenfläche von P, falls es eine für P gültige Ungleichung a T x a 0 gibt, so dass F = {x P a T x = a 0 }. F ist echte Seitenfläche falls F P. Ist P = {x R n a T i x b i, i = 1, 2,..., k} = conv(s) und F Seitenfläche von P, so gibt es eine Teilmenge I {1, 2,..., k}, so dass F = {x R n a i x T b i, i I }. Weiters gibt es eine Teilmenge R S, so dass F = conv(r).

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Seitenflächen Definition Eine Ecke eines Polyeders P ist eine einelementige Seitenfläche von P. Eine Facette von P ist eine maximale nicht leere echte Seitenfläche von P. Für jede Facette F von P gilt dim(f ) = dim(p) 1.

Lineare Programmierung Grundlagen der Polyedertheorie Polydertheorie Seitenflächen

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus wurde 1947 von George Dantzig entwickelt. Heute ist es möglich, lineare Programme mit mehreren Millionen Variablen und Nebenbedingungen zu lösen. Das kommerzielle ILOG CPLEX benötigt z. B. zur Lösung eines LPs mit 1.584.000 Variablen und 401.640 Nebenbedingungen 59,1 Sekunden (2.0 GHz P4). Es existieren worst-case Beispiele, bei denen der Simplexalgorithmus nicht in polynomieller Zeit läuft. Diese sind selten, Simplexalgorithmus ist einer der am weitesten verwendeten Algorithmen in der Praxis. Inzwischen gibt es auch Polynomialzeitalgorithmen z.b.: die Ellipsoidmethode.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus Beispiel max 3x 1 + 2x 2 x 1 + 3x 2 12 x 1 + x 2 8 2x 1 x 2 10 x 1, x 2 0

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus Schlupfvariablen max 3x 1 + 2x 2 x 1 + 3x 2 + x 3 = 12 x 1 + x 2 + x 4 = 8 2x 1 x 2 + x 5 = 10 x 1, x 2, x 3, x 4, x 5 0

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus Simplextableau max z = 3x 1 + 2x 2 x 3 = 12 + x 1 3x 2 x 4 = 8 x 1 x 2 x 5 = 10 2x 1 + x 2 0 x 1, x 2, x 3, x 4, x 5

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Strategie der Simplexmethode Beginne an einer Ecke des Lösungspolyeders. Wandere von dieser entlang einer Kante zu einer nächsten Ecke, die den Zielfunktionswert auf jeden Fall verbessert. Wiederhole Vorgang so lange noch Verbesserung möglich ist. Simplexalgorithmus D. h. wir wandern von einer Lösung x 1, x 2, x 3, x 4, x 5 zu einer neuen Lösung x 1, x 2, x 3, x 4, x 5, so dass gilt 3 x 1 + 2 x 2 > 3x 1 + 2x 2.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 3x 1 + 2x 2 x 3 = 12 + x 1 3x 2 x 4 = 8 x 1 x 2 x 5 = 10 2x 1 + x 2 0 x 1, x 2, x 3, x 4, x 5 Simplexalgorithmus Startlösung Startlösung : x 1 = x 2 = 0. Werte der Schlupfvariablen: x 3 = 12, x 4 = 8, x 5 = 10 Zielfunktionswert z = 0 Wie erhalten wir die nächste, bessere Lösung?

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 3x 1 + 2x 2 x 3 = 12 + x 1 3x 2 x 4 = 8 x 1 x 2 x 5 = 10 2x 1 + x 2 0 x 1, x 2, x 3, x 4, x 5 Simplexalgorithmus Nächste bessere Lösung x 1 auf 1 erhöhen, ergäbe z = 3. x 1 auf 2 erhöhen, ergäbe z = 6. x 1 auf 6 erhöhen, würde x 5 = 2 erfordern: nicht erlaubt. Wie weit dürfen wir x 1 erhöhen ohne eine unzulässige Lösung zu erhalten?

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 3x 1 + 2x 2 x 3 = 12 + x 1 3x 2 x 4 = 8 x 1 x 2 x 5 = 10 2x 1 + x 2 0 x 1, x 2, x 3, x 4, x 5 Simplexalgorithmus Nächste bessere Lösung Erste Gleichung ergibt keine Einschränkung für x 1. Zweite Gleichung ergibt x 1 8. Dritte Gleichung ergibt x 1 5. Wir erhöhen x 1 auf den größtmöglichen Wert: 5.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 3x 1 + 2x 2 x 3 = 12 + x 1 3x 2 x 4 = 8 x 1 x 2 x 5 = 10 2x 1 + x 2 0 x 1, x 2, x 3, x 4, x 5 Simplexalgorithmus Nächste bessere Lösung Wir betrachten diejenige Gleichung für die die Schranke erreicht wurde. Diese lautet nach Umformung: x 1 = 5 + 1 2 x 2 1 2 x 5

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus Erste Simplex-Iteration Ersetzen von x 1 in den anderen Gleichungen: z = 15 + 7 2 x 2 3 2 x 5 x 1 = 5 + 3 2 x 2 1 2 x 5 3 = 17 5 2 x 2 1 2 x 5 x 4 = 3 3 2 x 2 + 1 2 x 5 Lösungswerte einfach ablesen: x 1 = 5, x 2 = 0, x 3 = 17, x 4 = 3, x 5 = 0 mit z = 15.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 15 + 7 2 x 2 3 2 x 5 x 1 = 5 + 3 2 x 2 1 2 x 5 x 3 = 17 5 2 x 2 1 2 x 5 x 4 = 3 3 2 x 2 + 1 2 x 5 0 x 1, x 2, x 3, x 4, x 5 Simplexalgorithmus Zweite Iteration Nur eine Erhöhung von x 2 kann die Zielfunktion verbessern. Wie weit können wir x 2 nun erhöhen? Die Bedingung x 1 0 ergibt keine Einschränkung für x 2. Aus x 3 0 folgt x 2 34 5. Bedingung x 4 0 ergibt x 2 2. Eröhen von x 2 auf 2, x 4 wird 0.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus Zweite Iteration Wie vorher: System so umschreiben, dass sich alle positiven Variablen (die sogenannten Basisvariablen) auf der linken Seite befinden. Bei jedem Austausch wandert eine neue Variable, die vorher den Wert 0 hatte, in die Basis, während eine Variable, die vorher ungleich 0 war, den Wert 0 erhält, also zur Nicht-Basisvariable wird.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 15 + 7 2 x 2 3 2 x 5 x 1 = 5 + 3 2 x 2 1 2 x 5 x 3 = 17 5 2 x 2 1 2 x 5 x 4 = 3 3 2 x 2 + 1 2 x 5 0 x 1, x 2, x 3, x 4, x 5 Simplexalgorithmus Zweite Iteration Die dritte Gleichung gehört zur ausscheidenden Basisvariable, diese wird zu: x 2 = 2 2 3 x 4 + 1 3 x 5

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Simplexalgorithmus Zweite Simplex-Iteration Ersetzen von x 2 : z = 22 4 3 x 4 5 6 x 5 x 1 = 6 + 1 3 x 4 1 6 x 5 x 2 = 2 2 3 x 4 + 1 3 x 5 x 3 = 12 + 5 3 x 4 4 3 x 5 Nun können wir die Werte der Lösung wieder aus dem Tableau ablesen. Unsere neue Lösung sieht folgendermaßen aus: x 1 = 6, x 2 = 2, x 3 = 12, x 4 = 0, x 5 = 0, mit z = 22.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus max z = 22 4 3 x 4 5 6 x 5 x 1 = 6 + 1 3 x 4 1 6 x 5 x 2 = 2 2 3 x 4 + 1 3 x 5 x 3 = 12 + 5 3 x 4 4 3 x 5 Simplexalgorithmus Zweite Iteration Wieder Variable erhöhen, die zu einer Erhöhung der Zielfunktion führt? Jede Erhöhung einer Variable führt zu einer Verminderung des aktuellen Zielfunktionswertes. Die bisher erreichte Lösung mit Zielfunktionswert 22 ist optimal, da wir wissen, dass x 4 und x 5 nicht-negativ sein müssen.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus Definition Die Variablen die auf der linken Seite unserer Gleichungssysteme auftreten werden Basisvariablen genannt, während die anderen Nicht-Basisvariablen heißen. Die Lösungen, die wir durch Null setzen der Nicht-Basisvariablen erhalten heißen Basislösungen, die auch den Ecken des Polyeders entsprechen. Generell: Der Simplexalgorithmus beginnt mit einer zulässigen Basislösung, und wandert von einer Basislösung zur nächsten die einen gleichen oder besseren Zielfunktionswert aufweist.

Lineare Programmierung Der Simplexalgorithmus Einblick in den Simplexalgorithmus 6 5 x 1 + x 2 = 8 x 1 + 3x 2 = 12 4 3 2x 1 x 2 = 10 2 1 0 0 1 2 3 4 5 6 3x 1 + 2x 2 = 22

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Wir wollen nun den Simplexalgorithmus etwas allgemeiner beschreiben. Betrachten wir das folgende lineare Programm: max n c j x j j=1 n a ij x j b i i = 1,, m j=1 x j 0 j = 1,, n.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Wie schon im vorangehenden Beispiel führen wir die Schlupfvariablen ein: n max z = c j x j j=1 x n+i = b i n a ij x j i = 1,, m j=1 x j 0 j = 1,, n + m.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Der Simplexalgorithmus geht von einer Basislösung zur nächsten, bzw. von einem Tableau zum nächsten. Pivot: Schritt von einem Tableau zum nächsten: Eine Variable kommt zur Basis hinzu, eine andere verlässt die Basis. Um wieder auf ein Simplextableau zu kommen, muss das Gleichungssystem, so umgeformt werden, dass die Basisvariablen auf der linken Seite stehen.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Tableaus haben m Basisvariablen und n Nicht-Basisvariablen. N: Menge der Indizes der Nicht-Basisvariablen B: Menge der Indizes der Basisvariablen. Zu Beginn ist N = {1,, n} und B = {n + 1,, n + m} Im Verlauf des Simplexalgorithmus wird das Tableau folgendermaßen aussehen: n max z = z + c j x j j=1 n x i = b i a ij x j j=1 i B

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Hinzukommende Variable Die hinzukommende Variable wird so ausgewählt, dass ihre Erhöhung z verbessern würde. Es kommen also nur jene Variablen mit positiven reduzierten Kosten c k infrage. Formal sind das genau die x k mit k K = {j N c j > 0}. Wenn es keine solchen Variablen gibt ist die vorliegende Lösung bereits optimal.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Ausscheidende Variable Die Basisvariablen müssen positiv sein, wenn eine Variable so stark wie möglich erhöht wird muss deshalb eine andere Variable Null werden, sie scheidet aus der Basis aus. x k hinzukommende Variable, welche wir von 0 auf einen positiven Wert erhöhen, die Werte der Basisvariablen ändern sich: x i = b i a ik x k, i B. Wegen x i 0 muss also gelten: b i a ik x k 0, i B.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Ausscheidende Variable Umformulieren der Ungleichungen: 1 x k a ik b i, i B. Da wir x k so stark wie möglich erhöhen wollen, muss gelten: x k = ( max i B a ik b i ) 1. Ausscheidende Variable muss Variable x l sein mit l L = {i B a ik b i ist maximal}.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Unbeschränktheit Was passiert in undefinierten Fällen wenn a ik null ist, oder wenn a ik negativ ist? Dann ist das Problem unbeschränkt (b i 0 i gilt immer): x k kann beliebig erhöht werden, ohne dass irgendeine Basisvariable negativ wird.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Entartung Ein entartetes Tableau tritt auf, wenn ein b i Null wird. Falls a ik negativ ist, führt es schlimmstenfalls zu Unbeschränktheit. b i = 0, a ik 0, kann zu einem entarteten Pivot führen: x k bleibt Null und das nächste Tableau ist wieder entartet. Unter bestimmten Vorraussetzungen kann es vorkommen dass der Simplexalgorithmus nach einigen entarteten Pivots wieder zu einem bereits aufgetretenen Tableau zurückkehrt und in einem Zyklus hängen bleibt.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Allgemein Entartung Es gibt Pivotregeln mit denen das Auftreten von Zyklen vermieden werden kann. Eine davon ist Bland s Regel: Die Indizes der hinzukommenden Variable x k sowie der ausscheidenden Variable x l müssen so gewählt werden, dass sie die Minima der Indexmengen K und L sind.

Lineare Programmierung Der Simplexalgorithmus Simplexalgorithmus Weitere Aspekte Finden einer Startlösung Üblicherweise Zweiphasen-Simplex Erste Phase: Hilfsproblem wird gelöst um eine zulässige Startlösung zu finden. Zweite Phase: Simplexverfahren, wie wir es kennengelernt haben.

Kombinatorische Optimierung Übersicht 1 Einführung - Optimierungsprobleme Kombinatorische Optimierungsprobleme Lineare Optimierungsprobleme Ganzzahlige Lineare Optimierungsprobleme 2 Lineare Programmierung Geometrische Interpretation Dualität der Linearen Programmierung Grundlagen der Polyedertheorie Der Simplexalgorithmus 3 Kombinatorische Optimierung vs. Ganzzahlige Optimierung

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Enge Beziehung zwischen kombinatorischen und ganzzahligen linearen Optimierungsproblemen. Jedes kombinatorische Optimierungsproblem kann als ganzzahliges 0/1-Programm formuliert werden und umgekehrt. Wie funktioniert diese Umwandlung?

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Kombinatorisches Optimierungsproblem Grundmenge: endliche Menge E Zulässige Lösungen: I 2 E, Gewichtungsfunktion: c : E R Zielfunktion: für F I : c(f ) = e F c(e) Aufgabe: Finde I I mit c(i ) maximal bzw. minimal Binäres Lineares Programm (0/1-Programm) max c T x Ax b x {0, 1} n

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Charakteristischer Vektor E endliche Menge R E Vektorraum der x = (x e ) e E (Vektoren der Länge E ) Jedem Element e E ist Komponente x e von x zugeordnet Der charakteristische Vektor χ F einer Menge F E: { χ F 1 e F e = 0 e / F Umgekehrt jeder 0/1-Vektor x {0, 1} E ist charakteristischer Vektor einer Teilmenge F x von E: F x = {e E x e = 1}, χ Fx = x.

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Gegeben ein 0/1-Programm max{c T x Ax b, x {0, 1} n } Äquivalentes kombinatorisches Optimierungsproblem E := {1, 2,..., n} I := {F x E x {0, 1} E, Ax b} c(f x ) := c T χ Fx. E ist die Grundmenge, I die Menge der zulässigen Lösungen und c ist die Zielfunktion.

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Gegebeben kombinatorisches Optimierungsproblem mit E, I, c P F = conv{χ F R E F I } ist konvexe Hülle endlich vieler Vektoren, also ein Polytop. Ecken entsprechen genau den charakteristischen Vektoren der zulässigen Mengen F I Jede optimale Ecklösung des linearen Programms max{c T x x P F } ist der charakteristische Vektor einer Optimallösung des gegebenen kombinatorischen Optimierungsproblems (und umgekehrt).

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Haben ein kombinatorisches Optimierungsproblem in ein lineares Programm umformuliert. Problem: Um lineares Programm zu lösen, ist Formulierung mit Hilfe von Gleichungen und Ungleichungen nötig. Es existiert kein polynomieller Algorithmus, um eine solche Darstellung zu berechnen. Allgemein: Exponentiell viele Ungleichungen und Gleichungen. In der Praxis genügt es jedoch, nur einen kleinen Teil dieser Ungleichungen und Gleichungen zu kennen.

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Beispiel Minimum Spanning Tree (MST) Minimum Spanning Tree Problem, (MST) mit drei Punkten. Gesucht ist ein spannender Baum in K 3 minimalen Gewichts bei gegebenen nicht-negativen Distanzen d 1, d 2 und d 3. K 3 und zulässige Spannbäume auf drei Punkten:

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Beispiel Minimum Spanning Tree (MST) Wie kann man diese Menge (Spannbäume) mit Hilfe von Variablen und linearen Ungleichungen beschreiben? Drei Variablen (x 1, x 2 und x 3 ) für jede Kante genau eine. x j = 1 wenn Kante e j in der zulässigen Lösung (die einem spannenden Baum entspricht) enthalten ist. x j = 0 sonst. Welche Bedingungen müssen die Variablen erfüllen?

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Beispiel Minimum Spanning Tree (MST) Zulässige Lösungen haben nur 2 Kanten x 1 + x 2 + x 3 = 2 Schranken x j 0 und x j 1 für j = 1, 2, 3 Ganzzahligkeitsbedingungen x j Z für j = 1, 2, 3 GLP für das Minimum Spanning Tree Prolem: min d 1 x 1 + d 2 x 2 + d 3 x 3 x 1 + x 2 + x 3 = 2 x j {0, 1} für j = 1, 2, 3

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Lösungsraum des linearen Programms ist die markierte Fläche. Optimale Lösung wird an Ecken v 1, v 2 und v 3 angenommen, die ganzzahlig sind. Ganzzahligkeitsbedingungen können weggelassen werden, ohne dass sich die Lösung ändert.

Kombinatorische Optimierung Kombinatorische vs. Ganzzahlige Optimierung Beispiel Minimum Spanning Tree (MST) Gilt nicht mehr, für MST-Problem mit N > 3 Knoten Weitere Ungleichungen hinzunehmen Anzahl ausgewählter Kanten: N 1 Es dürfen keine Kreise entstehen (solche Kreisungleichungen sehen wir nächste Woche) Ganzzahligkeitsbedingungen

Teil II Lösungsverfahren für Ganzzahlige Optimierung

Exakte Verfahren für Ganzzahlige Optimierung

Branch-and-Bound Übersicht 4 Branch-and-Bound für Ganzzahlige Optimierung 5 Schnittebeneverfahren und Branch-and-Cut Schnittebenenverfahren Branch-and-Cut 6 Spaltengenerierung und Branch-and-Price Spaltengenerierung Branch-and-Price

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Branch-and-Bound: Allgemeine Klasse von Verfahren. Generell für eine weite Klasse von Problemen einsetzbar. Prinzipielle Idee ist einfach: Berechnung oberer und unterer Schranken. Zerlegung des Problems in Teilprobleme. Praktische Umsetzung schon schwieriger.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung LP-Relaxierung Die LP-Relaxierung für das IP z IP = max{cx : x P Z n } ist das LP und es gilt: z LP = max{cx : x P}, z LP z IP.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung LP-basiertes Branch-and-Bound Versuch gegebenes zu Problem lösen Relaxierungen: Obere Schranken Zulässige Lösungen: Untere Schranken Sind die Schranken gleich ist das Problem optimal gelöst Gelingt dies nicht: Zerlegen in Teilprobleme

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung LP-basiertes Branch-and-Bound Teilproblem wird gelöst durch : (a) Bestimmen einer optimalen Lösung oder (b) Feststellung der Unzulässigkeit oder (c) Bestimmung einer oberen Schranke, die nicht besser als die bisher beste gefundene Lösung ist oder (d) Zerlegung in weitere Teilprobleme. Bei endlicher Lösungsmenge und vernünftiger Aufteilungsstrategie führt das Verfahren zum Ziel.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Dem Ablauf des Verfahrens entspricht der Branch-and-Bound-Baum Jeder Knoten repräsentiert ein Teilproblem, die Wurzel das Ausgangsproblem Blätter des Baumes repräsentieren gelöste Probleme.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung LP-basiertes Branch-and-Bound 1: Startproblem S 0 mit Formulierung P 0 2: Liste nicht bearbeiteter Probleme L = {P 0 } 3: Globale Untere Schranke z =, Zähler k = 0 4: solange Liste L nicht leer { 5: Wähle Problem S i mit Formulierung P i aus Liste L 6: Löse LP-Relaxierung über P i, mit Lösung x LP i 7: Obere Schranke z i = LP-Zielfunktionswert 8: falls LP-Relaxierung unbeschränkt oder unlösbar dann { 9: z i = 10: } 11: Abschneiden oder Zerlegen 12: } 13: Beste zulässige Lösung x ist optimale Lösung von S.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Abschneiden oder Zerlegen 1: falls P i = dann { 2: Abschneiden wegen Unzulässigkeit (b) 3: } sonst falls z i z dann { 4: Abschneiden wegen Schranke (c) 5: } sonst falls x LP i Z n dann { 6: z = z i 7: Beste zulässige Lösung x = x LP i 8: Abschneiden durch optimale Lösung (a) 9: } sonst { 10: Zerlege: Füge Subprobleme S k+1 und S k+2 11: mit Formulierungen P k+1 und P k+2 zu Liste L hinzu (d) 12: k = k + 2 13: }

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Offene Fragen Wie Erzeugt man die Subprobleme? Wie wählt man das nächste Subproblem aus?

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Erzeugen der Subprobleme Suchraum wird üblicherweise in zwei Teile aufgeteilt. Im Schritt Zerlege ist eine Lösung xlp i mit zumindest einem fraktionalen Wert x j (xlp i ) gegeben. Wähle fraktionale Variable x j um Suchraum aufzuteilen. Die zwei neuen Subprobleme: P k+1 = P i {x : x j x j (xi LP ) } P k+2 = P i {x : x j x j (xi LP ) } Üblich: Verwendung der am meisten oder am weingsten fraktionalen Variable.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Auswahl des nächsten Subproblems Vorhandensein einer zulässigen Lösung: Möglicherweise verstärktes Beschneiden des Lösungsbaumes. Depth-First Search Strategie: Das nächste Subproblem ist immer direkter Nachfolger des aktuellen Problems. Andererseits: Gesamtanzahl der betrachteten Subprobleme minimieren. Best-First Search Strategie: Es wird immer Subproblem mit größter oberer Schranke ausgewählt.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound Wir betrachten das ganzzahlige Programm max 7x 1 3x 2 4x 3 x 1 + 2x 2 + 3x 3 x 4 = 8 3x 1 + x 2 + x 3 x 5 = 5 x 1, x 2, x 3, x 4, x 5 0 x 1, x 2, x 3, x 4, x 5 Z

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound Die LP-Relaxierung liefert optimale Lösung x 3 = x 4 = x 5 = 0, x 1 = 2 5, x 2 = 19 5 mit Zielfunktionswert c = 71 5 (= 14, 2). Wir erhalten als obere Schranke 15.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound Verzweigen nach Variable x 2 : P 1 = P 0 {x x 2 3} P 2 = P 0 {x x 2 4} P 1 : Nächstes Problem. Die Optimallösung der LP-Relaxierung LP 1 ist x 4 = x 5 = 0, x 1 = 1 2, x 2 = 2, x 3 = 1 2 und c = 29 2 (obere Schranke -15).

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound P 1 muss weiter zerlegt werden: P 3 = P 1 {x x 1 0} P 4 = P 1 {x x 1 1} Die aktiven Probleme sind: K = {P 2, P 3, P 4 }. Lösung von LP 3 liefert x 1 = x 5 = 0, x 2 = 3, x 3 = 2, x 4 = 4 und c = 17. P 3 ist gelöst bisher beste Lösung hat Wert 17.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound Lösung von LP 4 liefert: x 4 = 0, x 1 = 1, x 2 = 3, x 3 = 1 3, x 5 = 4 3 und c = 52 3 = 17 1 3. Obere Schranke ( 18) ist schlechter als die beste Lösung, damit ist auch P 4 gelöst.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound Lösen von P 2 : LP-Relaxierung hat Optimum x 3 = x 5 = 0, x 1 = 1 3, x 2 = 4, x 4 = 1 3 und c = 42 3. P 2 ist noch nicht gelöst, verzweigen: P 5 = P 2 {x x 1 0} P 6 = P 2 {x x 1 1}

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung Beispiel Branch-and-Bound Die Lösung von LP 5 liefert x 1 = x 3 = x 5 = 0, x 2 = 5, x 4 = 2 und c = 15. Dies ist eine neue beste Lösung mit Wert 15. P 5 ist gelöst. P 6 braucht nicht mehr betrachtet zu werden, da wegen LP 0 keine bessere Lösung als 15 möglich ist.

Branch-and-Bound Branch and Bound für Ganzzahlige Optimierung U = c = 15 x 2 3 P 1 P 0 U = c = 15 x 1 0 x 2 4 P 2 U = 17 c = 15 x 1 0 x 1 1 x 1 1 U = 17 P 3 c = 18 P 4 U = 15 P 5 c = 15 P 6

Schnittebeneverfahren und B&C Übersicht 4 Branch-and-Bound für Ganzzahlige Optimierung 5 Schnittebeneverfahren und Branch-and-Cut Schnittebenenverfahren Branch-and-Cut 6 Spaltengenerierung und Branch-and-Price Spaltengenerierung Branch-and-Price

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenverfahren Schnittebenenverfahren gehören zu den erfolgreichsten Verfahren zur Lösung ganzzahliger Optimierungsprobleme. Vollständige Beschreibung des Polytops eines ILPs durch Ungleichungen oft unmöglich. Meist genügt es, nur einen kleinen Teil der Ungleichungen zu benützen.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenverfahren Grundidee Beginnne mit einer kleinen Teilmenge der Restriktionen und löse das resultierende LP. Prüfe ob Lösung für alle Restriktionen zulässig ist. Falls Ja : optimal Andernfalls finde Restriktion die von Lösung verletzt ist und füge sie zum LP hinzu. Iteriere bis keine Restriktionen mehr hinzugefügt werden müssen.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenverfahren

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenverfahren 1: Starte mit einer Teilmenge der Restriktionen (z.b. nur den trivialen 0 x 1). 2: Löse LP, sei x die gefundene Optimallösung. 3: Gibt es weggelassene Restriktionen a T x a 0, so dass a T x > a 0, a 0 R? 4: falls nein dann { 5: Stopp (LP gelöst). 6: } sonst { 7: Bestimme solche, füge sie zu LP hinzu und gehe zu Zeile 2. 8: }

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Die in Zeilen 3 8 zu lösende Aufgabe heißt Separationsproblem. Definition (Separationsproblem) Gegeben ist ein Punkt x R E und ein Polytop P. Bestimme, ob x P, und falls x P, finde eine Restriktion a T x a 0, die für alle Punkte x P gültig ist, jedoch für den Punkt x verletzt ist, d.h. für alle Punkte x P muss gelten a T x a 0, und für x muss gelten a T x > a 0.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Theorem (Grötschel, Lovasz, Schrijver 1981) Wir können eine lineare Zielfunktion über einem Polytop genau dann in polynomieller Zeit lösen, wenn wir das dazugehörige Separationsproblem in polynomieller Zeit lösen können.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem Gegeben: gerichteter Graph D = (V, A) mit Bogengewichten c uv R + (uv) A Gesucht: Teilgraph maximalen Gewichts, der keine gerichteten Kreise enthält. Das Acyclic Subgraph Problem ist i.a. NP-schwierig.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem ILP-Formulierung Variablen x uv {0, 1} für alle Bögen (uv) des Graphen Ziel: max c uv x uv uv A Es dürfen keine gerichteten Kreise auftreten: x uv C 1 gerichteten Kreise C in D uv C

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem ILP-Formulierung max c uv x uv uv A uv C x uv C 1 gerichteten Kreise C in D 0 x uv 1 (u, v) A x uv Z (u, v) A Problem?

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem Exponentiell viele Kreise exponentiell viele Ungleichungen. Wegen der Äquivalenz von Separiereung und Optimierung, kann LP-Relaxierung in polynomieller Zeit gelöst werden. Zu Beginn: Wir lösen LP ohne Kreisungleichungen. Optimale Lösung des LPs x. Wie lösen wir für x und für die Kreisungleichungen das Separationsproblem?

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem Wir schreiben die Ungleichungen zunächst um: x uv C 1 C x uv 1 (1 x uv ) 1 uv C uv C uv C Unser Ziel ist es, einen Kreis C zu finden, dessen Ungleichung (1 x uv ) 1 am Punkt x verletzt ist. uv C

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem D.h. wir wollen einen Kreis finden, für den gilt (1 x uv ) < 1. Gleichbedeutend mit: uv C Ersetze Gewichte x uv durch neue Gewichte 1 x uv. Suche nach Kreis mit Bogengewichtssumme kleiner als 1. Suchen nach einem kürzesten Kreis in einem gewichteten gerichteten Graphen.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem Problem wird in A Teilprobleme aufgeteilt: Suche kürzesten Kreis der eine bestimmte Kante f A enthält. Für jede Kante f = (i, j) A: 1 Berechne kürzesten (j, i)-weg in D bezüglich der neuen Kantenkosten 1 x uv für alle Kanten (u, v) A. 2 Falls Weglänge plus Gewicht (1 x ij ) der Kante f = (i, j) kleiner 1 ist, haben wir eine verletzte Ungleichung gefunden. Das Separationsproblem ist gelöst. 3 Sonst: Es existiert keine verletzte Kreis-Ungleichung die f enthält, Separationsproblem ist gelöst.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebeneverfahren Acyclic Subgraph Problem Sobald eine verletzte Kreisungleichung gefunden wurde, fügen wir diese zu unserem LP hinzu und re-optimieren. Wir erhalten eine neue andere Lösung, für die wir wiederum das Separationsproblem lösen müssen. Dies machen wir solange, bis keine verletzten Ungleichungen mehr gefunden werden. Das assoziierte LP ist gelöst. Wir haben also das relaxierte Acyclic Subgraph LP in polynomieller Zeit gelöst, obwohl es exponentiell viele Ungleichungen besitzt.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenenverfahren Travelling Salesperson Problem Gegeben: Vollständiger Graph K n = (V, E) mit Kantengewichten c R E. Gesucht: Rundtour (bzw. Tour oder Hamiltonkreis) minimalen Gewichts. Zulässigen Lösungen: Menge aller Touren in K n. Variablen: Kanten in K n. Jeder Tour entspricht ein 0/1-Vektor x R E und umgekehrt.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenenverfahren Travelling Salesperson Problem ILP-Formulierung Sei δ(v) die Menge aller zu v inzidenten Kanten und x(δ(v)) die Summe aller Werte x e, deren Kanten sich in δ(v) befinden. Touren besuchen jeden Knoten genau einmal: Anzahl der zu v inzidenten Kanten in einer Tour ist genau 2. Daraus folgen die Grad-Gleichungen: x(δ(v)) = 2 für alle v V Diese Gleichungen alleine genügen noch nicht, um Touren zu charakterisieren.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenenverfahren Travelling Salesperson Problem ILP-Formulierung Eine Tour ist zusammenhängend. Sei beliebige Tour T, betrachte Knotenmenge W V und alle Kanten, die in W beginnen und außerhalb von W enden: Dann müssen davon mindestens zwei Kanten Teil von T sein. Dies führt zu Subtour-Eliminations-Ungleichungen: x(δ(w )) 2 für alle W V, W, W V Ein Schnitt δ(w ) einer Knotenmenge W V bezeichnet alle Kanten, die einen Endknoten in W, und einen Endknoten außerhalb von W besitzen. x(δ(w )) bezeichnet die Summe aller Werte x e, deren Kanten sich im Schnitt δ(w ) befinden.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenenverfahren Travelling Salesperson Problem ILP-Formulierung min c T x x(δ(v)) = 2 für alle v V x(δ(w )) 2 für alle W V, W, W V 0 x e 1 für alle e E x e {0, 1} für alle e E Problem?

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenenverfahren Travelling Salesperson Problem Anzahl der Grad-Gleichungen ist genau n. Anzahl der Subtour-Eliminations-Ungleichungen exponentiell (denn es gibt eine Ungleichung für jede Teilmenge W von V ). Wir können aber das Separationsproblem für diese Ungleichungen lösen. Wir lassen die Subtour-Eliminations-Ungleichungen weg und lösen das erhaltene LP. Optimale Lösung des LPs: x.

Schnittebeneverfahren und B&C Schnittebenenverfahren Schnittebenenverfahren Travelling Salesperson Problem Separationsproblem Berechnen eines minimalen Schnitts in dem Graphen mit den Kantengewichten x e (für alle Kanten e E) Dieser gibt Menge W V und Wert x(δ(w )) an. Falls x(δ(w )) < 2: verletzte Ungleichung gefunden. Andernfalls kann keine Menge W mit x(δ(w )) < 2 existieren. Separationsproblem trotz exponentiell vieler Subtour-Eliminations-Ungleichungen gelöst.

Schnittebeneverfahren und B&C Branch-and-Cut Branch-and-Cut Schnittebenenverfahren liefert nur Lösung für LP. Ganzzahlige Lösungen: Branch-and-Bound mit Schnittebeneverfahren kombinieren: Branch-and-Cut Die einzelnen Teilprobleme (LP-Relaxierungen) werden mittels Schnittebenenverfahren gelöst. Wenn man dort nicht mehr weiterkommt teilt man die Probleme auf. Jedes der neuen Teilprobleme wird wieder mit dem Schnittebenenverfahren gelöst.

Schnittebeneverfahren und B&C Branch-and-Cut Branch-and-Cut Idealerweise gibt es bei Branch-and-Cut Verfahren einen relativ kleinen Branch-and-Bound Baum, während dieser bei Branch-and-Bound typischerweise groß ist. Der Erfolg von Branch-and-Cut Algorithmen beruht auf 1 der Verwendung guter LP-Relaxierungen 2 schnellen Separationsalgorithmen 3 zahlreichen strategischen und algorithmischen Tricks

Spaltengenerierung und B&P Übersicht 4 Branch-and-Bound für Ganzzahlige Optimierung 5 Schnittebeneverfahren und Branch-and-Cut Schnittebenenverfahren Branch-and-Cut 6 Spaltengenerierung und Branch-and-Price Spaltengenerierung Branch-and-Price

Spaltengenerierung und B&P Spaltengenerierung Spaltengenerierung Im Gegensatz zu Schnittebenenverfahren, geht es hier um Formulierungen mit einer enormen Anzahl von Variablen und einer akzeptablen Anzahl von Restriktionen. Wir werden hier keine Schnittebenen, sondern Variablen erzeugen. Da jeder Variable eine Spalte der Koeffizientenmatrix entspricht, spricht man von Spaltengenerierung.

Spaltengenerierung und B&P Spaltengenerierung Spaltengenerierung Grundidee der Spaltengenerierung stammt aus Simplexalgorithmus. Immer nur Variablen mit positiven reduzierten Kosten kommen neu in die Basis. Es ist ausreichend mit kleiner Menge der Variablen zu beginnen. Solange man solche Variablen findet: eine hinzufügen und wieder lösen.

Spaltengenerierung und B&P Spaltengenerierung Spaltengenerierung Subproblem: Suchen einer Variable mit maximalen reduzierten Kosten (Pricing-Problem). Wenn eine Variable/Spalte mit positiven reduzierten Kosten gefunden werden konnte, wird sie zum Hauptproblem hinzugefügt und als hinzukommende Variable im Simplexalgorithmus verwendet. Dies wird solange wiederholt bis keine solche Variable mit positiven reduzierten Kosten mehr existiert und somit der Simplexalgorithmus eine optimale Lösung gefunden hat.

Spaltengenerierung und B&P Spaltengenerierung Spaltengenerierung 1: Starte mit einer Teilmenge der Variablen (z.b. nur Variablen einer zulässigen Lösung). 2: Löse LP, sei x die gefundene Optimallösung. 3: Entscheide, ob es eine Variable mit reduzierten Kosten c j mit c j > 0 gibt. 4: falls nein dann { 5: Stopp (LP gelöst). 6: } sonst { 7: Bestimme Variable j mit c j > 0, füge sie zu LP hinzu und gehe zu Zeile 2. 8: }

Spaltengenerierung und B&P Spaltengenerierung Spaltengenerierung Wo tauchen solche Probleme überhaupt auf? Warum braucht man Formulierungen mit exponentiell vielen Variablen? Viele Probleme in der Praxis: Nur mit Spaltengenerierung in akzeptabler Zeit lösbar Crew Scheduling, Vehicle Routing, Cutting and Packing... Jeder Variable würde z.b. eine gültige Route entsprechen. Formulierungen mit exponentiell vielen Variablen oft bessere Schranken als andere, kompakte Formulierungen. Dantzig-Wolfe Dekomposition: Aus einem kompakten ILP eines mit exponentiell vielen Variablen zu erzeugen, welches eine bessere Schranke als das Original aufweist.