Kapitel 9 Lösung von großen 0-1 Problemen mithilfe der Lagrange Relaxation - Der Wedelin Algorithmus Seminar Ganzzahlige Optimierung, WS 2006/07 Gliederung 1. Einführung 2. Das binäre ganzzahlige Problem (BIP) 3. Der Algorithmus a) ohne Approximation b) mit Approximation 4. LP Interpretation 5. Greedy Algorithmus Interpretation 6. Rechnergestützte Ergebnisse für SCPs 9.1 Einführung In der Ganzzahligen Optimierung behandelt man unter anderem die binären ganzzahligen Probleme, die weitaus schwerer zu lösen sind als gewöhnliche lineare Programme. Bekannte Beispiele sind das Traveling Salesman Problem oder das Assignment Problem. In diesen sind die Entscheidungsvariablen x i B = {0, 1}. Auch bei den Problemen, bei welchen der Wedelin Algorithmus angewandt wird, ist dies der Fall. Der hier vorgestellte Optimierer ist Ergebnis eines akademischen Forschungsprojektes. Der unter der Leitung von Dag Wedelin entwickelte und nach ihm benannte Wedelin - Algorithmus zielt auf sehr große 0-1-Probleme ab, die im Bereich des Airline Crew Scheduling auftreten. In Zusammenarbeit mit 1
der Firma CARMEN SYSTEMS AB mit Standort Göteborg (Schweden) wurde dieses spezielle Anwendungsproblem studiert. Dieses Unternehmen hat als primäres Geschäftsfeld die Entwicklung und den Verkauf von Optimierungssoftware für die Transportindustrie. Die Gesellschaft, die am 14.06.2006 von der BOEING Fluggesellschaft aufgekauft wurde, entwickelt Lösungen für den optimalen Einsatz von Besatzung u. Fahrzeugen und verkauft diese an viele große Europäische Fluggesellschaften (z.b. Lufthansa, SAS, Alitalia). 9.2 Das binäre ganzzahlige Problem (BIP) Bevor der Algorithmus vorgestellt wird, definieren wir das (BIP). Es lautet wie folgt: min c T x s.t. Ax = b x j B Dieses Problem ist NP-schwer. Probleme wie Set Partitioning (Ax = 1), Set Covering (Ax 1)und Set Packing Probleme (Ax 1) sind einige bekannte dieser Klasse. Handhabung von Ungleichungsrestriktionen Ungleichungen können durch Hinzufügen von binären Schlupfvariablen zu Null Kosten durch Gleichungen ersetzt werden. Beispiel 1: Die NB x 1 + x 2 + x 3 2 wird ersetzt durch: x 1 + x 2 + x 3 + x 4 + x 5 = 2. (Einführung von x 4, x 5 {0, 1}) Beispiel 2: Die NB x 1 + x 2 + x 3 2 wird analog ersetzt durch: x 1 + x 2 + x 3 + x 4 + x 5 + x 6 = 5. Die gewöhnlichen Lösungsmethoden für BIPs basieren auf der LP Relaxation (d.h. man fordert nur noch x j [0; 1] (LP)) und Branch and Bound Strategien, die fraktionale Werte beseitigen und am Ende eine echt ganzzahlige Lösung produzieren sollen. Jedoch versagt dieser Ansatz oft für sehr große Probleme. Andere Methoden wie Greedy Heuristiken liefern hierfür oft zulässige ganzzahlige Lösungen, allerdings von schlechter Qualität. Hauptziele des Wedelin-Algorithmus: 1. Lösung von sehr großen 0, 1 Problemen in einer direkteren Art 2. Stabile Methode zum Auffinden zulässiger ganzzahliger Lösungen höchstmöglicher Qualität 2
9.3 Der Algorithmus Der Algorithmus besteht aus 2 interagierenden Komponenten: 1. Einfacher duale Koordinaten-Suchalgorithmus zum Auffinden einer 0-1 Lösung für (BIP) durch Heranziehen der Lagrangeschen Relaxation 2. Approximationsschema, welches den Kostenvektor c der Zielfunktion so wenig wie möglich manipuliert, um Konvergenz zu ermöglichen und um eine eindeutige binäre Lösung für das relaxierte Problem zu bekommen. Die Höhe der Manipulation bestimmt der Approximationsparameter κ. min {0 x 1} c T x + y T (b Ax) (R) Dies ist die Lagrange Relaxation für alle y, denn jedes für (BIP) zulässige x ist auch zulässig für (R), mit selbem Zielfunktionswert. Die Idee besteht darin, einen Vektor y zu finden, so dass die Lösung von (R) zulässig ist auch für (BIP). Da beide Zielwerte gleich sind, ist diese Lösung dann auch optimal für (BIP). Lösung von (R): Durch Definition von c := c A T y ist die Lösung für (R): 0 falls c j > 0 x j = z [0, 1] falls c j = 0 1 falls c j < 0 Falls c in jeder Koordinate nicht Null ist, ist die Lösung binär und eindeutig! Wenn jedoch irgendein c j = 0, dann wird das Auffinden einer zulässigen Lösung schwierig. Daher muss man ein y finden, so dass c 0. Einführung einer Approximation nötig zum Finden des gewünschten y! 9.3.1 ohne Approximation Beim Durchlaufen aller NB wählt man das zugehörige y i so, dass die Lösung x für (R) Nebenbedingung i : A i x = b i erfüllt. Voraussetzung: Alle Matrixeinträge a ij {0, 1} und b ganzzahlig. Berechnung der y i wie folgt: Dabei sei i Zeilenindex, j Spaltenindex der Matrix A. Für jedes i definiere das Array c i := {c j a ij = 1} und setze r i := c i +y i (Aufheben des Effekts eines vorhergehenden Wertes für y i ) Wähle r als b i. niedrigstes Element von r i, r + als b i + 1. niedrigstes 3
Setze als neuen Wert für y i : y i := r +r + 2 Festzuhalten bleibt, dass nach dem Update von c exakt b i der Einträge von c i negativ sind, falls r +, r 0. Üblich konvergiert c gegen einen Punkt, an dem viele Elemente 0 sind, und keine binäre Lösung gefunden wird. = Ausweg: 9.3.2! 9.3.2 mit Approximation Idee ist es, c so wenig wie möglich zu stören, damit dann eine ganzzahlige Lösung für x mithilfe der Koordinatensuche gefunden wird. Die Höhe der Störung wird durch Approximationsparameter κ festgesetzt. Im Unterschied zu a) werden nun für jede NB 2 verschiedene Werte y i + und yi geführt. Eine kleine Konstante δ wird gebraucht, um zu gewährleisten, dass die Elemente von c nie Null sind. Ein Hilfsarray s i derselben Länge wie r i wird benötigt. Iteration für eine NB beinhaltet folgende Schritte: 1. r i := c i s i (Rückgängigmachung vorheriger Iteration) 2. r := b i. niedrigstes Element von r i r + := b i + 1. niedrigstes Element von r i yi := y i + κ 1 κ (r+ r ) + δ y i + := y i κ 1 κ (r+ r ) δ { s i yi falls rj i j := r y i + falls rj i r+ 3. c i := r i + s i Die Iteration durchläuft wiederholt zyklisch die Nebenbedingungen. Bemerkung: Paralleliteration von NB, die keine gemeinsamen Variablen besitzen, möglich. Einige Anmerkungen zur schwierigen Wahl von κ, δ: Wahl von κ kritisch: 1. Möglichkeit: Starte mit κ = 0 und erhöhe langsam bis Konvergenz auftritt = Leider zu langsam für Praxis! Besser ist ein relativ schneller Durchlauf (Anzeige Konvergenzpunkt) und danach ein 2. Durchlauf, der in einem relativ kleinen Intervall unterhalb des gegebenen Konv.punktes sehr langsam durchläuft = genauere Suche in kritischer Region! Wert δ sollte größtmöglich gewählt werden ohne jedoch die erhaltenen Lösungen zu verschlechtern. = niedriger Konvergenzpunkt für κ! 4
9.4 LP Interpretation (R) ist ebenso eine Relaxation von (LP), die sogenannte Lagrange Relaxation. Daher kann man den Algorithmus ohne Approximation (d.h. κ = 0) im vertrauten Rahmenwerk von Linearer Programmierung verstehen. Die Koordinatensuche wird von einem dualen Standpunkt betrachtet. Es ist bekannt, dass das Problem (LP) und seine Relaxation (R) verwandt sind zu dem unbeschränkten nichtlinearen Problem der Form max f(y) y mit f(y) = yb + min {0 x 1} (c ya)x Dies ist das Lagrangesches Dualproblem mit alleiniger Betrachtung der NB Ax=b, welche in Zielfunktion eingeht. Gewöhnlicherweise werden alle NB mit Ausnahme von x 0 relaxiert. Bemerkung: f(y) ist das Minimum einer Menge von linearen Funktionen in y, eine für jede Variablenbelegung von x. Folgerung: f(y) ist eine stückweise lineare und konkave (d.h. -f konvex) Funktion. Es wird nun gezeigt, dass die Methode der Koordinatensuche in Gliederungspunkt 3a) genau dem Problem der Maximierung von f(y) entspricht. Die partiellen Ableitungen für jedes y lauten (falls existent): f y i = b i a i x R (9.1) Dabei ist x R die Lösung von (R) für dieses y. Erinnert sei daran, dass in der Koordinatensuche y i immer so gewählt wird, dass die Lösung von (R) a i x = b i erfüllt. = f y i = 0. Da f(y) konkav, ist die notwendige Bedingung auch hinreichend und man kann schließen, dass dieser Punkt auch das Maximum entlang der y i darstellt. 9.5 Greedy Algorithmus Interpretation Geht der Approximationsparameter κ gegen den Wert 1, dann ist der zweite Summand der yi, y+ i Formel {+, } und jeder Wert von c ist auf + oder gesetzt. Die Erfüllung der Restriktionen setzt sodann die Kostenstruktur des Problems vollständig außer Kraft. 5
Der Algorithmus verhält sich wie ein Greedy Algorithmus. Greedy-Algorithmen ( Gierige Algorithmen ) bilden eine spezielle Klasse von Algorithmen, wie sie in der Informatik auftreten. Sie zeichnen sich dadurch aus, dass sie schrittweise denjenigen Folgezustand auswählen, der zum Zeitpunkt der Wahl den größten Gewinn bzw. das beste Ergebnis verspricht (z.b. Gradientenverfahren). Anmerk.: Sind meist schnell, lösen viele Probleme aber nicht optimal. Hier lautet er speziell wie folgt: Jede Variable x i hat 3 Möglichkeiten: 0,1 oder unknown. Start: Alle x i werden auf Status unknown gesetzt. k := 1 Betrachte die k.-te NB A k x = b i : Setze jedes x i {x i x i = unknown} auf 0 oder 1, so dass NB erfüllt. (Zuweisung abh. von Werten des Kostenvektors c) Ausnahme: Verändern einer gesetzten Variablen x i nur erlaubt, wenn die unknown Variablen nicht ausreichen, um NB zu erfüllen. Setze k := k + 1. Generell kann dieser Algorithmus im Finden einer 0-1 Lösung x fehlschlagen. Werden jedoch die Gleichungsnebenbedingungen systematisch durch oder ersetzt, ist Konvergenz garantiert nach genau einem Durchlauf durch die NB. Grund: Alte Zuweisungen werden nur in eine Richtung überschrieben, z.b. von 0 zu 1 bei. Es wird keine NB mehr verletzt, nachdem sie durchlaufen wurde, und eine suboptimale Lösung ist sehr schnell gefunden. 9.6 Rechnergestützte Ergebnisse für Set Covering Probleme Der vorgestellte Algorithmus wurde besonders an großen Set Covering Problemen (SCP), die aus der Anwendung des Airline Crew Scheduling stammen, getestet. Daher wird nun zuerst dass Airline Crew Scheduling Problem eingeführt: Das Airline Crew Scheduling Problem Annahme: Ein Zeitplan mit allen Flugabschnitten ist gegeben Ein Flugabschnitt ist ein gegebener Flug zu einer gegebenen Zeit Zu diesen Flugabschnitten müssen Crews zugewiesen werden, so dass jede Crew einen durchführbaren Flugplan erhält und diese Lösung möglichst kostengünstig ist 6
Die Zuweisung von Personen zu den Flugbesatzungen wird hier nicht mit betrachtet Jede Crew hat einen Heimatflughafen, ein Flugplan besteht aus einer Sequenz von Flugabschnitten mit Ausgangs- und Endpunkt Heimatflughafen (dies nennt man Pairing, dt: Paarung) Wirkende Einflussgrößen auf Pairing: Gesamtzeitdauer, max. Flugzeit pro Tag etc. Gewöhnliche Lösung des Problems in 2 Schritten: 1. Berechnung einer großen Anzahl von erlaubten Pairings und Berechnung der Kosten für jedes Pairing unter Benutzung einer vorher gefundenen Lösung als Leitfaden 2. Auswahl einer Teilmenge der erzeugten Pairings, so dass jeder Flug im Flugplan in mind. einem der ausgewählten Pairings enthalten ist. Dies sollte so erfolgen, dass die Totalkosten (Summe der Einzelkosten für die individuellen Pairings) minimiert werden. Eine Crew kann auch bei einer anderen Flugbesatzung als Passagier mitfliegen, falls kostengünstiger. Dieses Problem ist also ein (SCP) der Form: min c T x s.t. Ax 1 x j B Dabei: A 0-1 Matrix. Zeile entspricht Flugabschnitt, Spalte dem Pairing. Typisches Problem: 50 4000 Flüge, 10 3 10 6 Pairings und 5 10 Nichtnulleinträge pro Spalte der Matrix A Der Algorithmus wurde vergleichsweise gegenüber dem CPLEX-System für lineare und ganzzahlige Optimierung getestet. Alle Ergebnisse wurden mit Standardparametereinstellungen erzeugt auf einem HP720 Rechner. Abschließendes Studienfazit: Für größer werdende Probleme ist die Gesamtlaufzeit des Wedelin- Algorithmus wesentlich geringer als die von CPLEX zum Auffinden einer LP Lösung CPLEX verbraucht mehr Arbeitsspeicher während des Rechenvorgangs Die Qualität der Lösungen kann sich im Vergleich zu den bewährten Methoden, die auf Lin. Programmierung und Branch & Bound basieren (CPLEX) sehen lassen. Die nachfolgenden beiden Tabellen verdeutlichen die durchgeführten Tests. 7
Abbildung 9.1: Größe des Problems vor und nach der Vorverarbeitung Abbildung 9.2: Testergebnisse (Zielfunktionswert, Zeit) für echte SCPs 8
Literaturverzeichnis [1] An algorithm for large scale 0-1 integer programming with application to airline crew scheduling, Annals of Operations Research 57, S. 283-301, Dag Wedelin, Dezember 1994 [2] The design of an 0-1 optimizer and its application in the Carmen System, European Journal of Operations Research 87, S.722-730, Dag Wedelin, Juli 1995 [3] Integer Programming -Polyhedra and Algorithms, Krumke, S. O., 2006 [4] www.boeing.de/2006/060614.html, Stand:04.01.2007 Vortragender: Christian Spieler 9