Branch-and-Bound Beispiel mit Musterlösung
Branch-and-Bound Beispiel mit Musterlösung
Branch-and-Bound Beispiel mit Musterlösung
Verwandeln Sie Ihre PDFs in ePaper und steigern Sie Ihre Umsätze!
Nutzen Sie SEO-optimierte ePaper, starke Backlinks und multimediale Inhalte, um Ihre Produkte professionell zu präsentieren und Ihre Reichweite signifikant zu maximieren.
<strong>Branch</strong>-<strong>and</strong>-<strong>Bound</strong><br />
<strong>Beispiel</strong> <strong>mit</strong> Musterlösung<br />
Stefan Lämmer<br />
27. Juli 2004<br />
Aufgabenstellung<br />
Maximieren Sie<br />
unter den Nebenbedingungen<br />
F = x 1 + 2x 2 (1)<br />
3x 1 + 5x 2 ≤ 15 (2)<br />
x 2 ≤ 2 (3)<br />
x 1 , x 2 ∈ N 0 (4)<br />
Verwenden Sie den <strong>Branch</strong>-<strong>and</strong>-<strong>Bound</strong> Algorithmus. Die relaxierten Probleme P ′<br />
können Sie grafisch lösen.<br />
1
Vorbetrachtung<br />
Knackpunkte<br />
Ins Auge sticht die Ganzzahligkeitsbedingung (4), welche die Suche nach dem Optimum<br />
erschwert. Machen wir uns zunächst vier Punkte klar:<br />
1. Ohne die Ganzzahligkeitsbedingung müssen die Optima in den Eckpunkten des<br />
zulässigen Bereichs liegen, und wir bräuchten nur dort suchen. Mit der Ganzzahligkeitsbedingung<br />
dagegen können die Optima auch wo<strong>and</strong>ers liegen, sogar weit<br />
von den Eckpunkten entfernt. Und weil wir nicht wissen, wo wir zu suchen haben<br />
(und auch nicht alles durchprobieren wollen), verwenden wir diesen Algorithmus.<br />
2. Beim Simplex-Algorithmus sieht man dem Tableau sofort an, ob man die optimale<br />
Lösung gefunden hat. Das ist hier beim <strong>Branch</strong>-<strong>and</strong>-<strong>Bound</strong> <strong>and</strong>ers. Auch<br />
wenn wir das Optimum in der H<strong>and</strong> halten, können wir nicht entscheiden, ob<br />
es auch wirklich eins ist. Wir wissen es erst, wenn wir gezeigt haben, dass alle<br />
<strong>and</strong>eren Lösungen schlechter sind. Das Ziel und die Kunst des Algorithmus liegt<br />
darin, ganze Bereiche es Lösungsraums auszuschließen.<br />
3. Im Verlauf des Algorithmus wird der Lösungsraum in Teilbereiche unterteilt.<br />
Jeder dieser Teilbereiche ist ein Optimierungsproblem für sich. Der Algorithmus<br />
macht keinen Unterschied, ob wir das Ursprungsproblem oder ein tiefer liegendes<br />
Teilproblem beh<strong>and</strong>eln. Von jedem Teilproblem wollen wir wissen, ob es dort ein<br />
Optimum gibt, ob es besser ist als was wir wo<strong>and</strong>ers schon gefunden haben und<br />
wo es liegt. Das nennen wir im Weiteren “ausloten”.<br />
4. Die Ganzzahligkeitsbedingung schränkt den Lösungsraum ein. Als Lösung kommen<br />
nur noch wenige Punkte aus Simplex-Bereich, der durch (2), (3) und die<br />
Koordinatenachsen begrenzt ist, in Frage. Deshalb wissen wir schon jetzt: Mit<br />
der Ganzzahligkeitsbedingung können wir keine bessere Lösung finden als wenn<br />
es sie nicht gäbe – im Besten Fall finden wir das gleiche Optimum. Auf dieser<br />
Erkenntnis beruhen Fall a und Fall b (Siehe Skript).<br />
Bezeichner<br />
Folgende Bezeichner benutzen wir im Laufe des Algorithmus:<br />
P i . . . Teilproblem i. Das Ursprungsproblem ist P 0 .<br />
P ′ i<br />
. . . relaxiertes Teilproblem i. Ein Teilproblem nennen wir relaxiert, wenn wir die<br />
Ganzzahligkeitsbedingung (4) außer Acht lassen. Diese Fälle können wir <strong>mit</strong><br />
bekannten Werkzeugen, z.B. den Simplex-Algorithmus oder grafisch, bearbeiten.<br />
F i . . . obere Schranke von P i . Diese ist das Optimum des relaxierten Teilproblems P ′ i .<br />
Wir sprechen deshalb von ‘oberer Schranke’, weil das Optimum von P i niemals<br />
besser sein kann als das Optimum von P ′ i .<br />
F . . . untere Schranke von P 0 . Das ist die beste bisher gefundene zulässige Lösung<br />
von P 0 . Etwas schlechteres brauchen wir nicht zu akzeptieren. D.h., stoßen wir<br />
während der Iterationen auf Lösungsbereiche, deren obere Schranke F i nicht<br />
besser ist als F , brauchen wir dort gar nicht mehr weiter zu suchen. Ist am Ende<br />
der gesamte Lösungsbereich untersucht, ist F das gesuchte Optimum.<br />
2
Algorithmus<br />
Den Ablauf des Algorithmus zeigt Abbildung 1. Blöcke stehen für Aktionen, Rauten<br />
für Entscheidungen. Mit jeder Verzweigung entstehen zwei Teilprobleme, die wir aber<br />
nicht gleichzeitig abarbeiten können. Deshalb sehen wir eine Liste vor, in der wir noch<br />
offene Probleme zwischenspeichern. Sind alle abgearbeitet, sind wir fertig.<br />
Abbildung 1: Ablaufplan des <strong>Branch</strong>-<strong>and</strong>-<strong>Bound</strong> Algorithmus.<br />
3
Lösung<br />
Ursprungsproblem P 0<br />
Die Nebenbedingungen (2), (3) und die Koordinatenachsen stecken einen konvexen Bereich<br />
in der x 1 -x 2 -Ebene ab. In diesem Bereich nennen wir genau die Punkte ‘zulässig’,<br />
die ganzzahlige Koordinaten haben, siehe Abbildung (2).<br />
Abbildung 2: Die gelbe Fläche ist der zulässige Bereich des relaxierten Problems P ′ 0.<br />
Die zulässigen Punkte (<strong>mit</strong> ganzzahligen Koordinaten) sind blau markiert.<br />
Weiterhin weist eine Zielfunktion (1) jedem Punkt (x 1 , x 2 ) in der Ebene einen Wert<br />
F zu. Interpretiert man F als die dritte räumliche Dimension, kann man sich ein<br />
Dach vorstellen, dessen Höhe über dem Punkt (x 1 , x 2 ) dem Zielfunktionswert F (x 1 , x 2 )<br />
entspricht. Ist, wie hier, die Zielfunktion linear, ist das Dach eine Ebene. Abbildung 3<br />
versucht, dies zu veranschaulichen.<br />
Abbildung 3: Den Zielfunktionswert F (x 1 , x 2 ) kann man sich als die Höhe eines Daches<br />
über der x 1 -x 2 -Ebene vorstellen.<br />
4
Starten wir <strong>mit</strong> dem Algorithmus. Unser erstes ‘Teil-’Problem, das wir betrachten,<br />
ist das Ursprungsproblem P 0 . Die untere Schranke F , also die beste bisher bekannte<br />
Lösung, setzen wir zu Beginn auf −∞.<br />
Nun die erste Entscheidung: Ist der Lösungsraum leer Nein, es gibt mindestens eine<br />
zulässige Lösung. Wer es nicht sieht, kann gern den Punk (0, 0) testen. So<strong>mit</strong> folgen<br />
wir dem Pfad nach unten. Jetzt müssen wir das Optimum des relaxierten Problems P 0<br />
′<br />
finden. Das erledigen wir <strong>mit</strong> dem Simplex-Algorithmus (oder, weil es hier schneller<br />
geht, grafisch). Das Optimum ist F ( 9 5 , 2) = 9 2 . Wir setzen nun die obere Schranke F i :=<br />
9<br />
2<br />
Der Punkt ist zwar nicht zulässig, aber lässt vermuten, dass es bessere Lösungen<br />
als F = −∞ gibt. Angenommen, das Optimum von P 0 ′ wäre auch −∞, bräuchten wir<br />
nicht weitergehen. Da<strong>mit</strong> haben wir schon die nächste Entscheidung ‘F i ≤ F ’ <strong>mit</strong><br />
nein beantwortet und steigen weiter hinab. Auch zur Frage, ob F i zulässig ist, haben<br />
wir schon nein gesagt.<br />
Also, in P 0 es gibt es mindestens eine zulässige Lösung, die vermutlich besser als die<br />
bisher beste ist – aber wir kennen sie noch nicht. Deshalb unterteilen wir das Problem<br />
in zwei disjunkte (ein<strong>and</strong>er ausschließende) Teilprobleme und suchen dort weiter.<br />
Vorschlag zum Verzweigen<br />
Hier ein Vorschlag, wie man die Verzweigung vornehmen kann (siehe [DD02]): Wir<br />
trennen den Lösungsraum <strong>mit</strong> einem Schnitt, der durch das Optimum von P ′ i verläuft<br />
und genau eine Dimension teilt. Aber welche der beiden Dimensionen Wir wählen<br />
die aus, wo die Optimalstelle am weitesten in der Mitte zwischen den neuen Rändern<br />
liegt. Man kann auch sagen: Wo der kürzeste Abst<strong>and</strong> der entsprechenden Koordinate<br />
der Optimalstelle zur nächsten ganzen Zahl am größten ist. Im <strong>Beispiel</strong> der Abbildung<br />
4 wird die horizontale Dimension (könnte x 1 sein) getrennt.<br />
In unserer Aufgabe schneiden wir x 1 . Für die neuen Teilbereiche gelten da<strong>mit</strong><br />
zusätzliche zu (2) bis (4) folgende Nebenbedingungen:<br />
P 1 : x 1 ≤ 1 (5)<br />
P 2 : x 1 ≥ 2 (6)<br />
Die neuen Teilprobleme legen wir in die Liste ab, d.h. wir merken sie für die weitere<br />
Bearbeitung vor. Abbildung 5 zeigt die neuen Teilbereiche.<br />
Abbildung 4: Eine Möglichkeit, den Lösungsraum in zwei Teilprobleme zu unterteilen,<br />
ist, die Dimension zu schneiden, wo die Optimalstelle am weitesten in<br />
der Mitte zwischen den nächsten ganzzahligen Koordinaten liegt.<br />
5
Teilproblem P 1<br />
Als Nächstes wählen wir eins der beiden Teilprobleme aus der Liste aus. Nehmen wir<br />
P 1 und beginnen im Ablaufdiagramm wieder ganz oben. Ist der Lösungsraum leer<br />
Nein. Das Optimum des relaxierten Teilproblems P ′ 1 finden wir bei F (1, 2) = 5, wo<strong>mit</strong><br />
die obere Schranke F 1 := 5 belegt wird. Ist F 1 ≤ F , also ≤ −∞ Sicher nicht, also<br />
weiter nach unten. Ist F 1 zulässig Ja, die Koordinaten sind ganzzahlig! Wir haben<br />
auf einen Schlag das zulässige Optimum von P 1 gefunden! Das merken wir uns und<br />
setzen F := 5. Das Problem P 1 ist nach Fall b ausgelotet und wir können es aus der<br />
Liste steichen. Ist die Liste leer Nein, da liegt noch P 2 .<br />
Abbildung 5: Das Problem P 1 ließ sich nicht ausloten und wird deshalb in zwei Teilprobleme<br />
P 1 und P 2 zerlegt.<br />
Teilproblem P 2<br />
Wir nehmen P 2 und beginnen wieder ganz oben. Ist der Lösungsraum leer Nein. Das<br />
Optimum von P 2 ′ ist F (2, 5 3 ) = 16 3 , und wir weisen es F 2 := 16 3<br />
zu. Weil F 2 nicht kleiner<br />
ist als F , steigen wir im Ablaufdiagramm weiter nach unten hinab. Und, nein, F 2 ist<br />
nicht zulässig. Deshalb verzweigen wir wieder. Diesmal schneiden wir, wie Abbildung<br />
6 zeigt, die Dimension x 2 .<br />
P 3 : x 2 ≤ 1 (7)<br />
P 4 : x 2 ≥ 2 (8)<br />
P 3 und P 4 legen wir in die gerade leer gewordene Liste. Nun wählen wir P 3 aus.<br />
Teilproblem P 3<br />
Nein, der Lösungsraum ist nicht leer. Das Optimum von P 3 ′ liegt bei F ( 12 5 , 1) = 22 5 , also<br />
F 3 := 22 5<br />
. Halt, das ist schlechter als unsere beste bisher bekannte Lösung, nämlich die<br />
untere Schranke F = 5. Wenn uns also schon das Optimum des relaxierten Problems<br />
P 3 ′ nicht zufrieden stellt, dann erst recht nicht die zulässigen (ganzzahligen) Lösungen<br />
von P 3 . Das Teilproblem brauchen wir nicht weiter zu betrachten, es ist nach Fall a<br />
ausgelotet. Im Ablaufdiagramm beantworten wir die Frage ‘F 3 ≤ F ’ <strong>mit</strong> nein und<br />
steichen das Teilproblem aus der Liste. Nun liegt dort nur noch P 4 .<br />
6
Abbildung 6: Die Teilprobleme P 3 und P 4 entstehen durch Verzweigung von P 2 . Wie<br />
man hier sieht, verträgt sich der Lösungsraum von P 4 nicht <strong>mit</strong> den<br />
ursprünglichen Nebenbedingungen.<br />
Teilproblem P 4<br />
Jedes Teilproblem ‘erbt’ die Nebenbedingungen des Problems, aus dem es hervorging.<br />
Und <strong>mit</strong> jeder Verzweigung kommt eine neue Nebenbedingung hinzu. Für dieses Teilproblem<br />
gelten unter <strong>and</strong>erem Gl. (2) aus P 0 , Gl. (6) aus P 2 und Gl. (8) als neue<br />
Nebenbedingung. Genau diese schließen sich jedoch aus! Wie man auch in Abbildung<br />
6 sieht, gibt es keinen Punkt in der gesamten x 1 -x 2 -Ebene, der alle drei erfüllt.<br />
Im Ablaufdiagramm beantworten wir also schon die erste Frage <strong>mit</strong> ja, und das<br />
Teilproblem ist nach Fall c augelotet.<br />
Weil in der Liste kein weiteres Teilproblem mehr liegt, sind wir fertig! Das Optimum<br />
des Ursprungsproblems P 0 liegt im Punkt (1, 2) und hat den Zielfunktionswert<br />
F (1, 2) = 5.<br />
Lösungsbaum<br />
Der Lösungsbaum zeigt die Verzweigungen des Ursprungsproblems P 0 in seine Teilprobleme<br />
P i . Mit jeder Verzweigung entstehen zusätzliche Nebenbedingungen, die an<br />
die Pfeile geschrieben sind. Neben den Knoten stehen die oberen Schranken F i des<br />
dazugehörigen Teilproblems P i und die untere Schranke F . Ist ein Teilproblem nach<br />
einem der drei Fälle a, b oder c ausgelotet, braucht der Ast nicht weiter verzweigt zu<br />
werden. Sind alle Teilprobleme ausgelotet, findet sich das Optimum bei F .<br />
7
Abbildung 7: Die Verzweigungsstruktur des Ursprungsproblems P 0 .<br />
Literatur<br />
[DD02]<br />
Wolfgang Domschke <strong>and</strong> Andreas Drexl. Einführung in Operations Research.<br />
Springer, 2002.<br />
[Dom97] Wolfgang Domschke. Logistik, B<strong>and</strong>.2, Rundreisen und Touren. Oldenbourg,<br />
1997.<br />
[HL97]<br />
Frederick S. Hillier <strong>and</strong> Gerald J. Lieberman. Operations Research. Oldenbourg,<br />
1997.<br />
[MM92] Heiner Müller-Merbach. Operations Research. Vahlen, 1992.<br />
[]<br />
8