Ausgewählte Methoden der ganzzahligen Linearen Optimierung Diplomarbeit zur Erlangung des akademischen Grades Magistra rerum naturalium eingereicht von Arntraud Bacher bei A.Univ.Prof. Dr. Kurt Girstmair an der Naturwissenschaftlichen Fakultät der Universität Innsbruck Innsbruck, im August 2000 Einleitung Die Lineare Optimierung ist eine der jüngsten mathematischen Disziplinen. Der erste Kongress, welcher sich mit diesem Bereich beschäftigte, wurde 1949 in Chicago abgehalten. Bald spaltete sich ein Zweig ab, die ganzzahlige Lineare Optimierung. Wie es der Name schon sagt, werden nur ganzzahlige Optimallösungen von Problemen gesucht. Meist erhält man eine brauchbare ganzzahlige Optimallösung, wenn man die nichtganzzahlige Optimallösung rundet. Diese Möglichkeit ist jedoch nicht immer zu empfehlen, und darum haben Wissenschafter versucht Methoden zu finden, die mit wenigen Rechenschritten eine ganzzahlige Optimallösung liefern. Die Wirtschaft ist das grösste Anwendungsgebiet der ganzzahligen Linearen Optimierung. So ist es auch nicht verwunderlich, dass die meisten Veröffentlichungen zu diesem Thema in Journalen der Wirtschaft veröffentlicht wurden und werden. Die Theorie wird meist intuitiv erklärt, anstatt mathematisch bewiesen. Im ersten Kapitel dieser Diplomarbeit werden die Grundlagen der kontinuierlichen Linearen Optimierung wiederholt. Im zweiten Kaptitel wird auf die Grundlagen der ganzzahligen Linearen Optimierung eingegangen. Im dritten Kapitel wird dann genauer auf einige Verzweigungsmethoden eingegangen und versucht, die in den Originalartikeln mit zahlreichen Worten erklärte Theorie einiger Verzweigungsmethoden mathematisch darzustellen und zusammenzufassen. 1 Inhaltsverzeichnis 1 Kontinuierliche Lineare Optimierung 4 1.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.1 Standardform eines LOPs . . . . . . . . . . . . . . . . . . . . . 6 1.1.2 Konvexe Mengen und Eckpunkte . . . . . . . . . . . . . . . . . 7 1.1.3 Basen, Zulässige Basen, Basislösungen . . . . . . . . . . . . . . 8 Der Simplexalgorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2.1 Das Simplextableau . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.2 Der Basisaustausch . . . . . . . . . . . . . . . . . . . . . . . . . 16 Die Simplexmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.3.1 Der Simplexalgorithmus (SAL) . . . . . . . . . . . . . . . . . . 22 1.3.2 Simplexmethode zur Lösung eines LOP . . . . . . . . . . . . . . 23 1.3.3 Der duale Simplexalgorithmus . . . . . . . . . . . . . . . . . . . 25 1.3.4 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Calipso for Linear Programming . . . . . . . . . . . . . . . . . . . . . . 30 1.4.1 DOS-Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.4.2 Windows-Version . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.4.3 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.2 1.3 1.4 2 Ganzzahlige Lineare Optimierung 36 2.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.1.1 Standardform eines ganzzahligen LOP . . . . . . . . . . . . . . . 37 2.1.2 Eindeutigkeit und Existenz der Lösungen . . . . . . . . . . . . . 38 2 INHALTSVERZEICHNIS 3 2.1.3 Lösung durch Aufzählen . . . . . . . . . . . . . . . . . . . . . . 39 2.1.4 Wozu eigene Methoden? . . . . . . . . . . . . . . . . . . . . . . 40 2.1.5 Graphen und Bäume . . . . . . . . . . . . . . . . . . . . . . . . 44 Die Verzweigungsverfahren 46 3.1 Der Algorithmus von L AND und D OIG . . . . . . . . . . . . . . . . . . . 46 3.1.1 Die Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.1.2 Die graphische Beschreibung . . . . . . . . . . . . . . . . . . . 49 3.1.3 Der Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.1.4 Findet der Algorithmus die Optimallösung? . . . . . . . . . . . . 55 3.1.5 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Der Algorithmus von DAKIN . . . . . . . . . . . . . . . . . . . . . . . . 63 3.2.1 Der Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.2.2 Findet der Algorithmus die Optimallösung? . . . . . . . . . . . . 67 3.2.3 Verbesserungen gegenüber der L AND-und-D OIG-Methode . . . . 68 3.2.4 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.2.5 Calipso for Linear Programming . . . . . . . . . . . . . . . . . . 74 Die Penalty-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.3.1 Vorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.3.2 Die Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Der Additive Algorithmus von BALAS . . . . . . . . . . . . . . . . . . . 79 3.4.1 Die 3. Form eines LOPs . . . . . . . . . . . . . . . . . . . . . . 80 3.4.2 Die Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.4.3 Der Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.4.4 Findet der Algorithmus die Optimallösung? . . . . . . . . . . . . 89 3.4.5 Calipso for Linear Programming . . . . . . . . . . . . . . . . . . 90 Verzweigungsstrategien . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.5.1 Depth First Search - Strategie . . . . . . . . . . . . . . . . . . . 96 3.5.2 Breadth First Search - Strategie . . . . . . . . . . . . . . . . . . 97 3.2 3.3 3.4 3.5 3 Kapitel 1 Kontinuierliche Lineare Optimierung 1.1 Grundlagen Ist eine lineare Funktion (= Zielfunktion), in Abhängigkeit von verschiedenen Restriktionen (auch Nebenbedingungen genannt), zu minimieren (oder zu maximieren), so spricht man von einem linearen Optimierungsproblem (kurz: LOP). Die Restriktionen beschreiben den zulässigen Bereich M . Ein LOP hat also folgende Form: f (x) = min! L= x∈M wobei M ⊆ Rn , f : M → R linear, x = (x1 , ..., xn )T ∈ Rn . M wird durch ein System linearer Gleichungen und Ungleichungen in den Variablen xi , i = 1, ..., n beschrieben. Beispiel 1.1 Eine Produktionsrma hat zur Auslieferung ihrer Produkte zwei Speditionsunternehmen engagiert. Unternehmen A verlangt pro Lastwagenfahrt 2 Geldeinheiten (GE), das Unternehmen B 8 GE. Die Firma stellt die Bedingung, dass pro Tag mindestens 5, aber nicht 4 1.1. GRUNDLAGEN mehr als 10 Fahrten von beiden Unternehmen zusammen durchgeführt werden. Das Unternehmen B hat noch die Forderung, dass es pro Tag mindestens einen Lieferauftrag bekommt. Bei den Verhandlungen wurde nebenbei folgende Bedingung festgehalten: (Fahrten Unternehmen A) + 3 ∗ (Fahrten Unternehmen B) ≥ 8.5. Wie muss die Firma die Lieferfahrten verteilen, damit die Auslieferungskosten minimiert werden? x2 10 9 8 7 6 5 4 3 2 1 x1 1 2 3 4 5 6 7 8 9 10 Abbildung 1.1: Bild zu Beispiel 1.1: Der zulässige Bereich ist schattiert, die Niveaulinie der Zielfunktion zum Optimalwert strichliert. 5 1.1. GRUNDLAGEN f (x) = 2x1 + 8x2 → min! x1 + x2 ≥ 5 x1 + x2 ≤ 10 L= x ≥1 2 x1 + 3x2 ≥ 8.5 x1 , x2 ≥ 0 1.1.1 Standardform eines LOPs Definition 1.2 (Standardform) Ein LOP in Standardform sieht folgendermassen aus: f (x) = cT x → min! L= Ax = b x≥0 n ist die Anzahl der Variablen; m die Anzahl der Restriktionen; cT = (c1 , ..., cn ) ∈ R1×n (Vektor der Zielfunktionskoeffizienten); A ist eine reelle m × n-Matrix (Matrix der Nebenbedingungskoeffizienten); b = (b1 , . . . , bm )T ∈ Rm (Vektor der Beschränkungen); x = (x1 , . . . , xn )T ∈ Rn (Variablenvektor); P cT x = nj=1 cj · xj ist die Zielfunktion. Sei im folgenden immer rang(A) = m. Ist nämlich rang(A) < m, so können eine oder mehrere Zeilen von A als Linearkombination anderer Zeilen von A dargestellt werden. Definition 1.3 (Ungleichungsform) Tritt bei einem LOP in mindestens einer der m Restriktionen statt dem Gleichheitszeichen eines der beiden Relationszeichen ≤, ≥ auf, so sprechen wir von einem LOP in Ungleichungsform. Falls nicht anderes angegeben, gehen wir im folgenden immer von einem LOP in Standardform aus. 6 1.1. GRUNDLAGEN Mit Hilfe der sogenannten Schlupfvariablen kann ein LOP von der Ungleichungsform in die Standardform gebracht werden. Beispiel 1.4 Fortsetzung von Beispiel 1.1: Wir führen die Schlupfvariablen x3 ≥ 0, x4 ≥ 0, x5 ≥ 0 und x6 ≥ 0 ein und erhalten: f (x) = 2x1 + 8x2 + 0 · x3 + 0 · x4 + 0 · x5 + 0 · x6 → min! x1 + x2 − x3 = 5 x1 + x2 + x4 = 10 L= x −x =1 2 5 x1 + 3x2 − x6 = 8.5 x1 , x2 , x3 , x4 , x5 , x6 ≥ 0 1.1.2 Konvexe Mengen und Eckpunkte Definition 1.5 (konvex) Eine Teilmenge T von Rn heisst konvex :⇐⇒ für alle x, y ∈ T ist [x, y] := {αx + βy; α, β ≥ 0, α + β = 1} ⊆ T Mit anderen Worten: Eine Menge heisst konvex, wenn alle Punkte, die auf der Verbindungsstrecke [x, y] zweier Punkte x und y der Menge liegen, ebenfalls zur Menge gehören. ................. .... ................. .... .... .... . ................................ .... . . . ......... .... . .... . . . ..... ... . . ... ............................................................. . ...... .. .. . . . . . ...... .. . . . . ... .. ... . . . ...... .. .. . . . ....... .. . . ..... .. ... . ....... .. . . ... .. ... . ...... .. . .... .. .... .. ... .... .......... ... ................................ ......... .. ... . . . . . . . .......................... . . .. .. . . . . . ....... . . . . . . . . .. ... . . . . . ...... .. .. . . . . . ...... .. . . . . ... .. ... . . . ...... .. .. . . . ....... .. . . .... .. . ... . ....... .. . . ... .. ... . ...... .. . .... .. .... .. ... .... r r r r Abbildung 1.2: konvexe Menge Abbildung 1.3: nicht konvexe Menge Satz 1.6 Der zulässige Bereich M = {x | Ax = b, x ≥ 0} eines LOPs ist konvex. Beweis: Seien x, y ∈ M ⇐⇒ x ≥ 0, Ax = b, y ≥ 0, Ay = b 7 1.1. GRUNDLAGEN Nun ist zu zeigen, dass [x, y] ∈ M , also • z.z.: αx + βy ≥ 0 mit α + β = 1. Dies ist klar, da α, β, x und y ≥ 0. • z.z.: A(αx + βy) = b mit α + β = 1. Da die Multiplikation mit A linear ist, gilt A(αx + βy) = αAx + βAy Wegen Ax = Ay = b und α + β = 1 folgt die Behauptung. Definition 1.7 (Konvexes Polytop, Konvexes Polyeder) 1. Eine konvexe Menge der Form M = {x | Ax = b, x ≥ 0} nennt man konvexes Polytop. 2. Ein beschränktes konvexes Polytop wird konvexes Polyeder genannt. Definition 1.8 (Eckpunkt) Jeder Punkt x eines konvexen Polytops M , für den gilt: x∈ / [y, z] mit y 6= z und y, z ∈ M wird Eckpunkt genannt. Mit anderen Worten: Ein Eckpunkt liegt nicht auf der Verbindungsgeraden zweier verschiedener Punkte aus M . 1.1.3 Basen, Zulässige Basen, Basislösungen Definition 1.9 (Basis) Sei L ein LOP in Standardform und gelte wie immer rang(A) = m. Dann ist jede m×mTeilmatrix von A, deren Spalten linear unabhängig sind, eine Basis des LOPs. Bemerkung 1.10 Wir setzen m < n voraus, da im Fall m = n das Problem genau eine eindeutige Lösung besitzt, und wir dann nicht mehr von einem Optimierungsproblem sprechen können. 8 1.1. GRUNDLAGEN Sei AB eine Basis mit Indexmenge B. Durch Vertauschen der Spalten von A können wir diese Matrix immer in folgende Form bringen: A = (AB , AR ), wobei AR eine Submatrix aus den (Rest-) Spalten ist, also denen, die nicht zur Basis gehören. Ebenfalls können wir x in (xB , xR )T und c in (cB , cR ) unterteilen. Jede Lösung des LOPs genügt Ax = b, und somit auch AB xB + AR xR = b (1.1) Definition 1.11 (Basisvariablen, Restvariablen) Die Variablen xi mit i ∈ B heissen Basisvariablen. Die Variablen xi mit i ∈ R heissen Restvariablen. Definition 1.12 (Kanonische Form) A hat kanonische Form ⇔ AB = Im , wobei m = rang(A). Definition 1.13 (Basislösung) Die spezielle Lösung von (1.1), die man erhält, indem man xR = 0 setzt, nennt man die zu B gehörige Basislösung. Man rechnet sich dann xB aus, indem man AB xB = b löst. Also: xB = A−1 B b. Definition 1.14 (Zulässige Basislösung) Eine Basislösung ist zulässig, wenn xB ≥ 0, also wenn A−1 B b ≥ 0. Definition 1.15 (Zulässige Basis) Eine Basis AB eines LOPs heisst zulässig :⇔ die zugehörige Basislösung xB ist zulässig. Definition 1.16 (Degenerierte Basislösung) Eine Basislösung heisst degeneriert, falls Komponenten von xB gleich 0 sind. Satz 1.17 Jede zulässige Basislösung ist ein Eckpunkt des konvexen Polytops M = {x | Ax = b, x ≥ 0}. Beweis: Indirekt: Annahme: Sei x = (x1 , x2 , . . . , xm , 0, . . . , 0) ∈ Rn eine zulässige Basislösung 9 1.1. GRUNDLAGEN mit Basisvariablen x1 , x2 , . . . , xm , also B = {1, . . . , m} und R = {m + 1, . . . , n}. Sei dieses x ∈ [p, q], wobei p, q ∈ M , p 6= q, p 6= x und q 6= x. Also muss gelten αp + βq = x mit α, β ≥ 0 und α + β = 1 1.Fall: α = 0 ⇒ β = 1 ⇒ q = x ⇒ Widerspruch zur Annahme, dass p, q, x voneinander verschieden sind. 2.Fall: β = 0 analog 3.Fall: α, β 6= 0. Dann αpj + βqj = 0 ∀j ∈ R mit α, β > 0 und α + β = 1 Weil p und q zulässige Lösungen sind, d.h. alle Komponenten ≥ 0, muss gelten: pj = qj = 0 für alle j ∈ R. Wenn wir das LOP auf kanonische Form bringen, stellen wir fest, dass die Werte der Basisvariablen eindeutig durch die Werte der Restvariablen bestimmt sind. Also gilt p = q = x, was wiederum ein Widerspruch zur Annahme ist. Definition 1.18 (Optimalwert) Sei xopt eine zulässige Optimallösung eines LOPs. Dann ist o = cT xopt der Optimalwert des LOPs. Satz 1.19 1. Das Maximum oder Minimum einer linearen Funktion f (x) auf einem konvexen Polyeder M ⊂ Rn erhält man in mindestens einer Ecke. 2. Wird es in mehr als einer Ecke gefunden, so erhält man es auch in jedem Punkt, der auf der Verbindungsgerade dieser Ecken liegt. Beweis: Wird für Minimum gezeigt, für Maximum ist der Satz analog zu zeigen. 1. Sei o = min{f (x) | x ∈ M }. Dann gibt es mindestens eine zulässige Basislösung x̄ mit f (x̄) = o. Nach Satz 1.17 ist jede zulässige Basislösung ein Eckpunkt von M , womit die Behauptung gezeigt ist. 10 1.1. GRUNDLAGEN 2. Seien x1 und x2 zwei Eckpunkte von M , also o = min{f (x) | x ist zulässige Basislösung} = f (x1 ) = f (x2 ) Sei x0 ∈ [x1 , x2 ] so folgt, da f eine lineare Funktion ist: f (x0 ) = αf (x1 ) + βf (x2 ) = αo + βo = (α + β)o = o Also: Jeder Punkt, der auf der Verbindungsgerade [x1 , x2 ] liegt, nimmt das Minimum der Funktion f (x) an. Bemerkung 1.20 Ist der zulässige Bereich M eines LOPs leer, so ist das LOP unlösbar. Beispiel 1.21 Für dieses Beispiel verwenden wir die Ungleichungsform. M = {x, y ∈ R | y ≥ x + 2, y ≤ −x + 1, x ≥ 0, y ≥ 0} Die Pfeile geben an, in welche Richtung von der jeweiligen Geraden aus der zulässige Bereich deniert ist. .. .... ... ... . . . .... .... .... ... .... ... .... ... . .... . . . .... .... .... .... .... .... ....... .... ... .... ........ .... ....... ... .... . . .... .... .... ... .... ... . . .... . . . .... . ... .... . . ... .... - y @ I @ 6 x Abbildung 1.4: zulässiger Bereich ist leer Bemerkung 1.22 Ist der zulässige Bereich M eines LOPs unbeschränkt, so ist das LOP entweder unlösbar, besitzt eine eindeutige Optimallösung oder besitzt mehrere Optimallösungen. 11 1.2. DER SIMPLEXALGORITHMUS Beispiel 1.23 Auch in diesem Beispiel verwenden wir die Ungleichungsform. Sei M = {x, y ∈ R | 5y ≥ x − 2, 2y ≤ 3x + 3, x ≥ 0, y ≥ 0} .. ..... . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . .. .... . . . . . . . . . . . .... . . . . . . . . . . . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . .... . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . .... .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......... . . . . . . . . . . . . . . ............ . . . . . . . . . . ........................................ . . . . . . . . . ............ . . . . . ........................................ ............ .................... ................... .................... y x Abbildung 1.5: zulässiger Bereich ist unbeschränkt Ist das LOP etwa durch y → max! gegeben, so ist es unlösbar, da die Zielfunktion f (x, y) = y auf M nach oben unbeschränkt ist. Das Problem y → min! hingegen besitzt mehrere Optimallösungen. Schliesslich besitzt z.B. y − 2x → min! genau eine Optimallösung. Bemerkung 1.24 Ist der zulässige Bereich M beschränkt und nicht leer, so gibt es entweder genau eine zulässige Optimallösung des Problems oder mehrere, falls die Niveaulinie der Zielfunktion zum Optimalwert eine Kante des zulässigen Bereichs enthält. 1.2 Der Simplexalgorithmus Es gibt viele Möglichkeiten, ein LOP zu lösen, die Frage ist nur, welche Methode schnell ist und nicht allzuviel Speicherplatz eines Rechners benötigt. Graphische Lösungen sind nur bei Problemen mit zwei Variablen sinnvoll. Bei mehr Variablen scheitert die Lösungsmethode an unserem Vorstellungsvermögen. Versuchen Sie einmal ein Problem mit fünf Variablen graphisch zu lösen! 12 1.2. DER SIMPLEXALGORITHMUS Die Idee der Simplexmethode: Nach Satz 1.17 ist jede zulässige Basislösung eine Ecke des zulässigen Bereichs M . Wir wählen also eine Ecke von M und suchen uns unter den Nachbarecken die mit dem kleinsten Optimalwert und prüfen, ob dieser Wert kleiner ist als der Optimalwert an der Ecke, an der wir uns gerade befinden. Gibt es keine solche Ecke, so haben wir eine Optimallösung des Problems gefunden. Andernfalls suchen wir uns von dieser gefundenen Ecke aus nach denselben Kriterien eine benachbarte Ecke, usw. Da der zulässige Bereich endlich viele Ecken hat, landen wir nach endlichen Schritten an einer Ecke, von der aus wir keine benachbarte mit einem kleineren Optimalwert mehr finden; wir sind am Ende des Verfahrens angelangt. Eine benachbarte Ecke ist entlang einer einzigen Kante des Polyeders erreichbar. Bevor wir uns mit der Simplexmethode befassen, soll das Simplextableau erklärt werden. 1.2.1 Das Simplextableau Sei L ein LOP in Standardform und AB eine Basis. Wir schreiben L so an: f (x) = cTB xB + cTR xR → min! L= AB xB + AR xR = b x ≥ 0, x ≥ 0 B R mit c, x ∈ Rn , b ∈ Rm , A ∈ Mmn (R) , wie immer: rang(A) = m. Die Indexmenge B ⊆ {1, .., n} erfüllt nach Definition 1.9 |B| = m, ferner gilt rang(AB ) = m. Satz 1.25 Es gibt ein eindeutig bestimmtes Paar (S, t) ( S ∈ Mmm (R), t ∈ Rm ) mit folgenden Eigenschaften: Ist xR ∈ Rn−m beliebig und xB := −SxR + t, so gilt AB xB + AR xR = b. Beweis: 1) Eindeutigkeit: a) Sei xR = 0 =⇒ xB = t und AB t = b. Da rang(AB ) = m, ist AB invertierbar =⇒ t = A−1 B b. 13 1.2. DER SIMPLEXALGORITHMUS b) Sei xR ∈ Rn−m beliebig. AB xB + AR xR = AB (−SxR + t) + AR xR = −AB SxR + b + AR xR = b =⇒ (−AB S + AR )xR = 0 =⇒ −AB S + AR = 0 =⇒ S = A−1 B AR 2) Existenz: −1 n−m beliebig und x := −Sx + t so Setze t := A−1 B R B b und S := AB AR . Ist xR ∈ R folgt: −1 AB xB + AR xR = AB (−SxR + t) + AR xR = AB (−A−1 B AR xR + AB b) + AR xR = −AR xR + b + AR xR = b Bemerkung 1.26 Ist AB eine zulässige Basis, so gilt t ≥ 0. Definition 1.27 Der Vektor v ∈ Rn−m und die Zahl z ∈ R seien definiert durch v T := cTR − cTB S und z := −cTB t. Weiters gilt für den Optimalwert o = −z. Satz 1.28 Sei x ∈ Rn : Ax = b ⇐⇒ xB = −SxR + t Beweis: Da rang(AB ) = m, ist AB invertierbar. −1 Ax = b ⇐⇒ AB xB + AR xR = b ⇐⇒ xB + A−1 B AR xR = AB b ⇐⇒ xB = −1 −A−1 B AR xR + AB b ⇐⇒ xB = −SxR + t Satz 1.29 Sei x ∈ Rn mit Ax = b =⇒ cT x = v T xR − z . Beweis: cT x = cTB xB + cTR xR = cTB (−SxR + t) + cTR xR = (cTR − cTB S)xR + cTB t = v T xR − z Definition 1.30 (Simplextableau) Sei B die Indexmenge einer Basis eines LOPs. S, t, v, z wie oben. R TB := B S t vT z (1.2) 14 1.2. DER SIMPLEXALGORITHMUS heisst das zu B gehörige Simplextableau. Definition 1.31 (primalzulässig) Ein Simplextableau ist primalzulässig, wenn für alle Komponenten von t gilt: ti ≥ 0 ∀ i∈B Definition 1.32 (dualzulässig) Ein Simplextableau ist dualzulässig, wenn für alle Komponenten von v gilt: vj ≥ 0 ∀ j∈R Bemerkung 1.33 Wir können eine zu B gehörige Basislösung x ∈ Rn sofort aus einem Simplextableau TB ablesen: xR = 0 nach Denition 1.13. Also x = xB = t. Der Wert der Zielfunktion ist in diesem Fall cT x = v T xR −z = −z . Diese Basislösung muss weder zulässig noch optimal sein. Satz 1.34 Eine Basislösung ist genau dann optimal, wenn das zugehörige Tableau sowohl primalzulässig als auch dualzulässig ist. Beweis: Sei x̄ = (x̄B , x̄R ) eine Basislösung, es ist also x̄R = 0. • Ist das Tableau primalzulässig, so ist t = A−1 B b ≥ 0. Nach Satz 1.25 ist x̄B ≥ 0, womit die Basislösung x̄ zulässig ist. • Sei x ∈ M eine beliebige zulässige Lösung. Nach Satz 1.29 gilt also: cT x = v T xR − z cT x̄ = v T x̄R − z = −z Ist v T < 0, dann ist cT x < cT x̄, was bedeutet, dass x̄ nicht optimal ist. Ist hingegen v T ≥ 0, dann ist cT x ≥ cT x̄, und somit ist die Basislösung optimal. 15 1.2. DER SIMPLEXALGORITHMUS Mit anderen Worten: Ist das Tableau primalzulässig, so ist die zugehörige Basislösung zulässig, aber noch nicht optimal. Erst wenn das Tableau auch dualzulässig ist, haben wir eine optimale zulässige Basislösung. Wir suchen nun eine benachbarte Ecke nach der Methode, die am Anfang dieses Kapitels beschrieben wurde. Diese finden wir durch den Basisaustausch. 1.2.2 Der Basisaustausch Satz 1.35 Sei L ein LOP in Standardform. Weiters sei B , R und S wie oben. Seien k ∈ B und l ∈ R so, dass Skl 6= 0. Dann ist B̄ = (B \ {k}) ∪ {l} wieder eine Basis des LOPs. Beweis: Sei R̄ = {1, . . . , n}\B̄. Zu zeigen ist, dass die Spalten der m × m-Matrix AB̄ linear unabhängig sind, dazu folgende Vorbereitungen: • Wenn das Gleichungssystem Ax = b x R̄ = 0 (1.3) eindeutig lösbar ist, dann hat AB̄ xB̄ + AR̄ xR̄ = AB̄ xB̄ = b |{z} =0 ebenfalls eine eindeutige Lösung ⇒ rang(AB̄ ) = m. • Ein Gleichungssystem mit m Gleichungen und m Unbekannten ist dann und nur dann eindeutig lösbar, wenn die Spalten der Koeffizientenmatrix linear unabhängig sind. 1) Eindeutigekeit: (Beweis indirekt) Annahme: Das Gleichungssystem (1.3) hat zwei verschiedene Lösungen x1 und x2 . 16 1.2. DER SIMPLEXALGORITHMUS Sei Ax1 = b, Ax2 = b und AB eine Basis, dann gilt nach Satz 1.28 x1B = −Sx1R + t und x2B = −Sx2R + t. Also: ∀i ∈ B: x1i = − P 1 j∈R Sij xj + ti = − P x2i = − P 2 j∈R Sij xj + ti = − P j∈R j6=l j∈R j6=l Sij x1j − Sil x1l + ti Sij x2j − Sil x2l + ti Da x1R̄ = x2R̄ = 0 folgt daraus, dass ∀j ∈ R̄ = (R \ {l}) ∪ {k} gilt: x1j = x2j = 0. Also: x1i = −Sil x1l + ti ∀i ∈ B: x2i = −Sil x2l + ti Dies gilt auch für k ∈ B ∩ R̄: x1k = −Skl x1l + tk = 0 ⇒ x1l = x2k = −Skl x2l + tk = 0 ⇒ x2l = tk Skl tk Skl Somit haben wir gezeigt, dass x1l = x2l . Wir verwenden dieses Ergebnis weiter: ∀i ∈ B̄ \ {l} = B \ {k}: x1i = −Sil x1l + ti = − SSilkltk + ti x2i = −Sil x2l + ti = − SSilkltk + ti Somit ist auch x1i = x2i mit i ∈ B̄ \ {l}. Wir haben nun gezeigt, dass x1 = x2 , was ein Widerspruch zur Annahme ist. 2) Existenz: Sei x ∈ Rn folgendermassen definiert: tk i = l ∈ B̄ Skl xi := − SSilkltk + ti i ∈ B̄, i 6= l 0 i ∈ R̄ z.z. Ax = b, wobei xR̄ = 0. Nach Satz 1.28 ist die zu zeigende Aussage äquivalent zu xB = −SxR + t x =0 R̄ 17 1.2. DER SIMPLEXALGORITHMUS Wir zeigen die Aussage für i ∈ B \ {k}: xi = − SSilkltk + ti = −Sil xl + ti = X P = − Sij xj −Sil xl + ti = − j∈R Sij xj − Sik xk +ti | {z } j∈R̄ =0 | {z } =0 Nun zeigen wir noch die Aussage für i = k: X P xk = 0 = − Sij xj = − j∈R Skj xj + Skl xl = j∈R̄ | = − {z } =0 P j∈R Skj xj k + Skl Stkl =− P j∈R Skj xj + tk Satz 1.36 Sei B̄ wie in Satz 1.35. Das zu B̄ gehörige Simplextableau TB̄ erhält man auf folgende Weise aus dem Tableau TB . l TB = k j 1 Skl il − SSkl Skj Skl S S Sij − ilSklkj vS vj − Sl klkj j k Skl Skj tk i Sil Sij ti vl vj z → TB̄ = l i − Svkll tk Skl ti − SSilkltk z− vl tk Skl Beweis: Sei o.E.d.A. B = {1, . . . , m} und R = {m + 1, . . . , n}. Wir wählen k ∈ B und l ∈ R. Aus Satz 1.28 wissen wir, dass xB = −SxR + t, also können wir die k-te Zeile dieser Gleichung folgendermassen darstellen: xk = − n X Skj xj + tk j=m+1 Als nächstes stellen wir die Rest-Variable xl frei: n P xk − tk = − Skj xj j=m+1 n P Skl xl = tk − xk − Skj xj j=m+1 j6=l xl = tk Skl − xk Skl − n P j=m+1 j6=l Skj Skl xj 18 1.2. DER SIMPLEXALGORITHMUS Daraus können wir sofort die Elemente der l-ten Zeile im Tableau TB̄ ablesen. Der Koeffizient der Variablen xk ist der Koeffizient der neuen Basisvariablen x̄l . t̄l = tk Skl S̄lk = 1 Skl Skj Skl S̄lj = Als nächstes setzen wir den oben berechneten Wert für xl in die i-te Zeile der Gleichung xB = −SxR + t ein: n P xi = ti − j=m+1 j6=l = ti − Sil tk Skl k Sij xj − Sil Stkl − xk Skl n P − j=m+1 j6=l n P − − SSilklxk − Sij − j=m+1 j6=l Skj Skl xj Sil Skj Skl = xj Aus dieser Gleichung lassen sich die Elemente der i-ten Zeile im Tableau TB̄ ablesen. Sil tk Skl Sil xk − Skl S S Sij − ilSklkj t̄i = ti − S̄ik = S̄ij = Nun fehlen uns noch die Werte der letzten Zeile. Dazu setzen wir den Ausdruck für xl in die Gleichung für cT x ein, die wir in Satz 1.29 bewiesen haben: cT x = v T xR − z = n P j=m+1 j6=l = k vj xj + vl Stkl − n P j=m+1 j6=l = vj − vl Skj Skl xk Skl − n P j=m+1 j6=l Skj Skl xj xj + − Svkll xk − z + −z vl tk Skl = Daraus können wir uns die drei Elemente herauslesen, die uns noch fehlen, damit das neue Tableau TB̄ vollständig ist: v̄i = vj − vl Skj Skl v̄k = − Svkll z̄ = z − vl tk Skl 19 1.2. DER SIMPLEXALGORITHMUS Bemerkung 1.37 (Bezeichnungen) Das Element Skl heisst Pivotelement, die k-te Zeile nennt man Pivotzeile und die l-te Spalte Pivotspalte. Satz 1.38 Gegeben sei ein primalzulässiges Simplextableau. Wählt man das Pivotelement Skl nach folgenden Kriterien: • vl < 0 • tk Skl = min ti Sil i ∈ {1, . . . , m} , | Sil > 0, dann ist TB̄ primalzulässig und der Wert der Zielfunktion vergrössert sich nicht. Gilt tk > 0, so verringert er sich sogar. Beweis: Zuerst der Beweis, dass TB̄ primalzulässig ist: Da TB primalzulässig ist, gilt für alle i ∈ B: ti ≥ 0. t̄l = tk Skl > 0, da sowohl Zähler als auch Nenner > 0 sind. Nun ist noch zu zeigen, dass für alle i ∈ B gilt: t̄i ≥ 0. Wegen der Auswahlregeln für das Pivotelement ist ti tk ≥ Sil Skl immer erfüllt. Äquivalenzumformungen dieser Gleichung ergeben ti − Nach Satz 1.36 ist t̄i = ti − Sil tk ≥ 0. Skl Sil tk Skl . Fehlt noch der Beweis, dass die Zielfunktion f (x) abnimmt: Da z = −f (x), ist also zu zeigen, dass z̄ ≥ z: <0 ≥0 z}|{ z}|{ vl tk z̄ = z − ≥z Skl |{z} >0 Ist tk > 0, so folgt z̄ > z. Analog gilt für tk = 0, dass z̄ = z. 20 1.3. DIE SIMPLEXMETHODE 1.3 Die Simplexmethode Die Simplexmethode benutzt den Simplexalgorithmus (kurz: SAL) in zwei Phasen: In der ersten Phase der Simplexmethode wird ein Hilfsproblem H mit dem SAL gelöst. Mit dessen Lösung können wir feststellen, ob der zulässige Bereich des LOPs leer ist oder nicht. Ist letzteres der Fall, so wird in der zweiten Phase das LOP mit dem SAL gelöst. Die zulässige Anfangsbasis wurde auch durch Lösung des Problems H gefunden. Satz 1.39 Äquivalent sind: (1) x̄ ist eine zulässige Basislösung von c1 x1 + . . . + cn xn → min! a · · · a x 1n 11 1 .. .. .. ... L= . . . am1 · · · amn xn x≥0 b1 .. = . bm (2) (x̄, x̄n+1 , . . . , x̄n+m ) ∈ Rn+m ist Optimallösung von xn+1 + xn+2 + . . . + xn+m → min! a · · · a x x 11 1n 1 n+1 . . .. ... .. .. + ... H= . a · · · a x xn+m m1 mn n xi ≥ 0, ∀i ∈ {1, . . . , n + m} b1 .. = . . bm (1.4) mit Optimalwert der Zielfunktion gleich Null. 21 1.3. DIE SIMPLEXMETHODE Beweis: (1) ⇒ (2) Sei x̄ = (x̄1 , . . . , x̄n ) eine zulässige Lösung von L. Dann ist P (x̄, 0, . . . , 0) Optimallösung von H mit Optimalwert m i=1 x̄n+i = 0. (2) ⇒ (1) Sei (x̄1 , . . . , x̄n+m ) Optimallösung von H mit dem Optimalwert der Zielfunktion gleich null. Weil für alle i ∈ {1, . . . , n + m} gilt, dass xi ≥ 0 ist, so muss gelten x̄n+1 = . . . = x̄n+m = 0, und x̄ ist somit eine zulässige Lösung von L. Bemerkung 1.40 Die Variablen xn+1 , xn+2 , . . ., xn+m werden künstliche Variablen genannt. 1.3.1 Der Simplexalgorithmus (SAL) Gegeben sei eine zulässige Basis AB des LOPs und das dazugehörige Simplextableau, welches primalzulässig ist. Schritt 1 Prüfe, ob das Simplextableau dualzulässig ist. Wenn ja, dann ist die Basislösung xB eine Optimallösung des LOPs. Ist zusätzlich noch v > 0, so ist sie die einzige Optimallösung (vgl. Dantzig [2], S. 112, Korollar). Wir haben das LOP gelöst. Wenn nein, gehe zu Schritt 2. Schritt 2 Wähle ein l ∈ R so, dass vl < 0. Prüfe, ob S−l ≤ 0, wobei S−l für die l-te Spalte von S steht. Wenn ja, dann ist das LOP unlösbar, da die Zielfunktion unbeschränkt ist (vgl. Dantzig [2], S. 115, Satz 3). Wenn nein, gehe zu Schritt 3. Schritt 3 Es gibt ein i ∈ B so, dass Sil > 0. Wähle k ∈ B so, dass tk Skl = min{ Stili | i ∈ B, Sil > 0}. Führe sodann Basisaustausch B → B̄ mit B̄ = (B \ {k}) ∪ {l} durch und gehe zu Schritt 1. 22 1.3. DIE SIMPLEXMETHODE 1.3.2 Simplexmethode zur Lösung eines LOP Gegeben sei ein LOP L in Standardform. Schritt 1 Ordne das System der Gleichungen Ax = b so an, dass alle bi ≥ 0, i = 1, . . . , m sind. Treten auf der rechten Seite Werte < 0 auf, so sind bei diesen Gleichungen beide Seiten mit (−1) zu multiplizieren. Schritt 2 Nun erstellen wir das Hilfsproblem H (siehe Satz 1.39), indem wir die „künstlichen Variablen“ xn+1 ≥ 0, xn+2 ≥ 0, . . ., xn+m ≥ 0 einfügen. Schritt 3 (Phase 1) Jetzt wird zum ersten Mal der SAL angewendet. Die Basisvariablen sind xn+1 , xn+2 , . . ., xn+m . Die Restvariablen sind demnach x1 , x2 , . . ., xn , n H T = AB = Idm (m × m Einheitsmatrix) und AR = A. cH R = 0 ∈ R , cB (1, . . . , 1) ∈ Rm . Daraus berechnen wir die Einträge ins Simplextableau des Hilfs −1 H T = cH T − cH T S H = H problems: S H = A−1 R B B AR = A, t = AB b = b, v T H −(1, . . . , 1)A und z H = − cH t = −(1, . . . , 1)b. Das Anfangstableau sieht B folgendermassen aus: H TAnf 1 ... n n+1 .. = . a11 .. . ··· .. . a1n .. . b1 .. . n+m am1 Pm ··· amn Pm bm Pm − i=1 ai1 ··· − i=1 ain − i=1 bi Schritt 4 Nach Ausführung des SAL kann einer der folgenden zwei Fälle auftreten. • Der Optimalwert von H ist ungleich null. Dann existiert keine zulässige Lösung von L. • Im anderen Fall, also wenn der Optimalwert von H gleich null ist, geht man zu Schritt 5. 23 1.3. DIE SIMPLEXMETHODE Schritt 5 Das Endtableau der Phase 1 sieht so aus: (∗ steht für beliebige Einträge) H TEnd = i j k S ∗ l S0 ∗ u = 0 ∗ t ∗ w=0 wobei die Indizes i und l für jene Mengen von Indizes von Rest- bzw. Basisvariablen stehen, die nicht ausgetauscht wurden, j bzw. k für jene Mengen von Indizes von Rest- bzw. Basisvariablen, die ausgetauscht wurden. Ich schreibe im folgenden |j| = r um anzudeuten, dass die Menge der j aus r Elementen besteht. Mit dieser Konvention gilt |k| = r, |l| = m − r und |i| = n − r. Sei xL die optimale zulässige Basislösung, also: L xL t x 0 k = ∈ Rm und i = ∈ Rn xL 0 xL 0 j l Im Anschluss an den Algorithmus steht der Beweis, dass u = 0. Schritt 6 (Phase 2) Sobald |l| = 0 oder S 0 = 0 kann man das Anfangstableau für diese Phase aufstellen i TAnf = k S t vT z mit v T = cTi − cTk S und z = −cTk t. Die Durchführung von Basisaustauschschritten in diesem Tableau liefert uns entweder eine Optimallösung oder zeigt uns, dass die Zielfunktion nach unten unbeschränkt ist. Es fehlt noch der Beweis, dass u = 0 sein muss. T T Sei w = cH xL = 0, wobei cH = (0, . . . , 0, 1, . . . , 1) ∈ Rn+m . Die ersten n | {z } | {z } =n−mal m−mal Komponenten von xL sind entweder 0 oder tp , wobei p ∈ {1, . . . , n}. Sie haben aber keinen Einfluss auf den Wert von w, da cH p = 0, wobei wieder p ∈ {1, . . . , n}. Die letzten 24 1.3. DIE SIMPLEXMETHODE m Komponenten von xL sind entweder 0 oder up , p ∈ {n + 1, . . . , n + m}. Da cH p = 1, Pn+m p ∈ {n + 1, . . . , n + m} ist also w = p=n+1 up . Da w = 0 und u ≥ 0, folgt u = 0. 1954 entwickelte L EMKE die duale Simplexmethode, indem er das primale Problem über die Lösung des dualen Problems löste. 1.3.3 Der duale Simplexalgorithmus Sei ein dualzulässiges Simplextableau gegeben. Schritt 1 Prüfe, ob das Simplextableau auch primalzulässig ist. Wenn ja, dann ist die Basislösung xB eine Lösung des LOPs. Ist zusätzlich noch t > 0, so ist sie die einzige Lösung. Schritt 2 Wähle ein k ∈ B so, dass tk < 0. Prüfe, ob Sk− ≥ 0. Wenn ja, dann ist das LOP unlösbar. Schritt 3 Es gibt ein i ∈ B so, dass Ski < 0. Wähle l ∈ R so, dass vl Skl v j = max{ Skj |j∈ R, Skj < 0}. Führe sodann Basisaustausch B → B̄ mit B̄ = (B \ {k}) ∪ {l} durch und gehe zu Schritt 1. 1.3.4 Beispiele Beispiel 1.41 Fortsetzung von Beispiel 1.4: 2 · x1 + 8 · x2 + 0 · x3 + 0 · x4 + 0 · x5 + 0 · x6 → min! x1 + x2 − x3 = 5 x1 + x2 + x4 = 10 L= x −x =1 2 5 x1 + 3x2 − x6 = 8.5 x1 , x2 , x3 , x4 , x5 , x6 ≥ 0 (1.5) 25 1.3. DIE SIMPLEXMETHODE Zuerst wird das Hilfsproblem H gelöst H= x7 + x8 + x9 + x10 → min! 1 0 0 0 −1 0 0 0 −1 1 1 −1 0 1 1 0 1 1 3 0 0 0 0 0 xi ≥ 0, ∀i ∈ {1, . . . , 10} x1 x2 x3 + x4 x5 x6 x7 5 x8 10 = x9 1 x10 8.5 H hierfür: Das Pivotelement für den ersten Basisaustauschschritt Das Anfangstableau TAnf ist bereits gekennzeichnet: 1 2 3 4 5 6 7 1 1 −1 0 0 0 5 8 1 1 0 1 0 0 10 9 0 1 0 0 −1 0 1 10 1 3 0 0 0 −1 8.5 1 −1 1 1 −24.5 −3 −6 ⇓ 1 2 7 1 1 4 1 1 0 1 9 0 1 0 0 −1 10 1 3 0 0 1 1 −2 −5 3 8 5 6 −1 0 0 0 5 0 0 10 0 1 0 −1 8.5 1 1 −14.5 ⇓ 26 1.3. DIE SIMPLEXMETHODE 7 2 1 1 1 4 −1 0 1 1 9 0 1 0 0 −1 2 1 0 −3 −1 1 10 −1 2 3 8 5 6 −1 0 0 0 5 0 0 5 0 1 0 −1 3.5 1 1 −4.5 8 5 6 −1 −1 0 1 0 4 0 0 5 0 1 −1 1.5 1 −1.5 ⇓ 7 9 3 1 1 4 −1 0 1 1 2 0 1 0 0 −1 1 0 10 −1 −2 2 3 2 −1 1 −2 ⇓ 7 9 10 8 5 1 0 −3 1 0 3 4 0 2 2 0 1 3 −1 −2 1 1 6 −1 5.5 −1 1 −2 1 3.5 0 0 −1 0 1 1 0 2 1 1 0 −1 1.5 0 0 Das Tableau ist primal- und dualzulässig. Die Zielfunktion hat den Wert 0. So können wir nun das Anfangstableau TAnf für die Phase 2 aufstellen. vT = 0 0 − 3 −1 −2 1 2 0 8 0 −1 0 2 −1 = 2 2 27 1.3. DIE SIMPLEXMETHODE z=− 5.5 3.5 = −19 2 0 8 0 1 1.5 5 6 3 −1 5.5 4 −2 1 3.5 2 −1 0 1 2 −1 1.5 2 2 −19 1 TAnf = 3 In der letzten Zeile gibt es keine Werte < 0, deshalb liefert uns das Anfangstableau für die Phase 2 schon die Optimallösung. Diese ist x1 = 5.5 und x2 = 1. Der Optimalwert der Zielfunktion ist 19. Beispiel 1.42 Eine Firma stellt 3 verschiedene Produkte A, B, und C her. Diese müssen 4 Maschinen passieren, bevor sie fertiggestellt sind. Die folgende Tabelle stellt die Fertigungszeit der einzelnen Produkte pro Maschine und die maximale tägliche Auslastung der Maschinen sowie den Gewinn pro Stück dar: Fertigungszeit: Einheit: Stunden pro Mengeneinheit Tagesauslastung: Einheit: Stunden Gewinn: Einheit: Geldeinheiten pro Mengeneinheit Fertigungszeit Tagesauslastung Produkt A Produkt B Produkt C Stunden Maschine 1 2 4 1 22.5 Maschine 2 3 2 1 16.5 Maschine 3 1 2 4 20 Maschine 4 1 1 3 24 Gewinn 4 5 3 28 1.3. DIE SIMPLEXMETHODE Wieviele Stücke von jeder Sorte müssen täglich hergestellt werden, damit der Gewinn maximal wird? 4x1 + 5x2 + 3x3 → max! 2x1 + 4x2 + x3 ≤ 22.5 3x1 + 2x2 + x3 ≤ 16.5 L= x + 2x + 4x ≤ 20 1 2 3 x1 + x2 + 3x3 ≤ 24 x1 , x2 , x3 ≥ 0 Ein Maximierungsproblem kann leicht in ein Minimierungsproblem umgewandelt werden. Dazu multipliziert man die Zielfunktion mit (−1) und minimiert diese Funktion unter denselben Restriktionen, unter welchen man das Maximierungsproblem gelöst hätte. In der folgenden Darstellung wurden schon die Schlupfvariablen eingeführt: L= −4 · x1 − 5 · x2 − 3 · x3 + 0 · x4 + 0 · x5 + 0 · x6 + 0 · x7 → min! 2 4 1 1 0 0 0 x4 22.5 x1 3 2 1 0 1 0 0 x 16.5 5 = x2 + 0 0 1 0 x 20 1 2 4 x 6 3 1 1 3 0 0 0 1 x7 24 x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0 In diesem Fall brauchen wir nicht das Hilfsproblem aufzustellen, da man das Problem folgendermassen auffassen kann: cT xR + 0 · xB → min! L= AxR + Im xB = b x ≥ 0, x ≥ 0 B R Dann ist: S = A−1 B AR = Im A = A t = A−1 B b = Im b = b v T = cTR − cTB S = cT − 0 = cT z = −cTB t = 0 29 1.4. CALIPSO FOR LINEAR PROGRAMMING Man kann also sofort das Anfangstableau TAnf der Phase 2 angeben, hier ist schon das Pivotelement für den ersten Basisaustauschschritt gekennzeichnet: 2 6 4 7 4 7 2 − 14 17.5 5 11 4 3 2 − 14 11.5 20 3 1 4 1 2 1 4 5 24 7 1 4 − 12 − 34 9 − 13 4 − 72 3 4 15 5 4 6 11 28 1 − 28 4 2 3 4 2 4 1 22.5 5 3 2 1 16.5 6 1 2 4 7 1 1 3 −4 −5 −3 5 6 28 11 1 − 11 112 11 6 11 1 − 11 46 11 1 3 − 11 4 11 3 11 1 7 − 11 7 − 11 − 19 11 1 4 11 13 11 ⇒ 0 2 7 4 − 11 1.4 1 1 2 − 14 1 1 2 3 − 14 1 − 14 2 87 22 3 0 − 17 − 27 2.5 3 − 11 175 22 7 − 14 1 4 − 34 10.5 5 11 629 22 19 28 11 28 35.5 ⇒ 3 4 Calipso for Linear Programming Ich verwendete das Programm Calipso for Linear Programming Version 4.0 für DOS und Beta-Test-Version 3.01 für Windows-Betriebssysteme. Das Programm wurde Jim Calvert, Professor an der Universität von Idaho entwickelt. ([email protected], http://www.uidaho.edu/∼calvert) Calipso for Linear Programming ist ein Lernprogramm für die mathematischen Gebiete Lineare und Ganzzahlige Optimierung. Es kann aber auch problemslos für praktische Anwendungen herangezogen werden. Es bezieht sich auf das Lehrbuch Linear Programming von C ALVERT und VOXMAN[20], kann aber mit jedem beliebigen Buch zu diesem Thema verwendet werden. Zuerst eine Kurzbeschreibung der beiden Versionen: 30 1.4. CALIPSO FOR LINEAR PROGRAMMING 1.4.1 DOS-Version Calipso for Linear Programming Version 4.0 für MS-DOS wurde 1995 fertiggestellt und beinhaltet folgende Funktionen: • LP SOLVER: Man gibt das LOP als System von Gleichungen und Ungleichungen ein. Es darf bis zu 250 Restriktionen und 500 Variablen aufweisen. Mit einer bestimmten Tastenkombination wird das Problem gelöst. Beim Beenden dieser Funktion wird die Option angeboten, für dieses Problem eine Datei für die Funktion PIVOTER zu erstellen. • Im PIVOTER gibt man ein Tableau ein oder verwendet die im LP SOLVER erzeugte Datei. Man führt selbst Basisaustauschschritte durch. PIVOTER ist anwendbar auf Probleme mit bis zu 39 Restriktionen und 63 Variablen. • GRAPH zeichnet für ein LOP mit 2 Variablen den zulässigen Bereich und die Niveaulinien der Zielfunktion. • BRANCH AND BOUND löst mit der Branch-and-Bound-Methode gemischt-ganzzahlige LOPe. • BRANCH AND BOUND TREE zeichnet für die Branch-and-Bound-Methode den Baum am Bildschirm vor. Der Benutzer kann Restriktionen in die Knoten hineinschreiben. Der Optimalwert wird dann vom Programm ausgerechnet und in den Knoten hinzugefügt. • IMPLICIT ENUMERATION löst 0-1 Probleme mit der Methode des impliziten Aufzählens. Im Dezember 1995 schrieb Jim Calvert noch, dass es unwahrscheinlich ist, dass er jemals Zeit finden wird, das Programm für Windows-Betriebssysteme umzuprogrammieren, jedoch seit Februar 1998 ist die Version für Windows-Betriebssysteme erhältlich. 31 1.4. CALIPSO FOR LINEAR PROGRAMMING 1.4.2 Windows-Version Calipso for Linear Programming Beta-Test-Version 3.01 für das Betriebssystem Windows hat folgende Funktionen: • TABLEAU dient zur Eingabe von Simplextableaus. • MODEL bildet das Simplextableau eines LOP. Der Benutzer gibt das LOP in Form von Gleichungen und Ungleichungen ein. Bei der Zielfunktion muss er dazuschreiben, ob es sich um ein Minimierungs- oder Maximierungsproblem handelt. • Mit PIVOT kann man Basisaustausche vornehmen. • SIMPLEX ist ein automatischer Löser und gibt das Endtableau aus. Er wendet die Revidierte Simplexmethode (vgl. Dantzig[2], Kapitel 9, S. 243ff.) an. • ANALYZE löst das LOP und gibt einen Bericht aus, der auch eine postoptimale Analyse enthält. Die Postoptimale Analyse beinhaltet unter anderem die Angabe, des Bereiches, in welchem die Beschränkungskoeffizienten bj mit j ∈ {1, . . . , m} und die Zielfunktionskoeffizienten ci mit i ∈ {1, . . . , n} variieren dürfen, ohne dass die Basisvariablen geändert werden müssen. • BBTREE zeigt einen Baum, auf welchem man Schritte der Branch-and-BoundMethode ausführen kann, um eine ganzzahlige Lösung zu finden. • BB löst automatisch mit der Branch-and-Bound-Methode ein ganzzahliges oder gemischt-ganzzahliges LOP. Ausserdem enthält diese Version von Calipso for Linear Programming noch Funktionen der Linearen Algebra, die aus dem Progamm Calipso for Linear Algebra, ebenfalls von C ALVERT implementiert wurde, entnommen sind. Für weitere Details verweise ich auf die Homepage [21]. 32 1.4. CALIPSO FOR LINEAR PROGRAMMING 1.4.3 Beispiel Ich beschreibe die Lösung von Beispiel 1.1 mit der Windows-Version. Mit der Funktion MODEL wird das LOP eingegeben: >LAGER=MODEL{ <min 2x1+8x2; <x1+x2 >= 5; <x1+x2 <= 10; <x2 >= 1; <x1+3x2 >= 8.5; <for i = 1 to 2 do xi >= 0; <} Calipso fasst die beiden Ungleichungen x1 ≥ 0 und x2 ≥ 0 als Teil des Systems Ax Q b auf. Deshalb erhalten die beiden Ungleichungen auch eigene Zeilen im Tableau. So wie wir das Tableau in 1.2.1 definiert haben, schreiben wir diese Zeilen nie ins Tableau, weil diese Restriktionen durch die Bedingung, dass bei einer zulässigen Lösung die rechte Spalte des Tableaus ≥ 0 sein muss, erfüllt wird. Um also ein Tableau zu erhalten, dass dem unseren ähnlich ist, müssen wir das Problem in Calipso anders eingeben: >LAGER=MODEL{ <min 2x1+8x2; <x1+x2 >= 5; <x1+x2 <= 10; <x2 >= 1; <x1+3x2 >= 8.5; <} x1 x2 s1 y1 s2 s3 y3 s4 y4 RHS y1 1 1 −1 1 0 0 0 0 0 5 s2 1 1 0 0 1 0 0 0 0 10 y3 0 1 0 0 0 −1 1 0 0 1 y4 1 3 0 0 0 0 0 −1 1 8.5 OBJ 2 8 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 −14.5 ART −2 −5 33 1.4. CALIPSO FOR LINEAR PROGRAMMING Die Spalten, welche die Koeffizienten der Variablen enthalten, sind mit x1, x2, . . . bezeichnet. Die Schlupfvariablen werden mit s1, s2, . . . bezeichnet, wobei die Zahl für die Zeile steht, für die sie Schlupfvariablen sind, also in diesem Beispiel: x1 + x2 − s1 = 5 y1, y2, . . . sind die künstlichen Variablen. Eine Restriktion mit einem ≤-Zeichen erhält eine Schlupfvariable, eine Restriktion mit einem = eine künstliche Variable und eine Restriktion mit einem ≥ eine Schlupfvariable und eine künstliche Variable. In der Spalte, die mit RHS (right hand side) gekennzeichnet ist, werden die Koeffizienten von b eingetragen. Die Zeile OBJ (objective function) enthält die Koeffizienten der Zielfunktion; bei einem Maximierungsproblem werden sie mit (−1) multipliziert. Der RHS Spalte der OBJ Zeile enthält 0. Die Zeile ART (artificial function) enthält die Koeffizienten der Zielfunktion der Phase 1 der Simplexmethode, also (−1) mal die Summe der Koeffizienten in den Zeilen, die mit yi bezeichnet sind. Das Tableau sieht dem zweiten Tableau des Hilfsproblems in Beispiel 1.41 sehr ähnlich. Wir haben jedoch auch der zweiten Gleichung eine künstliche Variable zugeordnet und diese im ersten Schritt ausgetauscht. Calipso for Linear Programming hat dieser Gleichung keine künstliche Variable zugeordnet und sich so diesen Basisaustausch erspart. Beim Basisaustausch in Calipso for Linear Programming (Funktion PIVOT) wird mit der OBJ Zeile dieselben Rechenschritte ausgeführt wie mit der ART Zeile. Mit der Funktion ANALYZE erhielt ich folgende Informationen: The maximum value of the objective function ist -19. SOLUTION ROW BASIC VARIABLE --- -------------1 x1 2 s2 3 x2 4 s1 VALUE ----5.5 3.5 1 1.5 34 1.4. CALIPSO FOR LINEAR PROGRAMMING In Calipso for Linear Programming führte ich dieselben Basisaustauschschritte durch, wie bei der Handrechnung. Hier meine Rechenschritte: x1 x2 s1 y1 s2 s3 y3 s4 y4 RHS x1 1 1 −1 1 0 0 0 0 0 5 s2 0 0 1 −1 1 0 0 0 0 5 y3 0 1 0 0 0 −1 1 0 0 1 y4 0 2 1 −1 0 0 0 −1 1 3.5 OBJ 0 6 2 −2 0 0 0 0 0 −10 ART 0 2 0 1 0 1 0 −4.5 −3 −1 x1 x2 s1 y1 s2 s3 y3 s4 y4 RHS x1 1 0 −1 1 0 1 −1 0 0 4 s2 0 0 1 −1 1 0 0 0 0 5 x2 0 1 0 0 0 −1 1 0 0 1 y4 0 0 1 −1 0 2 −2 −1 1 1.5 OBJ 0 0 2 −2 0 6 −6 0 0 −16 ART 0 0 −1 2 0 −2 3 1 0 −1.5 x1 x2 s1 y1 s2 s3 y3 s4 y4 RHS x1 1 0 0 0 0 3 −3 −1 1 5.5 s2 0 0 0 0 1 −2 2 1 −1 3.5 x2 0 1 0 0 0 −1 1 0 0 1 s1 0 0 1 −1 0 2 −2 −1 1 1.5 OBJ 0 0 0 0 0 2 −2 2 −2 −19 ART 0 0 0 1 0 0 1 0 1 0 35 Kapitel 2 Ganzzahlige Lineare Optimierung 2.1 Grundlagen Will man die schnellste Reiseroute für einen Handlungsreisenden finden, so ist es nicht sinnvoll, zwischen zwei Städten zu unterbrechen. Entweder fährt er die ganze Strecke oder gar nicht. Wir haben es also mit einem ganzzahligen Problem zu tun, genauer gesagt, mit einem sogenannten "0 - 1 Problem", es werden nur die beiden Werte 0 oder 1 als Lösung akzeptiert. Besonders bei Transporten wird nach ganzzahligen Lösungen gesucht. Im Zusammenhang mit der Frage nach einem Produktionsprogramm, das unter Berücksichtigung gegebener Kapazitätsschranken einen maximalen Erlös sichert, tritt das Problem der ganzzahligen Lösung auf. Man sucht das Optimum der Zielfunktion nicht mehr unter allen Punkten des zulässigen Bereichs M , sondern nur noch unter den in M enthaltenen ganzzahligen Punkten. Bei jeder konkreten Aufgabe ist natürlich erst zu prüfen, ob eine Behandlung als ganzzahliges Problem notwendig ist. Sind z.B. die Koeffizienten des Problems nur Schätzwerte, dann lohnt sich der zusätzliche Aufwand sicher nicht. Die durch die Ausgangsdaten dem Problem anhaftenden Ungenauigkeiten werden durch normale Behandlung und Runden der nichtganzzahligen Lösung auf einen benachbarten Gitterpunkt nicht erheblich vergrössert. 36 2.1. GRUNDLAGEN 2.1.1 Standardform eines ganzzahligen LOP Definition 2.1 (Standardform von G) Sei L ein kontinuierliches LOP in Standardform: f (x) = cT x → min! L= Ax = b x ≥ 0, x ∈ Rn Fordert man, dass alle Komponenten der Variablen x ganzzahlig sind, so sprechen wir von einem ganzzahligen LOP G in Standardform: f (x) = cT x → min! G= Ax = b x ≥ 0, x ∈ Zn Der Optimalwert der Zielfunktion ist eine reelle Zahl, b ∈ Rm , c, x ∈ Rn , A ist eine reelle m × n - Matrix. Die Gleichungen Ax = b, x ∈ Zn und x ≥ 0 beschreiben den zulässigen Bereich MG , welcher nun nicht mehr konvex ist. Definition 2.2 (Zulässiger Gitterpunkt) Sei M der zulässige Bereich von L. Jeder ganzzahlige Punkt von M wird zulässiger Gitterpunkt genannt. Die Menge der zulässigen Gitterpunkte bezeichnen wir mit MG . Wird nur von einigen Komponenten des Vektors x die Ganzzahligkeit gefordert, so spricht man von einem gemischt-ganzzahligen LOP GG. Sei 1 ≤ k < n. f (x) = cT x → min! GG = Ax = b x ≥ 0, x ∈ Z, i = {1, . . . , k} i Definition 2.3 (Ganzzahlige Optimallösung) Sei x̂ Optimallösung des Problems L. x̂ heisst ganzzahlige Optimallösung von G, wenn für alle Komponenten von x̂ gilt: x̂i ∈ Z, i = {1, . . . , n} 37 2.1. GRUNDLAGEN x̂ heisst ganzzahlige Optimallösung von GG, wenn für alle k Komponenten von x̂, für welche die Ganzzahligkeit gefordert ist, gilt: x̂i ∈ Z, i = {1, . . . , k} 2.1.2 Eindeutigkeit und Existenz der Lösungen Sei M der zulässige Bereich des kontinuierlichen Problems L und MG der zulässige Bereich des Problems G. 1. Ist M leer, so ist auch MG leer, da MG ⊆ M . 2. Ist M unbeschränkt, so kann MG eine der folgenden Formen haben: (a) ebenfalls unbeschränkt. (b) leer (siehe Abbildung 2.1). 3. Ist M beschränkt und nicht leer, so gibt es zwei Möglichkeiten für die Form von MG : (a) ebenfalls beschränkt und nicht leer. (b) leer (siehe Abbildung 2.2). 1 x2 q ........................... .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. .................. 1 x1 q 1 x2 . ...... ...... ............. . .. . . . ............ ............. ....................... . .. . . . . . .. ................... .................... ................................. . . . . . . . . . . . .. .......................... ............................ ............................................ . .. . . . . . . . . . . . . . ................................ ................................... ..................................................... . .. . . . . . . . . . . . . . . . .. 2 1 x1 Abbildung 2.1: M unbeschränkt, aber Abbildung 2.2: MG leer q M beschränkt und nicht leer, aber MG leer 38 2.1. GRUNDLAGEN In den Fällen 1, 2(b) und 3(b) existieren keine zulässigen Gitterpunkte, das zugehörige ganzzahlige LOP ist also unlösbar. Im Fall 2(a) gibt es unendlich viele Gitterpunkte. Diese Tatsache leuchtet uns schnell ein, wenn wir uns die Situation im zweidimensionalen Raum graphisch vorstellen, ist aber nicht trivial zu beweisen. Weiters hängt es von der Zielfunktion ab, ob das zugehörige ganzzahlige LOP lösbar ist oder nicht (vgl. Bemerkung 1.22 und Beispiel 1.23). Im Fall 3(a) ist MG endlich und das Problem lösbar. Sei o der Optimalwert der Zielfunktion von L und oG der Optimalwert der Zielfunktion von G. Dann gilt: o ≤ oG , (2.1) wenn L und G, wie vorausgesetzt, Minimierungsprobleme sind. Der Optimalwert der Zielfunktion von L bildet eine untere Schranke für den Optimalwert von G. Analog gilt für Maximierungsprobleme o ≥ oG . Ist die Optimallösung von L ganzzahlig, so hat man die Optimallösung von G gefunden. In diesem Fall gilt das Gleichheitszeichen bei den obigen Abschätzungen für den Optimalwert der Zielfunktion. Meistens ist die Optimallösung von L jedoch nicht ganzzahlig und man sucht Methoden, mit denen man eine Optimallösung von G findet. 2.1.3 Lösung durch Aufzählen Diese Lösungsmethode kommt manchen vielleicht als erstes in den Sinn. Da MG ja endlich ist, probiert man der Reihe nach jedes Element von MG aus. Das Element aus MG mit kleinstem Zielfunktionswert ist dann die Optimallösung des ganzzahligen Minimierungsproblems. Analog ist das Element aus MG mit dem grössten Zielfunktionswert die Optimallösung des ganzzahligen Maximierungsproblems. Eine solche Lösungsmethode ist zwar endlich, sobald jedoch n grössere Dimensionen annimmt, benötigen selbst die schnellsten Computer zuviel Zeit für die Auffindung der Optimallösung. Dazu folgendes Beispiel. 39 2.1. GRUNDLAGEN Beispiel 2.4 Nehmen wir ein ganzzahliges LOP G an. f (x) = cT x → min! G= Ax = b x ∈ {0, 1}100 (2.2) Es gibt also 2100 = 1.267650600228 ∗ 1030 Vektoren, die zuerst geprüft werden, ob sie im zulässigen Bereich MG liegen. Von jeder zulässigen Lösung speichert man den zugehörigen Zielfunktionswert ab und bestimmt danach die Optimallösung. Ein schneller Computer, der pro Sekunde eine Milliarde Vektoren prüfen könnte, wäre mehrere Milliarden Jahre damit beschäftigt, das Problem zu lösen. 2.1.4 Wozu eigene Methoden? Diese Frage wird des öfteren gestellt. Man könnte meinen, dass es doch viel einfacher wäre, den nächstgelegenen zulässigen Gitterpunkt der kontinuierlichen Optimallösung als ganzzahlige Optimallösung anzugeben. In manchen Fällen mag diese Methode zum Ziel führen, aber nicht in allen. Dazu folgendes Beispiel. Beispiel 2.5 f (x) = x1 − 9x2 → min! −x1 + 6x2 ≤ 11 G= x1 ≥ 1 5x1 + 2x2 ≤ 27 x , x ≥ 0, x , x ∈ Z 1 2 1 2 40 2.1. GRUNDLAGEN Die Lösung des kontinuierlichen Problems: f (x) = x1 − 9 · x2 + 0 · x3 + 0 · x4 + 0 · x5 → min! −x1 + 6x2 + x3 = 11 L= x1 − x4 = 1 5x + 2x + x = 27 1 2 5 x ,x ,x ,x ,x ≥ 0 1 2 3 4 5 Phase 1: Das Hilfsproblem lautet: g(x) = x6 + x7 + x8 → min! x1 −1 6 1 0 0 x2 H= 1 0 0 −1 0 x3 5 2 0 0 1 x4 x5 xi ≥ 0, ∀i ∈ {1, . . . , 8} x 11 6 + x7 = 1 27 x8 Im Anfangstableau ist bereits das Pivotelement für den ersten Basisaustausch gekennzeichnet: 1 2 3 4 5 6 −1 6 1 0 0 11 7 1 0 0 −1 0 1 8 5 2 0 0 1 27 −5 −8 −1 1 1 ⇒ −1 −39 1 2 6 4 8 3 −1 6 1 0 0 11 ⇒ 7 1 0 0 −1 0 1 5 5 2 0 0 1 27 −1 0 1 1 1 −1 ⇒ 2 6 4 5 3 −1 6 1 0 0 11 7 1 0 0 −1 0 1 8 5 2 0 0 1 27 −6 −2 1 1 7 2 6 3 1 6 1 −1 0 12 1 1 0 0 −1 0 5 −5 2 0 1 0 1 4 −1 −28 8 1 5 1 22 0 1 0 41 2.1. GRUNDLAGEN Die Vorbereitungen für die Phase 2: T v = −9 0 − 6 −1 = 0 1 0 0 −1 −9 1 2 5 z=− 12 0 1 0 1 = −1 22 Nun die Phase 2: Im Anfangstableau ist wieder bereits das Pivotelement für den ersten Basisaustausch markiert: 2 4 3 6 −1 12 1 0 −1 1 5 2 5 22 −9 1 −1 ⇒ 3 4 2 1 6 − 16 2 1 0 −1 1 16 3 18 − 12 17 5 − 13 3 2 Die kontinuierliche Optimallösung lautet also: x1 = 3 5 15 96 1 32 41 16 1 1 − 16 3 16 35 8 1 4 − 16 3 16 27 8 3 32 299 16 2 ⇒ 47 32 35 3 = 4.375, x2 = 41 16 = 2.5625 mit dem Zielfunktionswert x1 − 9x2 = − 299 16 = −18.6875 Wird diese Optimallösung so gerundet, dass die Werte noch im zulässigen Bereich liegen, ergibt: x1 = 4, x2 = 2 mit Optimalwert −14. Der ganzzahlige Optimalwert, den wir später berechnen werden, ist allerdings −17 mit x1 = 1 und x2 = 2. 42 2.1. GRUNDLAGEN x2 3 2 1 x1 1 2 3 4 5 Abbildung 2.3: Bild zu Beispiel 2.5. Die dicker gezeichneten Linien umranden den zulässigen Bereich. Die strichlierte Linie stellt eine Niveaulinie der Zielfunktion dar. In diesem Fall ist es die Niveaulinie zum Optimalwert des kontinuierlichen LOPs. Der ausgezeichnete linke Punkt stellt die ganzzahlige Optimallösung dar, der ausgezeichnete rechte obere die Optimallösung des kontinuierlichen Problems und der ausgezeichnete rechte untere Punkt ist der gerundete Wert der kontinuierlichen Optimallösung. Man sieht, dass man durch Runden weit von der wirklichen Lösung entfernt sein kann. Eine Methode, die nur die unmittelbare Umgebung eines Punktes untersucht, findet nur ein lokales Optimum. Wir benötigen also Methoden, die alle zulässigen Gitterpunkte des nichtkonvexen zulässigen Bereichs betrachtet. 1958 veröffentlichte R.E. G OMORY sein Schnittverfahren [23] zur Lösung ganzzahliger LOP. Im folgenden sei die Methode kurz beschrieben: Man löst das Problem, als ob es ein kontinuierliches wäre. Erhält man einen Punkt als Optimallösung, der nicht ganzzahlig ist, so schneidet man diesen weg, indem man eine weitere Restriktion hinzufügt. Diese Restriktion darf jedoch keinen ganzzahligen Punkt aus dem zulässigen Bereich entfernen. Diese Methode wird im weiteren nicht behandelt. 43 2.1. GRUNDLAGEN 1960 veröffentlichten A.H.L AND und A.G.D OIG [11] einen weitere Methode zur Lösung ganzzahliger LOP, das Verzweigungsverfahren. Bei dieser Methode wird die Niveaulinie der Zielfunktion zum Optimalwert des kontinuierlichen Problems folgendermassen parallel verschoben: Bei einem Maximierungsproblem so, dass der Optimalwert abnimmt, beim Minimierungsproblem genau umgekehrt. Und zwar wird sie so weit verschoben, bis ein zulässiger Gitterpunkt erreicht ist. Bevor wir uns mit den Verzweigungsverfahren beschäftigen, ein paar Definitionen aus der Graphentheorie. 2.1.5 Graphen und Bäume Definition 2.6 (Linearer Graph, Knoten, Kante) Ein linearer Graph besteht aus einer Anzahl von Knoten, von denen jeder mit einigen oder allen anderen Knoten durch Strecken verbunden ist, welche Kanten des Graphen genannt werden. Definition 2.7 (Gerichtete Kante) (i, j) beschreibt eine gerichtete Kante. Dies bedeutet konkret, dass man von i nach j gehen darf (z.B. in einem Algorithmus, der auf einem Graphen basiert). Definition 2.8 (Kantenfolge, Kette) Eine Folge von gerichteten Kanten (i, i1 ), (i1 , i2 ), (i2 , i3 ), . . . , (ik , j) durch die der Knoten i mit dem Knoten j verbunden wird, heisst Kantenfolge oder Kette. Definition 2.9 (Kreis) Eine Kantenfolge, die den Knoten i mit sich selbst verbindet, heisst Kreis. Ein einfacher Kreis tritt dann auf, wenn alle Kanten verschieden sind. Definition 2.10 (Baum) Ein Graph ohne Kreise, bei dem jeder Knoten mit jedem anderen Knoten durch eine Kantenfolge verbunden ist, heisst Baum. Ein Baum ist gerichtet, wenn die Kanten eine Richtung aufweisen. 44 2.1. GRUNDLAGEN Definition 2.11 (Endknoten) Jeder Knoten, der mit dem Graphen nur durch eine einzige Kante verbunden ist, heisst Endknoten. Definition 2.12 (Wurzel) Der Knoten in einem gerichteten Baum, von dem nur gerichtete Kanten wegführen und auf den keine gerichtete Kante zeigt, wird Wurzel genannt. Definition 2.13 (Vater, Sohn, Bruder) Sei (i, j) die gerichtete Kante vom Knoten i zum Knoten j. Knoten i ist der Vater von Knoten j. Knoten j ist der Sohn von Knoten i. Sei Knoten k ein weiterer Sohn von Knoten i. Knoten k ist der Bruder von Knoten j. Definition 2.14 (Stufen) Die Wurzel ist der Knoten der Stufe 0. Ihr Söhne sind Knoten der Stufe 1. Deren Söhne gehören der Stufe 2 an, usw. 45 Kapitel 3 Die Verzweigungsverfahren Die Idee des impliziten Aufzählens aller möglichen Lösungen ist die Grundlage für die Verzweigungsverfahren oder Branch-and-Bound-Methoden, bei denen verzweigt (branch) und abgegrenzt (bound) wird. Sie verwenden zur Darstellung der Lösungsmenge einen gerichteten Baum. Jedem Knoten des Baumes entspricht ein LOP. Die Wurzel dieses Baumes entspricht dem kontinuierlichen LOP L, welches man aus dem ganzzahligen LOP erhält, indem man die Restriktion x ≥ 0, x ∈ Zn zu x≥0 abschwächt. 3.1 3.1.1 Der Algorithmus von L AND und D OIG Die Idee Wir haben folgendes ganzzahliges LOP G und das zugehörige kontinuierliche LOP L. Wie schon oben gezeigt, ist der Optimalwert von G keinesfalls kleiner als der Optimalwert von L. Wenn man nun die Niveaulinie der Zielfunktion zum Optimalwert von L in Richtung des zunehmenden Wertes parallel verschiebt, gelangt man einmal zu einer Stelle, 46 3.1. DER ALGORITHMUS VON LAND UND DOIG an der die Niveauline durch einen zulässigen ganzzahligen Punkt verläuft; dann ist man fertig, man hat eine ganzzahlige Optimallösung von G gefunden. Erreicht man nie eine solche Stelle, so besitzt G keine ganzzahlige Lösung, geschweige denn eine ganzzahlige Optimallösung. Rechnerisch kann man die Parallelverschiebung immer nur für eine Variable durchführen. Anders ausgedrückt: Man hält alle Koordinaten fest, bis auf eine. Definition 3.1 Sei x eine reelle Zahl. Dann bezeichnet • bxc die grösste ganze Zahl, die ≤ x ist. • dxe die kleinste ganze Zahl, die ≥ x ist. Satz 3.2 Sei M der zulässige Bereich von L, M ∩ Zn 6= ∅ und x0 ∈ M die Optimallösung von L. Dann existiert für jedes k ∈ {1, . . . , n} ein x0 ∈ M so, dass x0k ∈ {bx0k c, dx0k e}. Beweis: Sei x̂ = (x̂1 , . . . , x̂n ) ∈ M ∩ Zn . 1. Ist x̂k = x0k , so ist man fertig. D.h. die Optimallösung von L ist auch Optimallösung von G. 2. Ist x̂k > x0k , aber x̂k ≥ dx0k e > x0k . Sei λ= dx0k e − x0k x̂k − x0k Es gilt 0 < λ ≤ 1, da x̂k − x0k > 0, dx0k e − x0k > 0 und dx0k e − x0k ≤ x̂k − x0k . Definiere x0 := x0 + λ(x̂ − x0 ). Da x̂, x0 ∈ M und M konvex ist, so ist x0 ∈ M . Weiters x0k = x0k + λ(x̂k − x0k ) = x0k + (dx0k e − x0k ) = dx0k e 3. Ist x̂k > x0k , aber x̂k ≥ dx0k e > x0k , so verläuft der Beweis analog. 47 3.1. DER ALGORITHMUS VON LAND UND DOIG Folgerung 3.3 Sei x0 = x01 , . . . , x0k−1 , x0k , x0k+1 , . . . , x0n mit x0k ∈ {bx0k c, dx0k e}. Aus Satz 3.2 folgt: • Ist keiner der Punkte x0 in M , so ist das Problem G unlösbar. • Andernfalls wähle x1 so, dass f (x1 ) = min{f (x0 ) | x0 ∈ M, x0k ∈ {bx0k c, dx0k e}} x1 ist die Optimallösung zum LOP L x ∈Z k Nun ist noch die Frage offen, warum der Optimalwert gerade bei bx0k c oder dx0k e und nicht bei bx0k c − 1, bx0k c − 2 oder dx0k e + 1 gefunden wird. Dazu folgender Satz 3.4 Sei M der zulässige Bereich von L, M ∩ Zn 6= ∅ und x0 ∈ M die Optimallösung von L. Sei xk , wie in Satz 3.2 beschrieben, modiziert worden. Fall 1: Sei x0k = bx0k c, dann gilt: f (x0 ) ≤ f (x01 , . . . , x0k−1 , y, x0k+1 , . . . , x0n ) für alle y ≤ x0k . Fall 2: Sei x0k = dx0k e, dann gilt: f (x0 ) ≤ f (x01 , . . . , x0k−1 , y, x0k+1 , . . . , x0n ) für alle y ≥ x0k . Beweis: Ich beweise nur Fall 1, Fall 2 ist analog zu zeigen. Sei x̃ = f (x01 , . . . , x0k−1 , y, x0k+1 , . . . , x0n ) mit y ≤ x0k oder y ≥ x0k . Betrachte die Strecke [x̃, x0 ] (vgl. Definition 1.5). Da f linear ist und x0 ∈ [x̃, x0 ], muss 48 3.1. DER ALGORITHMUS VON LAND UND DOIG f (x0 ) in dem von den Zahlen f (x̃), f (x0 ) begrenzten Intervall liegen. Wegen f (x0 ) ≤ f (x0 ) kann daher nur f (x0 ) ≤ f (x0 ) ≤ f (x̃) gelten. Folgerung 3.5 • Sei L das LOP an einem Knoten des Lösungsbaumes und L∗ das LOP an einem Sohn dieses Knotens. Sei o der Optimalwert von L und o∗ der Optimalwert von L∗ , dann gilt: o ≤ o∗ • Hat der Knoten K des Lösungsbaumes einen Optimalwert der grösser ist als der ei- nes anderen Knotens N , so haben alle Söhne von Knoten K ebenfalls einen grösseren Optimalwert als der Knoten N . Liefert uns Knoten N eine ganzzahlige Lösung, so ist es nicht nötig, die Söhne von Knoten K zu untersuchen, da unter diesen, wenn überhaupt eine ganzzahlige Lösung gefunden wird, deren Optimalwert sicher nicht kleiner ist als der von Knoten N . Wir haben also alle möglichen LOP, die zu den Söhnen von Knoten K gehören, implizit untersucht. Bemerkung 3.6 Die LOPe an den Knoten des Lösungsbaumes unterscheiden sich vom LOP an der Wurzel dadurch, dass ihnen eine oder mehrere Restriktionen hinzugefügt wurden. Ist die Optimallösung des LOPs an einem Knoten ganzzahlig, so ist diese eine zulässige, aber nicht unbedingt optimale Lösung von G (vgl. Kapitel 2.1). 3.1.2 Die graphische Beschreibung Sei L gelöst, die nicht ganzzahlige Optimallösung sei x0 = (x01 , . . . , x0n ) mit zugehörigem / Z. Wir projizieren den Graphen {(x, f (x)); x ∈ M } Optimalwert f (x0 ) = o. Sei x0k ∈ auf die (xk , f (x)) - Ebene: (x, f (x)) 7→ (xk , f (x)) Diese Projektion könnte zum Beispiel so aussehen: 49 3.1. DER ALGORITHMUS VON LAND UND DOIG f (x) o1 o .. .. .. .. . . ........... .... ... . .......... . ... . .. . .......... . ... . . .......... . . . . .. . . . . ... . . . . ... . . . . .. ... .. . . . . ... . . . . . . . . ... . . . ... . .. . . . . ... . . . . . . .. . . . . . . . . . . . .. .. . . . ... ... . . . . . . ... . ... ... . .. . .. . ... . .. .. . . . . ... ... . .. . . . . ... ... . . .. . . .. . . . . . . . .. . . . ... . .. . . . .. .. . . .. . .. . . .. .. . . . . . . .. . ... . . .. . .. ... ... .. . ... .. . .. ... ... .. . .. . .. . . ..... . . .. ... .. .. 0 1 2 x0k 3 4 xk Die punktierte Linie stellt den minimalen zulässigen Wert dar, den die Variable xk beim zugehörigen Wert f (x) erreichen kann. Die Punkt-Strich-Linie analog dazu den maximalen zulässigen Wert. Wir verfolgen die punktierte Linie von (x0k , o) ausgehend, bis wir zu einem ganzzahligen Wert für xk gelangen und merken uns den zugehörigen Wert f (x) = f1 . Ebenso verfolgen wir die Punkt-Strich-Linie bis wir zu einem ganzzahligen Wert für xk gelangen und merken uns wieder den zugehörigen Wert f (x) = f2 . Das Minimum von f1 , f2 bezeichnen wir mit o1 , der Punkt, für den f diesen Wert annimmt, nennen wir x1 = (x11 , . . . , x1n ). Es gilt o1 ≥ o. In der obigen Abbildung liegt x0k zwischen 2 und 3. Verfolgen wir von (x0k , o) aus die punktierte Linie, so erreichen wir den Punkt (2, f1 ). Verfolgen wir von (x0k , o) aus die Punkt-Strich-Linie, so gelangen wir zum Punkt (3, f2 ). f1 wird auf o1 umbenannt. Als erstes fügen wir dem LOP L die Restriktion xk = x1k hinzu, nennen es nun L1 und 50 3.1. DER ALGORITHMUS VON LAND UND DOIG lösen es. Ist die erhaltene Optimallösung ganzzahlig, so sind wir fertig. Ist dies nicht der Fall, so müssen wir noch eine weitere Variable auswählen, welche in der eben erhaltenen Optimallösung nicht ganzzahlig ist, z.B. xl , und fahren nach obigem Schema weiter. Wir projizieren also den Graphen {(x, f (x) | x ∈ M1 } auf die (xl , f (x))- Ebene, wobei M1 der zulässige Bereich von L1 ist. Wir erhalten die Werte f3 und f4 auf dieselbe Weise, wie wir die Werte f1 und f2 erhalten haben. Wir benötigen weiters noch die Optimalwerte von zwei weiteren LOPen. Das eine Problem ist L mit der zusätzlichen Restriktion xk = x1k − 1, das andere L mit der zusätzlichen Restriktion xk = x1k + 1. Einer der beiden Optimalwerte ist max(f1 , f2 ), den anderen müssen wir uns berechnen. Sei dieser f5 . Es ist o2 = min(f3 , f4 , f5 , max(f1 , f2 )) und o2 ≥ o1 . Der Wert o2 ist also eine untere Schranke für den Optimalwert von G. Würden die Werte f5 und max(f1 , f2 ) nicht zur Auswahl für o2 hinzugezogen, so würden wir nur ein lokales Minimum finden, nicht aber alle Gitterpunkte untersuchen und so ein globales Minimum finden. Die LOPe L x = x1 − 2 k und k L x = x1 + 2 k k brauchen nicht zur Auswahl hinzugezogen werden (vgl. Satz 3.4). 3.1.3 Der Algorithmus Dieser Algorithmus erstellt einen Baum, dessen Knoten mit natürlichen Zahlen, beginnend bei 0, in der Reihenfolge ihrer Konstruktion durchnumeriert werden. Zu jedem Knoten des Baumes gehört ein eigenes LOP. Zur Wurzel gehört das LOP L; zu jedem anderen Knoten ein modifiziertes LOP Li , i ∈ N, welches man dadurch erhält, dass gewisse Variable konstant gesetzt werden. Diese Konstante ist eine ganze Zahl. Der Wert eines Knoten des Baumes entspricht dem Optimalwert des zu diesem Knoten gehörigen LOPs. Ist die Optimallösung ein Element aus M , also aus dem zulässigen Bereich des LOPs L, so ist 51 3.1. DER ALGORITHMUS VON LAND UND DOIG der Wert eine reelle Zahl. Andernfalls, also wenn das LOP keine zulässige Lösung besitzt, setzen wir als Wert N Z für nicht zulässig. Die Knoten werden durch gerichtete und bezeichnete Kanten verbunden. Gerichtet sind sie vom bereits bestehenden zum neu konstruierten Knoten. Bezeichnet werden die Kanten mit dem Index der Komponente der Basisvariablen, welche im jeweiligen Schritt konstant gesetzt wurde. Im Laufe des Verfahrens werden gewisse Knoten markiert. Sie erhalten die Marken o0 , o1 , o2 , . . . in der Reihenfolge, in der sie markiert werden. Die zugehörigen Optimalwerte sind monoton steigend. Wir haben ein ganzzahliges LOP G. Schritt 0 Der erste Knoten, die Wurzel des Baumes, wird erstellt und mit 0 numeriert. Zu ihm gehört das LOP L mit der zugehörigen Optimallösung x0 . Erfüllt diese Lösung x0 auch die Restriktionen des Problems G, so haben wir bereits eine ganzzahlige Lösung und haben somit das LOP G gelöst. Andernfalls weise der Wurzel als Wert den Optimalwert von L und als Marke o0 zu (vgl. Abb. 3.1). Gehe zu Schritt 1. Schritt 1 Wir konstruieren zwei Knoten der Stufe 1 und verbinden sie durch gerichtete Kanten mit der Wurzel. Dazu zeichnen wir eine Basisvariable xr , für die x0r ∈ / Z gilt, als Verzweigungsvariable aus und lösen die folgenden LOPe: cT x → min! Ax = b L1 = xr = bx0r c x≥0 cT x → min! Ax = b L2 = xr = dx0r e x≥0 (3.1) (3.2) Ist eines der beiden Probleme unlösbar, so existiert zu diesem Problem natürlich auch kein Optimalwert. Sind beide Probleme unlösbar, so ist G unlösbar, d. h. es 52 3.1. DER ALGORITHMUS VON LAND UND DOIG gibt keine zulässigen ganzzahligen Lösungen zu G, und schon gar keine Optimallösung. (vgl. Satz 3.2) Dem einen Sohn der Wurzel, Knoten 1, wird das LOP L1 und sein Optimalwert zugewiesen. Dem anderen Sohn, Knoten 2, LOP L2 und sein Optimalwert. Existiert einer der beiden Optimalwerte nicht, so erhält dieser Knoten den Wert N Z. Die neuen Knoten sind noch nicht markiert. Die beiden neuen Kanten erhalten die Bezeichnung r. Schritt 2 Zu diesem Schritt kehrt der Algorithmus immer wieder zurück. Wir suchen uns einen Knoten mit folgenden Eigenschaften: • er hat einen reellen Wert • er wurde noch nicht markiert • sein Wert ist kleiner als die Werte der anderen noch nicht markierten Knoten Wenn wir einen solchen Knoten gefunden haben und annehmen, dass die Marken o0 , o1 , . . . , ok−1 bereits vergeben sind, so markieren wir diesen jetzt mit ok . Ist die Optimallösung des zu diesem Knoten gehörigen LOPs ganzzahlig, so haben wir G gelöst. Ansonsten weiter bei Schritt 3. Schritt 3 Wir untersuchen die Brüder des Knotens, der mir ok markiert wurde und konstruieren eventuell einen neuen Knoten, d.h. einen weiteren Sohn des Vaters vom Knoten mit der Markierung ok . Sei der Vater Knoten N . Dieser muss nicht die Markierung ok−1 besitzen. Nehmen wir an, dass die Kante, die auf Knoten N weist, mit s bezeichnet wurde. Das LOP LN enthält also u.a. die Restriktion xs = g für ein g ∈ Z. Wir haben nun die folgenden zwei Probleme: (die Punkte stehen für Restriktionen, die sich aus den Kanten, die von der Wurzel zum Knoten N führen, 53 3.1. DER ALGORITHMUS VON LAND UND DOIG ergeben) L1N L2N cT x → min! Ax = b = ... xs = g − 1 x≥0 cT x → min! Ax = b = ... xs = g + 1 x≥0 (3.3) (3.4) Eines der beiden LOPe wurde bereits gelöst; es gehört zu einem anderen Sohn des Knotens N . Das andere muss man erst lösen. Wir arbeiten mit dem LOP, das den kleineren Optimalwert aufweist, weiter. Ist dies das Problem, welches in diesem Schritt gelöst wurde, so muss ein neuer Knoten konstruiert werden, dem sowohl das LOP als auch der zugehörige Optimalwert zugeordnet wird. Die zugehörige Kante wird mit s bezeichnet. Gehe zu Schritt 4. Schritt 4 Nun wird der Knoten mit der Marke ok verzweigt. Die Regeln entnehme man aus Schritt 1. Gehe zu Schritt 2. Bemerkung 3.7 1. Zu Schritt 3: Den Fall, dass beide Probleme denselben Optimalwert aufweisen, erwähnen die Autoren [11] nicht. Wenn wir uns einen der beiden Knoten zum Weiterarbeiten auswählen, so gehört der andere bei der nächsten Abarbeitung von Schritt 2 zu den Kandidaten für die neue Marke. Das heisst wir arbeiten eigentlich mit beiden weiter. Ein Knoten wird gleich in Schritt 4 untersucht. In Schritt 2 wird dann geprüft, ob es sinnvoll ist, mit dem anderen weiterzuarbeiten. 2. Zur Wahl der Verzweigungsvariablen: Wie sich eine ungünstige Wahl der Verzweigungsvariablen auf die Efzienz des Verfahrens auswirken kann, zeigt Beispiel 3.8. 54 3.1. DER ALGORITHMUS VON LAND UND DOIG Die Autoren geben an, dass man jene Komponente von x wählen soll, deren Differenz zwischen ihrem Wert in der Optimallösung und der nächstgelegenen ganzen Zahl am grössten ist. 3.1.4 Findet der Algorithmus die Optimallösung? Um diese Frage zu beantworten, fassen wir zuerst ein paar Erkenntnisse zusammen: • Die Optimalwerte an den Knoten mit den Marken o0 , o1 , . . . bilden eine monoton wachsende Folge von unteren Schranken für den Optimalwert der Zielfunktion von G. • Der Optimalwert eines bereits konstruierten, aber nicht markierten Knotens ist grösser oder gleich dem Optimalwert am zuletzt markierten Knoten. Dies folgt aus Schritt 2. • Der Optimalwert eines noch nicht konstruierten Knotens ist in keinem Fall besser als der Optimalwert am zuletzt markierten Knoten (vgl. Folgerung 3.5). Wenn man also alle möglichen zulässigen Lösungen untersucht und zu diesem Problem überhaupt eine Optimallösung existiert, dann findet der Algorithmus diese auch. Die nun aufgetretene Frage, ob der Algorithmus alle Möglichkeiten untersucht, behandeln wir als nächstes: • Betrachten wir Schritt 1. Sei L1 unlösbar, d.h. Probleme, für die xr = bx0r c eine Restriktion ist, haben keine zulässige Lösung. Wir brauchen die Restriktionen xr = bx0r c − 1, xr = bx0r c − 2, . . . nicht mehr betrachten, da M konvex ist: Nach Voraussetzung ist x0 ∈ M . Wäre x̃ = (x01 , . . . , x0r−1 , y, x0r+1 , . . . , x0n ) ∈ M für ein y ≤ bx0r c − 1, so wäre auch jedes Element auf der Strecke [x̃, x0 ] in M , insbesondere aber (x01 , . . . , x0r−1 , bx0r c, x0r+1 , . . . , x0n ). Dies ist ein Widerspruch zur Annahme, dass L1 unlösbar ist. Vgl. auch Satz 3.4. Wir haben also - bei festgehaltenen Koordinaten x1 , . . . , xr−1 , xr+1 , . . . , xn - alle möglichen ganzzahligen Werte für xr , die kleiner als bx0r c sind, implizit untersucht 55 3.1. DER ALGORITHMUS VON LAND UND DOIG und ausgeschlossen. Explizit untersucht und ausgeschlossen wurde der Wert bx0r c. Selbige Betrachtungen kann man mit dem LOP L2 durchführen. • In Schritt 3 wird von den Brüdern eines markierten Knotens der mit kleinerem reellen Wert konstruiert. Dieser ist ein Kandidat für die nächste in Schritt 2 zu setzende Marke. Die Frage in der Überschrift dieses Abschnitts ist also mit ja zu beantworten. 3.1.5 Beispiel Beispiel 3.8 Dieses Beispiel ist in Ungleichungsform angegeben, die Verfahrensweise ist jedoch dieselbe wie bei einem LOP in Standardform. x1 − 9x2 → min! −x1 + 6x2 ≤ 11 G= x1 ≥ 1 5x1 + 2x2 ≤ 27 x , x ≥ 0, x , x ∈ Z 1 2 1 2 Schritt 0 ist bei beiden Möglichkeiten derselbe: Schritt 0 Das kontinuierliche Problem wurde in Beispiel 2.5 gelöst: x01 = x02 = 41 16 35 3 = 4.375, = 2.5625 mit Optimalwert −18.6875. Die Lösung ist nicht ganzzahlig. Knoten 0 wird konstruiert. Ihm wird das LOP L samt Optimalwert zugewiesen und er wird mit o0 markiert. o0 0 −18.6875 Abbildung 3.1: Die Wurzel des Lösungsbaums 56 3.1. DER ALGORITHMUS VON LAND UND DOIG 1. Möglichkeit: die Variable x1 wird als erste Verzweigungsvariable gewählt. Schritt 1 Wir lösen x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L1 = 5x1 + 2x2 ≤ 27 x1 = 4 x1 , x2 ≥ 0 und x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L2 = 5x1 + 2x2 ≤ 27 x1 = 5 x1 , x2 ≥ 0 Nun konstruieren wir die Söhne von Knoten 0, nämlich Knoten 1 und Knoten 2 und weisen ihnen die zugehörigen Optimalwerte zu. Die beiden Kanten, welche die Söhne mit dem Vater verbinden, werden mit 1 bezeichnet. Knoten 1 Knoten 2 x1 4 5 x2 2.5 1 −18.5 −4 Optimalwert In den folgenden Abbildungen wird die Bezeichnung der Kanten aus Gründen der Übersichtlichkeit weggelassen. 57 3.1. DER ALGORITHMUS VON LAND UND DOIG o0 0 −18.6875 ... ....... .... ....... ... .... ... . .... . . .. .... ... . .... . . .. .... . . . .... . . . ... .... 1 −18.5 2 −4 Schritt 2 Knoten 1 wird mit o1 markiert. Lösung am Knoten 1 noch nicht ganzzahlig. Schritt 3 Mit N = 0 und x1 = 4 stellen wir die folgenden zwei Probleme auf: x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L10 = 5x1 + 2x2 ≤ 27 x1 = 3 x1 , x2 ≥ 0 x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 2 L0 = 5x1 + 2x2 ≤ 27 x1 = 5 x1 , x2 ≥ 0 L20 entspricht dem Problem L2 , und braucht daher nicht mehr gelöst zu werden. Der Optimalwert von L10 ist −18 mit x2 = 2.3̇. Dies liefert Knoten 3. Die Kante von Knoten 0 zu Knoten 3 bekommt die Bezeichnung 1. Problem L10 wird in L3 umbenannt, womit die Bezeichnungen L10 und L20 wieder frei sind. Schritt 4 Verzweigung von Knoten 1, wodurch wir die Knoten 4 und 5 erhalten. In der folgenden Tabelle werden die Ergebnisse der zugehörigen LOPe dargestellt. 58 3.1. DER ALGORITHMUS VON LAND UND DOIG Knoten 4 Knoten 5 x1 4 4 x2 2 3 −14 NZ Optimalwert Die neuen Kanten werden mit 2 bezeichnet. o0 0 −18.6875 .. ................ ....... . ....... ....... ... .............. ....... ....... . . . . . ... . ....... ....... ....... .. ....... ....... .. ....... . ....... . . . . . . ....... ... . . . . . . . ....... . ... . . . . ....... . . . . ... . ... ....... 3 −18 o1 1 −18.5 .. .. .... ....... ... .... .... .... . . .. .... ... . .... . . .... .. . . .... .. . . . .. 2 −4 4 −14 5 NZ Schritt 2 Knoten 3 wird mit o2 markiert. Lösung am Knoten 3 noch nicht ganzzahlig. Schritt 3 Mit N = 0 und x1 = 3 stellen wir die folgenden zwei Probleme auf: x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 1 L0 = 5x + 2x ≤ 27 1 2 x1 = 2 x1 , x2 ≥ 0 x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L20 = 5x1 + 2x2 ≤ 27 x1 = 4 x1 , x2 ≥ 0 59 3.1. DER ALGORITHMUS VON LAND UND DOIG L20 entspricht dem Problem L1 , und braucht daher nicht mehr gelöst zu werden. Der Optimalwert von L10 ist −17.5 mit x2 = 2.16̇. Dies liefert Knoten 6. Die Kante von Knoten 0 zu Knoten 6 bekommt die Bezeichnung 1. Problem L10 wird in L6 umbenannt, womit die Bezeichnungen L10 und L20 wieder frei sind. Schritt 4 Verzweigung von Knoten 3, wodurch wir die Knoten 7 und 8 erhalten. In der folgenden Tabelle werden die Ergebnisse der zugehörigen LOPe dargestellt. Knoten 7 Knoten 8 x1 3 3 x2 2 3 −15 NZ Optimalwert Die neuen Kanten werden mit 2 bezeichnet. o0 .. ....... ....... ....... . . . . . . .. ....... ....... ....... ....... . . . . . . . ....... 6 −17.5 0 −18.6875 ............. ....... .... ........................ .... ................................ ................................ .... ............. ................... .... .. ............. .... ............. .................................... .... .................. ............. .... .................. ............. .................. ............. .... .................. ............. .... .................. ............. .. ...... . o2 3 −18 .. ...... .. .... .. ...... .... .. . .... . .... .. .... .. . .... . . .... .. o1 .. ...... 1 −18.5 .. .... .. ...... .... .. . .... . .... .. .... .. . .... . . .... .. 2 −4 7 −15 8 N Z 4 −14 5 N Z Schritt 2 Knoten 6 wird mit o3 markiert. Lösung am Knoten 6 noch nicht ganzzahlig. Schritt 3 Mit N = 0 und x1 = 2 stellen wir die folgenden zwei Probleme auf: x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L10 = 5x1 + 2x2 ≤ 27 x1 = 1 x1 , x2 ≥ 0 60 3.1. DER ALGORITHMUS VON LAND UND DOIG x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 2 L0 = 5x1 + 2x2 ≤ 27 x1 = 3 x1 , x2 ≥ 0 L20 entspricht dem Problem L3 , und braucht daher nicht mehr gelöst zu werden. Der Optimalwert von L10 ist −17 mit x2 = 2. Dies liefert Knoten 9. Die Kante von Knoten 0 zu Knoten 9 bekommt die Bezeichnung 1. Problem L10 wird in L9 umbenannt, womit die Bezeichnungen L10 und L20 wieder frei sind. Schritt 4 Verzweigung von Knoten 6, wodurch wir die Knoten 10 und 11 erhalten. In der folgenden Tabelle werden die Ergebnisse der zugehörigen LOPe dargestellt. Knoten 10 Knoten 11 x1 2 2 x2 2 3 −16 NZ Optimalwert Die neuen Kanten werden mit 2 bezeichnet. Schritt 2 Knoten 9 wird mit o4 markiert. Optimallösung am Knoten 9 ganzzahlig, wir haben also das LOP G gelöst. o0 0 −18.6875 ................................... .................... ...... ........................................................... .... ............. ................... .......................... . . . . . . . . . . . ............. ................... .... ........... ............. .. ............. .... ............. . ............. .................................... .... ............. ....... . . . .................. . ............. . . . . . . . . . . . . . .... .. .................. .... ............. . . . . . . . . . . . . . . . . . . . .................. .... ............. .... ........ .................. ............. .... ....... ............ . . . . . . ................ . . . . . ........ . . . . . . . . . .. ... . o4 9 −17 o3 6 −17.5 ........ . .. .. ....... .... .. .... .. . .... . .... .. . .... . . .... . . . . o2 3 −18 ........ . .. .. ....... .... .. .... .. . .... . .... .. . .... . . .... . . . . o1 ........ 1 −18.5 . .. .. ....... .... .. .... .. . .... . .... .. . .... . . .... . . . . 2 −4 10 −16 11 N Z 7 −15 8 N Z 4 −14 5 N Z 61 3.1. DER ALGORITHMUS VON LAND UND DOIG 2. Möglichkeit: die Variable x2 wird als erste Verzweigungsvariable gewählt. Schritt 1 Wir lösen x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L1 = 5x + 2x ≤ 27 1 2 x2 = 2 x1 , x2 ≥ 0 und x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L2 = 5x1 + 2x2 ≤ 27 x2 = 3 x1 , x2 ≥ 0 Nun konstruieren wir die Söhne von Knoten 0, nämlich Knoten 1 und Knoten 2 und weisen ihnen die zugehörigen Optimalwerte zu. Die beiden Kanten, welche die Söhne mit dem Vater verbinden, werden mit 2 bezeichnet. Knoten 1 Knoten 2 x2 2 x1 1 Optimalwert −17 3 NZ Schritt 2 Wir markieren Knoten 2 mit o1 . Lösung am Knoten 2 ist ganzzahlig. LOP G ist gelöst. 62 3.2. DER ALGORITHMUS VON DAKIN o0 0 −18.6875 ... ....... .... ....... ... .... ... . .... . . .. .... ... . .... . . .. .... . . . .... . . . ... .... 1 −17 2 NZ Diese Methode war für die Zeit, zu der sie veröffentlicht wurde, eine Neuheit. Die Autoren geben u.a. ein Rechenbeispiel an, bei dem A eine 6 × 21 - Matrix ist. Nach 37 Schritten wurden zwei Optimallösungen erhalten. Die Wurzel hat sechs Söhne, von denen zwei nicht mehr weiterbehandelt wurden. Drei Söhne erhielten wieder je drei Söhne, ein Sohn nur zwei Söhne. Der Baum hat über 40 Endknoten. Die Methode war bei der Veröffentlichung im Jahre 1960 noch nicht programmiert und ist wahrscheinlich nie programmiert worden, da nur fünf Jahre später DAKIN [15] eine programmierfreundlichere Methode samt Programmiervorschlag veröffentlichte. 3.2 Der Algorithmus von DAKIN R.J. DAKIN entwickelte seine Methode aus dem Algorithmus von L AND und D OIG. Er schreibt in seiner Veröffentlichung [15], dass Schwierigkeiten bei der Implementierung des Algorithmus von L AND und D OIG am Computer auftreten, da sehr viel Speichplatz benötigt wird. Weiters weist DAKIN noch daraufhin, dass sein Algorithmus sowohl in linearer als auch in nichtlinearer Optimierung angewendet werden kann. Ausprobiert hatte er bis zur Veröffentlichung des Artikels im Jahre 1965 seine Methode erst in der linearen Optimierung. Sei wieder G unser ganzzahliges LOP: cT x → min! G= Ax = b x ≥ 0, x ∈ Zn 63 3.2. DER ALGORITHMUS VON DAKIN Wieder ist der Optimalwert der Zielfunktion eine reelle Zahl, b ∈ Rm , c, x ∈ Rn , A eine reelle m × n - Matrix. Die Gleichungen Ax = b, x ∈ Zn und x ≥ 0 beschreiben den zulässigen Bereich MG . Die Neuerung bei DAKIN ist, dass bei der Verzweigung nicht Gleichungen, sondern Ungleichungen zum LOP hinzugefügt werden. Dies bringt eine grosse Vereinfachung bei der Konstruktion des Baumes. 3.2.1 Der Algorithmus Dieser Algorithmus erstellt einen Baum. Die Knoten werden in der Reihenfolge ihrer Konstruktion mit natürlichen Zahlen, beginnend bei 0, durchnumeriert. Zur Wurzel gehört das LOP L. Zu jedem anderen Knoten gehört ein LOP Li , i ∈ N, welches durch Zufügen von Ungleichungen, deren Gestalt unten beschrieben wird, definiert wird. Weiters gehört zu jedem Knoten der Optimalwert des zugehörigen LOPs. Ist ein LOP nicht lösbar, so erhält der Knoten den Wert N Z. Jeder Knoten hat maximal zwei Söhne. Die Knoten werden durch gerichtete Kanten verbunden. Gerichtet sind sie vom bereits bestehenden zum neu konstruierten Knoten. Bezeichnet werden weder die Knoten noch die Kanten. Die Informationen über einen Knoten werden in einer Liste gespeichert. Diese Informationen sind: • Knotennummer • Verzweigungsvariable • Beschränkung • Marke (v) • Art der Lösung (KON T , GAN ZZ, N Z) Ist ein Knoten mit v markiert, so bedeutet dies, dass er bereits zweimal verzweigt wurde. Der Listeneintrag in „Art der Lösung“ soll angeben, ob die Optimallösung an diesem Knoten nicht ganzzahlig (KON T ) oder ganzzahlig (GAN Z) ist, oder ob das LOP keine 64 3.2. DER ALGORITHMUS VON DAKIN zulässige Lösung besitzt (N Z). Eine mögliche Zeile einer Liste ist in Tabelle 3.1 dargestellt. NR. .. . VARIABLE .. . BESCHR. .. . MARKE .. . LÖSUNGSART .. . 5 .. . x1 .. . ≥1 .. . v .. . KON T .. . Tabelle 3.1: Beispielliste für den Algorithmus von DAKIN Wir haben ein ganzzahliges LOP G. Schritt 0 Wir erstellen den ersten Listeneintrag: Die erste Spalte erhält die Zahl 0, die restlichen bleiben vorerst leer. Unser aktuelles LOP ist das kontinuierliche Problem L. Schritt 1 Löse das aktuelle Problem und trage die Lösungsart in die Liste ein. Bezeichne Optimallösung mit xopt . Schritt 2 Ist das Lösungsart des aktuellen Problems N Z? Wenn ja, weiter bei Schritt 6, sonst weiter bei Schritt 3. Schritt 3 Ist die Optimallösung des aktuellen Problems ganzzahlig? Wenn ja, weiter bei Schritt 4, sonst weiter bei Schritt 5. Schritt 4 Bezeichne die Optimallösung des aktuellen Problems mit „beste bis jetzt gefundene ganzzahlige Basislösung“, wenn sie besser ist als die bis jetzt so bezeichnete Optimallösung. Diese Lösung muss jedoch noch nicht die Optimallösung von G sein. Ist der Optimalwert des aktuellen Problems gleich dem Optimalwert des bereits so bezeichneten LOPs, so kann das LOP G mehrere Optimallösungen haben. Weiter bei Schritt 6. Schritt 5 Zeichne eine Basisvariable xr , für die xopt / Z gilt, als Verzweigungsvariable r ∈ opt und eine Beschränkung (xr ≤ bxopt r c oder xr ≤ dxr e) aus und füge diese In- 65 3.2. DER ALGORITHMUS VON DAKIN formation als Eintrag in eine neue Zeile in der Liste ein. Diese Zeile stellt unser neues aktuelles Problem dar. Das letzte Feld dieser Zeile bleibt noch leer. Weiter bei Schritt 1. Schritt 6 Hat die Liste mehr als einen Eintrag? Wenn ja, weiter bei Schritt 8, sonst weiter bei Schritt 7. Schritt 7 Die Optimallösung, die als letztes mit „beste bis jetzt gefundene ganzzahlige Basislösung“ bezeichnet wurde, ist die ganzzahlige Optimallösung von Problem G. Wurde diese Bezeichnung noch nicht vergeben, so ist das Problem nicht lösbar. Schritt 8 Hat der letzte Listeneintrag die Marke v? Wenn ja, gehe zu Schritt 9, sonst zu Schritt 10. Schritt 9 Lösche den letzten Listeneintrag (ganze Zeile). Gehe zu Schritt 6. Schritt 10 Ersetze die Beschränkung des letzten Listeneintrags durch das Gegenteil, also ersetze z.B. ≤ 2 durch ≥ 3. In der ersten Spalte wird die Zahl durch die nächste freie Knotennummer ersetzt. Markiere den letzten Listeneintrag mit v. Gehe zu Schritt 1. Bemerkung 3.9 • ad Schritt 0: Hier wird die Wurzel konstruiert. Sie wird mit 0 numeriert. • ad Schritt 4: Gehört das aktuelle Problem zur Wurzel, so haben wir die Optimallö- sung von G gefunden. (In diesem Fall wird die Frage in Schritt 6 mit nein beantwortet und in Schritt 7 die Optimallösung ausgegeben.) Bei jedem anderen Knoten kann es der Fall sein, dass die Optimallösung von G gefunden wurde, muss es aber nicht (vgl. Beispiel 3.10, die Optimallösung des zum Knoten 2 gehörigen Problems ist ganzzahlig, jedoch nicht Optimallösung von G). Wenn man mehrere zulässige Lösungen mit beste bis jetzt gefundene ganzzahlige Basislösung bezeichnet hat und im weiteren Verlauf des Algorithmus keine ganzzahlige Optimallösung an einem Knoten gefunden wurde, dann hat das LOP G mehrere Optimallösungen. 66 3.2. DER ALGORITHMUS VON DAKIN • ad Schritt 5: DAKIN beginnt mit der Restriktion, die das ≤-Zeichen enthält. • ad Schritt 6, 8, 9: Zu Schritt 6 gelangt man nur, wenn die Lösungsart des aktuellen Problems N Z oder GAN ZZ ist. In Schritt 8 wird abgefragt, ob das zum aktuellen LOP (z.B. x1 ≤ 1) alternative LOP (z.B. x1 ≥ 2) bereits gelöst ist (Marke: v ) oder nicht (keine Marke). Im Falle v wird die gesamte letzte Zeile der Liste gelöscht. • zur Wahl der Verzweigungsvariable: DAKIN schreibt, dass er die verschiedensten Varianten ausprobiert hat. Einerseits die Variable zu wählen, die den kleinsten Abstand zur nächsten ganzen Zahl aufweist, andererseits die, die den grössten Abstand zur nächsten ganzen Zahl hat. Letztere Methode haben Land und D OIG empfohlen. Mit der sogenannten Penalty-Methode machte DAKIN die besten Erfahrungen. Diese wird in Abschnitt 3.3 beschrieben. 3.2.2 Findet der Algorithmus die Optimallösung? Unter der Annahme, dass eine Optimallösung überhaupt existiert, findet der Algorithmus genau dann diese, wenn er alle möglichen zulässigen Lösungen untersucht. Die Restriktionen, welche dem ursprünglichen Problem hinzugefügt werden, schliessen kein Element von MG aus. Stellt sich also noch folgende Frage: Wenn man einen Knoten nicht mehr weiter verzweigt, dann werden dadurch Lösungen ausgeschlossen. Können diese Lösungen die Optimallösungen beinhalten? Die Antwort ist nein, denn • wird ein Knoten nicht mehr verzweigt, weil die Optimallösung des zu ihm gehörenden LOPs ganzzahlig ist, dann erhält man nach Folgerung 3.5 an einem Sohn dieses Knotens keine Optimallösung mit kleinerem Optimalwert. • wird ein Knoten nicht mehr verzweigt, weil das zu ihm gehörende LOP keine zulässige Lösung besitzt, so besitzen auch die LOPs alle seinen Söhne keine zulässige Lösung, da durch erneutes Verzweigen der zulässige Bereich weiter eingeschränkt wird. 67 3.2. DER ALGORITHMUS VON DAKIN Somit ist die Frage diese Kapitels mit „ja“ zu beantworten. 3.2.3 Verbesserungen gegenüber der L AND-und-D OIG-Methode Für ein LOP, bei dem die Variablen nur die Werte 0 oder 1 annehmen dürfen, hat der Algorithmus von DAKIN keine Neuerungen gebracht. DAKIN hat allerdings einen Programmiervorschlag angegeben, welcher bei der Veröffentlichung von L AND und D OIG fehlt. Für ein LOP, bei dem für die Variablen die Ganzzahligkeit gefordert ist, bietet der Algorithmus von DAKIN eine grosse Vereinfachung. Das Schnittverfahren von G OMORY [23] war schlecht auf ein gemischt-ganzzahliges LOP anwendbar. Die Verzweigungsverfahren weisen bei diesen LOPen keine Schwierigkeit auf, denn die Variablen, deren Ganzzahligkeit nicht gefordert ist, dürfen einfach nie als Verzweigungsvariable ausgezeichnet werden. L AWLER und W OOD [16] schreiben, dass der Algorithmus für gemischt-ganzzahlige LOPe von G OMORY bei einem Problem mit 17 Restriktionen (zu diesen werden nicht Ungleichungen wie xi ≥ 0 hinzugerechnet) und 93 Variablen, von denen für 80 die Ganzzahligkeit gefordert wurde, nach über 2000 Schritten versagte, während DAKIN dasselbe Problem mit einem KDF9-Computer in 7 Minuten und 28 Sekunden löste. 3.2.4 Beispiel Wir rechnen nun das Beispiel aus dem vorigen Abschnitt nach der Methode von DAKIN durch und können so die Einsparung an Rechenzeit bei der Methode von DAKIN erkennen. Weiters wird die Liste angegeben. Wir vergleichen nur die 1. Möglichkeit, also wir wählen x1 als erste Verzweigungsvariable. 68 3.2. DER ALGORITHMUS VON DAKIN Beispiel 3.10 Dieses Beispiel ist in Ungleichungsform angegeben. x1 − 9x2 → min! −x1 + 6x2 ≤ 11 G= x1 ≥ 1 5x + 2x ≤ 27 1 2 x , x ≥ 0, x , x ∈ Z 1 2 1 2 Schritt 0, 1 Das kontinuierliche Problem wurde in Beispiel 2.5 gelöst: x01 = x02 = 41 16 35 3 = 4.375, = 2.5625 mit Optimalwert −18.6875. Die Lösung ist nicht ganzzahlig, also Knoten 0 wird konstruiert. Ihm wird das Problem L samt Optimalwert zugewiesen. 0 −18.6875 NR. VARIABLE BESCHR. MARKE LÖSUNGSART 0 leer leer leer KON T Schritt 2 und 3 Das aktuelle Problem hat nicht die Lösungsart N Z , die Optimallösung ist jedoch nicht ganzzahlig. Schritt 5 Wir zeichnen x1 als Verzweigungsvariable aus und wählen die Beschränkung ≤ 4. NR. VARIABLE BESCHR. MARKE LÖSUNGSART 0 leer leer leer KON T 1 x1 ≤4 leer leer 69 3.2. DER ALGORITHMUS VON DAKIN Schritt 1 Löse x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L1 = 5x1 + 2x2 ≤ 27 x1 ≤ 4 x1 , x2 ≥ 0 Ich führe im gesamten Beispiel keine Rechenschritte aus. Die Optimallösung ist (4, 2.5) mit Optimalwert −18.5. Wir müssen also in das leere Feld in der letzten Zeile der Liste KON T eintragen. 0 −18.6875 .... ....... ..... ....... ....... ....... . . . . . . .. ....... ....... ....... ....... . . . . . . .... x1 ≤ 4 1 −18.5 Schritt 2 und 3 Das aktuelle Problem hat nicht die Lösungsart N Z , die Optimallösung ist jedoch nicht ganzzahlig. Schritt 5 Wir zeichnen x2 als Verzweigungsvariable aus und wählen die Beschränkung ≤ 2. NR. VARIABLE BESCHR. MARKE LÖSUNGSART 0 leer leer leer KON T 1 x1 ≤4 leer KON T 2 x2 ≤2 leer leer 70 3.2. DER ALGORITHMUS VON DAKIN Schritt 1 Löse x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x ≥1 1 L2 = 5x1 + 2x2 ≤ 27 x1 ≤ 4 x2 ≤ 2 x1 , x2 ≥ 0 Die Optimallösung ist (2, 1) mit Optimalwert −17. Wir müssen also in das leere Feld in der letzten Zeile der Liste GAN ZZ eintragen. 0 −18.6875 .... ....... .... ....... ....... ....... . . . . . . .. ....... ....... ....... ....... . . . . . . ...... x1 ≤ 4 1 −18.5 .... ....... ....... ....... . . . . . . .. ....... ....... ....... ....... . . . . . . ... ....... ....... x2 ≤ 2 2 −17 Schritt 2, 3 und 4 Das aktuelle Problem hat nicht die Lösungsart N Z . Die Optimallö- sung ist ganzzahlig und wird als beste bis jetzt gefundene ganzzahlige Lösung bezeichnet. Schritt 6, 8, 10 Die Liste hat mehr als einen Eintrag und der letzte Listeneintrag keine Marke. Die neue Liste sieht so aus: NR. VARIABLE BESCHR. MARKE LÖSUNGSART 0 leer leer leer KON T 1 x1 ≤4 leer KON T 3 x2 ≥3 v leer 71 3.2. DER ALGORITHMUS VON DAKIN Schritt 1, 2 Löse x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x ≥1 1 L2 = 5x1 + 2x2 ≤ 27 x1 ≤ 4 x2 ≥ 3 x1 , x2 ≥ 0 Dieses Problem hat die Lösungsart N Z . 0 −18.6875 .... ....... .. ....... ....... ....... . . . . . . .. ....... ....... ....... ....... . . . . . . . ....... x1 ≤ 4 1 −18.5 .... ....... ............. ....... ....... ....... ....... . . . . . . ....... ..... ....... ....... . . ....... . . . . ....... ... . . . . . . ....... ... . . . . ....... . . ... . . ....... . . . . .. ....... ....... x2 ≤ 2 2 x2 ≥ 3 3 N Z −17 Schritt 6, 8 und 9 Die Liste hat mehr als einen Eintrag und der letzte Listeneintrag hat die Marke v . Die letzte Zeile wird gelöscht. Schritt 6, 8 und 10 Die Liste hat mehr als einen Eintrag und der letzte Listeneintrag keine Marke. Die neue Liste sieht so aus: NR. VARIABLE BESCHR. MARKE LÖSUNGSART 0 leer leer leer KON T 4 x1 ≥5 v leer 72 3.2. DER ALGORITHMUS VON DAKIN Schritt 1 Löse x1 − 9x2 → min! −x1 + 6x2 ≤ 11 x1 ≥ 1 L4 = 5x1 + 2x2 ≤ 27 x1 ≥ 5 x1 , x2 ≥ 0 Die Optimallösung ist (5, 1) mit Optimalwert −4. Wir müssen also in das leere Feld in der letzten Zeile der Liste GAN ZZ eintragen. 0 −18.6875 ........ ....... ....... .... ....... ....... ....... . . . . . . .. ....... ....... ....... ....... . . . . . . ...... x1 ≤ 4 1 −18.5 ........ ....... .............. ....... ....... ....... ....... . . . . . . ....... ..... ....... ....... . . ....... . . . . ... ....... . . . . . . ....... ... . . . . . ....... . ... . . . ....... . . . .... ....... x2 ≤ 2 3 −17 ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... .... x1 ≥ 5 2 −4 x2 ≥ 3 4 N Z Schritt 2, 3 und 4 Das aktuelle Problem hat nicht die Lösungsart N Z . Die Optimallö- sung ist ganzzahlig, wird jedoch nicht als beste bis jetzt gefundene ganzzahlige Lösung bezeichnet. Schritt 6, 8 und 9 Die Liste hat mehr als einen Eintrag und die Marke des letzten Listen- eintrags ist v . Diese Zeile wird gelöscht. Schritt 6 und 7 Die Liste hat genau einen Eintrag und wir geben die als letztes mit beste bis jetzt gefundene ganzzahlige Lösung als Optimallösung von G aus. 73 3.2. DER ALGORITHMUS VON DAKIN 3.2.5 Calipso for Linear Programming Wie schon in Kapitel 1.4 beschrieben, löst Calipso for Linear Programming die ganzzahligen Probleme mit der Branch-and-Bound-Methode. Dies wird am Beispiel 2.5 vorgeführt. Zuerst gibt man das zugehörige kontinuierliche Problem ein: >GANZZ=MODEL{ <min x1-9x2; <-x1+6x2 <= 11; <x1 >= 1; <5x1+2x2 <= 27; <} Gearbeitet wird mit der Funktion BB: >GANZZ_BB=BB(GANZZ) Nach Aufruf der Funktion wird man gefragt, ob alle Variablen ganzzahlig sein sollen, beantwortet man diese Frage mit „ja“ , erhält man die Ausgabe der ganzzahligen Lösung. In unserem Beispiel ist dies: The maximum integer solution is 17 at (x1,x2)=(1,2) Branches: x2<=2, Z=17; x2>=3,Infeasible; Arbeitet man mit eine gemisch-ganzzahligen Problem, so muss man die oben gestellte Frage mit „nein“ beantworten. Daraufhin wird man für jede Variable einzeln gefragt, ob sie ganzzahlig sein soll oder nicht. Mit der Funktion BBTREE erscheint ein vorgezeichneter Baum im Programm. Jeder Knoten hat zwei Söhne, was die Anwendung der Methode von L AND und D OIG schon ausschliesst. In der Wurzel steht „Original“ und der Wert der Optimalwert des kontinuierlichen Problems. Man kann in die Knoten hineinklicken und die Restriktion angeben. Die Windows-Version verlangt Ungleichungen als Restriktionen. Die DOS-Version (hier heisst die Funktion BRANCH AND BOUND TREE) hat zwar auch nur zwei Söhne pro Knoten eingeplant, lässt aber auch Gleichungen als Restriktionen zu. Bevor man den Baum wieder verlässt, sollte man noch in den Knoten klicken, zu dessen Problem die Optimallösung gehört. Es wird nämlich die Lösung am zuletzt angeklickten Knoten in das Dokument, welches man (auch im LATEX-Format) abspeichern kann, geschrieben. 74 3.3. DIE PENALTY-METHODE 3.3 Die Penalty-Methode L AND und D OIG [11] geben an, dass man jene Variable als Verzweigungsvariable auswählen soll, welche vom nächsten ganzzahligen Wert am weitesten entfernt ist. Wenn z.B. die Optimallösung eines LOP x = (2.5, 4.4) ist, dann wird als nächste Verzweigungsvariable x1 ausgewählt. Eine Branch-and-Bound-Methode ist dann effizient, wenn sie wenige Schritte hat. Die Anzahl der Schritte hängt stark von der Wahl der Verzweigungsvariablen ab (vgl. Beispiel 3.8). Viele Mathematiker haben sich mit der Frage befasst, wie man die Wahl der Verzweigungsvariable steuern kann, damit die Anzahl der Schritte gesenkt wird. J.A. T OMLIN [22] hat die Penalty-Methode, welche im mathematischen Programmiersystem UMPIRE enthalten ist, beschrieben. DAKIN [15] hat die Idee dieser Methode empfohlen. 3.3.1 Vorbereitung Nehmen wir an, dass wir uns an einem Knoten des Lösungsbaumes befinden. Weiters sei mit o0 der Optimalwert der „besten bis jetzt gefundenen ganzzahligen Lösung“ bezeichnet. Das Endtableau des LOP an diesem Knoten ist bereits bestimmt: R TB = B S t v z Wir haben eine Optimallösung, wenn gilt vj ≥ 0 für alle j ∈ R, ti ≥ 0 für alle i ∈ B. Gilt zusätzlich noch ti ∈ Z für alle i ∈ B, so ist die Optimallösung ganzzahlig. Gilt weiters −z < o0 , so haben wir eine neue „beste bis jetzt gefundenen ganzzahligen Lösung“. Gilt −z ≥ o0 , so betrachten wir die Söhne des aktuellen Knoten nicht mehr, da wir dort keine Optimallösung des LOP finden würden. Gilt für eine Optimallösung −z < o0 , aber ti ∈ / Z für mindestens ein i ∈ B, so wird der aktuelle Knoten verzweigt. Den Wert ti spaltet man in einen ganzzahligen und einen nicht-ganzzahligen Teil auf. ti = ni + fi 75 3.3. DIE PENALTY-METHODE wobei ni = bti c und 0 ≤ fi < 1. Das eine Problem hat die neue Restriktion xi ≤ ni das andere die Restriktion xi ≥ ni + 1 Hat man nun mehrere Variablen, die die Bedingung ti ∈ Z nicht erfüllen, welche Variable wählt man dann als Verzweigungsvariable aus? Mit Hilfe des sogenannten „Penalties“ wird einerseits die Verzweigungsvariable bestimmt, andererseits angegeben, ob diese Variable nun nach oben oder nach unten beschränkt wird. 3.3.2 Die Idee Wenn man eine neue obere oder untere Schranke für eine Variable einführen will, z.B. xi ≤ ni oder xi ≥ ni + 1, dann ändert dies den Zielfunktionswert. Satz und Definition 3.11 Gegeben sei ein kontinuierliches LOP L mit zugehöriger Optimallösung x0 und zugehörigem Optimalwert o = −z . Weiters gilt x0i ∈/ Z für mindestens ein i ∈ B . Weiters sei ni = bx0i c. • Fügt man dem LOP L die Restriktion xi ≤ ni hinzu, so ist der Optimalwert eines Minimierungsproblems mindestens um den Wert min vj fi | Sij > 0 und j ∈ R Sij grösser. Dieser Wert wird mit unteres Penalty PUi bzgl. der Variable xi bezeichnet. • Analog gilt, wenn man dem LOP L die Restriktion xi ≥ ni + 1 hinzufügt, dass sich der Optimalwert eines Minimierungsproblems mindestens um den Wert min vj (1 − fi ) | Sij < 0 und j ∈ R . −Sij vergrössert. Dieser Wert wird mit oberes Penalty POi bzgl. der Variable xi bezeichnet. 76 3.3. DIE PENALTY-METHODE Beweis: Für beide Teile des Beweises gilt: x0i = ni + fi mit 0 ≤ fi < 1. • Die Bedingung x0i ≤ ni ⇔ x0i + yi = ni , wobei yi eine Schlupfvariable ist, kann man anders ausdrücken: yi = ni − x0i = −fi + X Sij x0j j∈R Wir fügen dem optimalen Simplextableau von L die Zeile x .. . .. . .. . yi −Si− −fi .. .. .. . . . v z hinzu. Das Tableau ist nicht mehr primalzulässig und wir führen einen Schritt des dualen SAL aus. Unser Pivotelement −Sil bestimmen wir durch vj vl = max | −Sij < 0 und j ∈ R −Sil −Sij was zur Folge hat, dass sich die Zielfunktion ändert: zneu = z − vl (−fi ) −Sil n = max z − n = max z − = vj (−fi ) −Sij | −Sij < 0 und j ∈ o vj fi | S > 0 und j ∈ R ij Sij o R = Die Wert, um welchen die Zielfunktion mindestens verändert wird, ist also vj fi min | Sij > 0 und j ∈ R . Sij Da für alle i ∈ B und für alle j ∈ R gilt, dass vj , fi und Sij positiv sind, ist also zneu ≤ z und somit oneu ≥ o. 77 3.3. DIE PENALTY-METHODE • Die Bedingung x0i ≥ ni + 1 ⇔ x0i − yi = ni + 1, wobei yi wieder eine Schlupfvariable ist, kann man ebenfalls anders ausdrücken: yi = −(ni + 1) + x0i = −(1 − fi ) − X Sij x0j j∈R Wir fügen dem optimalen Simplextableau von L die Zeile .. . x .. . .. . yi Si− −(1 − fi ) .. .. .. . . . v z hinzu. Das Tableau ist nicht mehr primalzulässig und wir führen einen Schritt des dualen SAL aus. Unser Pivotelement −Sil bestimmen wir durch vj vl = max | Sij < 0 und j ∈ R Sil Sij was zur Folge hat, dass sich die Zielfunktion ändert: −vl (1−fi ) = n Sil −vj (1−fi ) max z − Sij n vj (1−fi ) max z − −Sij | zneu = z − = = o | Sij < 0 und j ∈ R = o Sij < 0 und j ∈ R Die Änderung ist also min vj (1 − fi ) | Sij < 0 und j ∈ R . −Sij Wieder gilt zneu ≤ z, woraus oneu ≥ o folgt. Bemerkung 3.12 Für ein Maximierungsproblem gelten dieselben Aussagen von Satz 3.11 mit der Modikation, dass der Optimalwert vergrössert wird. 78 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Satz 3.13 Sei L das LOP zum aktuellen Knoten mit zugehöriger Optimallösung x0 , x0 ∈/ Zn , und Optimalwert o = −z . Sei o0 = −z 0 der Optimalwert der besten bisher gefundenen ganzzahligen Optimallösung. Hat der aktuelle Knoten einen Sohn, zu dem eine ganzzahlige Optimallösung mit Optimalwert ô < o0 gehört, so gilt für alle i ∈ B mit x0i ∈/ Z: min(PUi , POi ) < o0 − o. (3.5) Beweis: Sei i ∈ B so, dass x0i ∈ / Z und x̂ ∈ Zn die Optimallösung zu einem Sohn des aktuellen Knotens mit Optimalwert ô = −ẑ. Dann erfüllt dieser Sohn eine der Restriktionen xi ≤ bx0i c, xi ≥ bx0i c + 1. Es liege der erste Fall vor. Aus Satz und Definition 3.11 folgt ẑ ≤ z − PUi , also ô ≥ o + PUi . Gilt nun ô < o0 , so folgt daraus o0 > o + PUi , d.h. PUi < o0 − o. Im zweiten Fall folgt entsprechend POi < o0 − o. Wird die Bedingung (3.5) für ein i ∈ B nicht erfüllt, so wird das aktuelle Problem verworfen. Erfüllen alle i ∈ B diese Bedingung, so gibt es zwei Möglichkeiten für die Wahl der Verzweigungsvariablen und der Schranke: • Man wähle den kleinsten Penaltywert aus und nehme die zugehörige Ungleichung als neue Restriktion. Die Idee ist, dass man versucht, den ganzzahligen Optimalwert möglichst nahe am kontinuierlichen zu erhalten, und somit die nur kleinste Änderung des Zielfunktionswertes durchführt. • Man wähle den grössten Penaltywert aus und nehme die entgegengesetze Restriktion. Ist z.B. POi das grösste Penalty, so wähle als neue Restriktion xi ≤ ni . Hier ist die Idee, die grösste Änderung des Zielfunktionswertes vorerst auszuschliessen. Die zweite Möglichkeit wird von T OMLIN empfohlen. 3.4 Der Additive Algorithmus von BALAS Dieser Algorithmus ist nur auf sogenannte 0-1-Probleme anwendbar. 79 3.4. DER ADDITIVE ALGORITHMUS VON BALAS 3.4.1 Die 3. Form eines LOPs Definition 3.14 Sei B = {0, 1} die Menge, die aus den Elementen 0 und 1 besteht. Ein binäres LOP ist dadurch gekennzeichnet, dass man nur Lösungen mit Werten in B zulässt. Definition 3.15 Ein LOP in der 3. Form sieht folgendermassen aus: f (x) = cT x → min! Ax + y = b BP = x ∈ Bn y≥0 (3.6) dabei ist c = (c1 , ..., cn )T ∈ Rn , x = (x1 , . . . , xn )T ∈ Bn , y = (y1 , . . . , ym )T ∈ Rm , A eine reelle m × n-Matrix und b = (b1 , . . . , bm )T ∈ Rm . Haben wir das LOP in Ungleichungsform f (x) = cT x → min! BP = Ax ≤ b x ∈ Bn gegeben, so können wir es mit Hilfe der Schlupfvariablen auf die 3. Form bringen. Haben wir ein Problem in Standardform f (x) = cT x → min! BP = Ax = b x ∈ Bn gegeben, so können wir auch dies auf die 3. Form bringen. Es gelten die Äquivalenzen Ax = b ⇔ Ax ≤ b ∧ Ax ≥ b ⇔ Ax ≤ b ∧ −Ax ≤ −b A b x ≤ Ax = b ⇔ −A −b 80 3.4. DER ADDITIVE ALGORITHMUS VON BALAS und können wir unser LOP in die Ungleichungsform umwandeln: f (x) = cT x → min! A b x ≤ BP = −A −b x ∈ Bn und dann mit den Schlupfvariablen auf die 3. Form bringen. Weiters nehmen wir o.B.d.A. cj ≥ 0 für j = 1, . . . , n an. Die folgende Bemerkung erläutert, welche Umformungen im Falle cj < 0 vorzunehmen sind. Bemerkung 3.16 (Umformung im Fall cj < 0) Sei 0 falls ci ≥ 0, δi = 1 falls c < 0, i und δ = (δ1 , . . . , δn )T . Sei weiters ∆ = diag(1 − 2δ1 , . . . , 1 − 2δn ). Da 1 falls δi = 0 , 1 − 2δi = −1 falls δ = 1 i gilt ∆−1 = ∆. Setze x0 = (∆x + δ)i = xi falls δi = 0 1 − x falls δ = 1 i i . Es ist klar, dass x ∈ Bn ⇔ x0 ∈ Bn , Setze ferner: (c0 )T = cT ∆. Dann gilt c0i ≥ 0 für alle i. Wir denieren ferner A0 = A∆ b0 = b + A · ∆δ. 81 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Daher gilt: (x, y) Optimallösung von (3.6) ⇔ (x0 , y) Optimallösung von (c0 )T x0 → min! A0 x0 + y = b0 0 BP = x0 ∈ Bn y≥0 Zum Beweis dieser Aussage beachte man (c0 )T x0 = cT ∆(∆x + δ) |{z} = cT x + cT ∆δ ∆2 =In ferner A0 x0 = A∆(∆x + δ) = Ax + A∆δ. Daher A0 x0 + y = b0 ⇔ Ax + y = b. Nimmt (x, y) das Minimum cT x an, so nimmt (x0 , y) das Minimum cT x + cT ∆δ an. Im folgenden gehen wir immer von einem LOP in 3. Form aus. 3.4.2 Die Idee Ausgehend von der meistens nicht zulässigen Lösung von (3.6) (x, y)T = (0, b)T , wird eine Komponente von x, z.B. xl , ausgezeichnet und xl = 1 gesetzt. Dadurch ändern sich die Werte von y und f (x). Die Untersuchung der neuen Werte von y und f (x) zielt darauf ab, eine zulässige Optimallösung zu erhalten, indem eine oder mehrere weitere Komponenten von x gleich 1 gesetzt werden. Ist dies der Fall, so zeichnet man eine weitere Komponente von x aus, setzt diese gleich 1 und untersucht dann wieder die neuen Werte von y und f (x). Man schreibt die Reihenfolge der = 1 gesetzten Variablen in eine Liste. Wird bei der Betrachtung von y und f (x) festgestellt, dass keine zulässige Optimallösung 82 3.4. DER ADDITIVE ALGORITHMUS VON BALAS erhalten werden kann, wenn weitere Komponenten von x gleich 1 gesetzt werden, so kann keiner dieser möglichen Vektoren die Optimallösung darstellen. Daher werden diese Vektoren ausgeschlossen, sie wurden also implizit untersucht. Man entnimmt der Liste die letzte Komponente, die gleich 1 gesetzt wurde, setzt diese gleich 0 und vermerkt dies in der Liste. Wieder werden die Werte y und f (x) verändert und dann untersucht. Nachdem alle 2n möglichen Lösungen explizit oder implizit untersucht wurden, ist das Ende des Algorithmus erreicht. Es wurde entweder eine Optimallösung gefunden oder gezeigt, dass es keine solche gibt. Nun leiten wir die Formeln für die neuen Werte von y und f (x) her, wenn man z.B. xl = 1 setzt. Betrachten wir das zur 3. Form (3.6) gehörige kontinuierliche Problem, welches man erhält, indem man die Restriktion x ∈ B zu x ≥ 0, x ∈ Rn abschwächt. Wir setzen B = {y1 , . . . , ym } und R = {x1 , . . . , xm }. Das zur Basis B gehörige Simplextableau (Anfangstableau) lautet: x1 . . . xn y1 . TB = .. A b cT 0 ym Da wir c ≥ 0 annehmen, ist das Tableau TB dualzulässig. Wir setzen jedoch nicht b ≥ 0 voraus. Ist dies allerdings der Fall, so ist nach Satz 1.34 die Basislösung (x0 , y 0 )T = (0, b)T optimal. Der Optimalwert ist dann f (x0 ) = 0. Wir haben das Problem L mit einer nicht zulässigen Basislösung (0, b)T und fordern weiters xl = 1. Es gelten die Äquivalenzen: xl = 1 ⇔ xl ≤ 1 ∧ xl ≥ 1 ⇔ xl ≤ 1 ∧ −xl ≤ −1 Zu L fügen wir Restriktion −xl + ym+1 = −1 83 3.4. DER ADDITIVE ALGORITHMUS VON BALAS und Bneu = B ∪ {ym+1 }. Der Vektor y hat nun eine Komponente dazubekommen. Wir definieren zur Vereinfachung B := Bneu . Das Anfangstableau lautet x1 . . . TB = y1 .. . xl . . . xn A b ym ym+1 0 . . . 0 −1 0 . . . 0 −1 cT 0 Als nächstes führen wir einen Basisaustausch des dualen SAL (vgl. Kapitel 1.3.3) aus. Als Pivotelement wählen wir Sm+1,l = −1. Das Tableau der ausgetauschten Basis B̄ = (B \ {ym+1 }) ∪ {xl } x1 . . . xl−1 ym+1 xl+1 . . . xn TB̄ = y1 .. . b − A−l A ym xl 0...0 −1 0...0 cT 1 −cl wobei A−l die l-te Spalte von A ist. Das Tableau TB̄ ist immer noch dualzulässig. Wir sehen, dass die Komponente ym+1 ausgetauscht wird, sobald sie zum LOP hinzugefügt wurde, und somit ist: yneu,m+1 = 0. Da der Vektor y keinen Einfluss auf den Optimalwert hat, werden alle neu hinzugefügten Komponenten von y vernachlässigt. Die neue Basislösung ist xneu = x + el , yneu = y − A−l , (3.7) f (xneu ) = f (x) + cl , wobei der Vektor el aus lauter Nullen besteht, ausser an der Stelle l, dort steht die Zahl 1. Der Basisaustausch kommt allein mit Additionen aus - eine Subtraktion kann man ja auch als Addition auffassen. Deshalb hat dieser Algorithmus seinen Namen bekommen. 84 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Sei B = {y1 , . . . , ym } und R = {x1 , . . . , xm }. Wir setzen im folgenden R0 := R \ {xl | xl = 1}. Als nächstes befassen wir uns damit, welche Kriterien erfüllt sein müssen, damit man die Söhne eines Knotens nicht mehr betrachten muss, man diese also implizit untersucht hat. Dazu folgender Satz. Satz 3.17 Sei das zu einem beliebigen Knoten N gehörende LOP L gegeben. Sei (x, y)T die Lösung, die man durch Basisaustauschschritte bisher erhalten hat, mit x ∈ Bn und y ∈ Rm . Weiters sei o0 der Optimalwert der besten bis jetzt gefundenen zulässigen Basislösung. Tritt einer der folgenden drei Fälle auf, so braucht man die Söhne von Knoten N nicht zu untersuchen: • y≥0 • y < 0 und f (x) ≥ o0 • y < 0, f (x) < o0 und für alle i mit yi < 0 ist die Zahl σi := P j∈R0 min(0, aij ) grösser als yi . Beweis: • Im Fall y ≥ 0 ist das zugehörige Tableau sowohl primal- als auch dualzulässig. Nach Satz 1.34 ist (x, y)T die Optimallösung des LOPs an diesem Knoten. Gilt zusätzlich noch f (x) < o0 , dann haben wir eine neue „beste bis jetzt gefundene zulässige Basislösung“. • Im Fall y < 0 und f (x) ≥ o0 ist die Basislösung am Knoten N nicht zulässig und nach Folgerung 3.5 bestitzt kein Sohn von Knoten N einen Optimalwert < o0 . • Im Fall y < 0 und f (x) < o0 ist es möglich, an einem Sohn von Knoten N , z.B. P , eine zulässige Basislösung mit Optimalwert < o0 zu erhalten. Die Bedingung dafür ist, dass y P ≥ 0. 85 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Aus den Formeln (3.7) kann man yiP = yi − X min(0, aij ) j∈R0 ablesen. Daher folgt aus yiP ≥ 0 notwenigerweise σi ≤ yi . 3.4.3 Der Algorithmus Dieser Algorithmus erstellt einen Baum. Die Wurzel wird mit 0 bezeichnet. Jeder Knoten hat zwei Söhne, die bezeichnet werden: • Erhält ein Knoten die Bezeichnung x̄l mit l ∈ {1, . . . , n}, so heisst dies, dass an diesem Knoten xl = 0 gesetzt wurde. • Wird ein Knoten mit xl bezeichnet, so heisst dies analog, dass an diesem Knoten xl = 1 gesetzt wurde. Wir erstellen eine Liste, deren Einträge entweder x̄l oder xl mit l ∈ {1, . . . , n} sind. Am Anfang ist die Liste leer. In Schritt 1 werden die Knoten markiert. Die möglichen Marken sind Z für zulässig oder N Z für nicht zulässig. Wir haben das binäre LOP BP (3.6). Zu BP gehört das kontinuierliche Problem L. Mit o0 bezeichnen wir den Optimalwert der „besten bis jetzt gefundenen zulässigen Basislösung“. o0 wird mit ∞ initialisiert. Schritt 0 Die Wurzel des Baumes wird konstruiert und mit 0 bezeichnet. x = 0 y = b f (x) = f (0) B = {y1 , . . . , ym } R = {x1 , . . . , xn } R0 = ∅ Liste = [] 86 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Unser aktueller Knoten ist die Wurzel. Weiter bei Schritt 1. Schritt 1 In diesem Schritt wird der aktuelle Knoten untersucht. Sei dies Knoten l. Die Werte x, y, f (x), B, R und R0 an diesem Knoten sind bekannt. Fall 1 Ist y ≥ 0, so ist x eine zulässige, aber nicht unbedingt optimale Lösung von BP . Der Knoten wird mit Z markiert. Ist f (x, y) < o0 so setzt man o0 := f (x). Fall 2 Sei y < 0. Entweder • gilt für diesen Knoten f (x) ≥ o0 . Dann erhält der Knoten die Marke N Z. Die Optimallösung des LOPs an diesem Knoten ist nicht zulässig und unter den LOP, die zu den Söhnen von diesem Knoten gehören, weist keines eine Optimallösung auf, deren Optimalwert < o0 ist. oder • es gilt für diesen Knoten f (x) < o0 . Sei B 0 = {i | yi < 0}. Bilde für jedes i ∈ B 0 die Summe σi := X min(0, aij ) j∈R0 (falls R0 = ∅, so definiere: σi := 0). Gilt für mindestens ein i ∈ B 0 σi > bi ⇒ bi − σi < 0, dann gibt es keine zulässigen Lösungen an den Söhnen des eben untersuchten Knotens. Der soeben untersuchte Knoten erhält ebenfalls die Marke N Z. Ist nun einer der obgenannten Fälle eingetreten, so ist es nicht nötig, die Nachfolger dieses Knotens zu betrachten, man sagt, dass diese implizit untersucht wurden; weiter bei Schritt 4. Andernfalls weiter bei Schritt 2. In beiden Fällen ist im folgenden der aktuelle Knoten der eben untersuchte Knoten. 87 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Schritt 2 In diesem Schritt wird die Verzweigungsvariable bestimmt. Bekannt sind die Werte x, y, f (x), B, B 0 , R und R0 . Berechne für jedes j ∈ R0 und i ∈ B 0 , für das aij < 0 und f (x, y) + cj < o0 gilt: X τj := min (0, bi − aij ) i∈B 0 Der Index des grössten Wertes der eben berechneten τ gibt uns an, welche Variable als nächstes verzweigt wird. Gibt es mehrere Maxima unter den τ , so wählt man das j mit kleinstem cj . Sei l der gewählte Index. Weiter bei Schritt 3. Schritt 3 In diesem Schritt wird verzweigt. Sei (x, y)T die Basislösung am aktuellen Knoten. xneu = x + el yneu = y − A−l f (xneu ) = f (x) + cl B = {y1 , . . . , ym } Rneu = R \ {xl } 0 = R0 ∪ {xl } Rneu Liste = [. . . , xl ] Wir fügen zum Baum einen neuen Knoten als Sohn des aktuellen Knotens hinzu. Dieser eine Knoten erhält den Wert f (xneu ) und wird mit l bezeichnet. 0 Setze xneu = x, yneu = y, f (xneu ) = f (x), Rneu = R und Rneu = R0 . Weiter bei Schritt 1 mit Knoten xl als aktuellen Knoten. Schritt 4 In diesem Schritt wird ein bereits konstruierter Knoten mit nur einem Sohn gesucht. Sei x die Optimallösung des LOP am aktuellen Knoten. Man verfolgt nun vom aktuellen Knoten aus die (gerichteten) Kanten gegen ihre Richtung zurück, bis man auf den ersten Knoten stösst, der nur einen Sohn hat. • Erreicht man die Wurzel und hat diese schon zwei Söhne, so ist die zu o0 gehörende Basislösung die Optimallösung von BP . In diesem Fall sind die Einträge der Liste Elemente von {x̄l | l ∈ {1, . . . , n}} 88 3.4. DER ADDITIVE ALGORITHMUS VON BALAS • Erreicht man z.B. den Vater des Knoten, der mit xm bezeichnet wurde. In diesem Fall sind alle Einträge in der Liste, die nach dem Eintrag xm stehen, aus {x̄l | l ∈ {1, . . . , n} \ {m}}. Wir konstruieren jetzt die Kante vom Vater des Knoten xm zum Knoten x̄m und ändern in der Liste den Eintrag xm zu x̄m ab. Die neuen Werte sind: xneu = x − em yneu = y + A−m f (xneu ) := f (x) − cm Rneu = R ∪ {xm } 0 Rneu = R0 \ {xm } Liste = [. . . , x̄m , . . .] 0 Setze x = xneu , y = yneu , f (x) = f (xneu ), R = Rneu und R0 = Rneu . Gehe zu Schritt 1, um den nun Knoten m̄ nochmals zu untersuchen. Ein Beispiel wird in Abschnitt 3.4.5 vorgeführt. 3.4.4 Findet der Algorithmus die Optimallösung? Unter der Annahme, dass eine Optimallösung überhaupt existiert, findet der Algorithmus sie genau dann, wenn er alle möglichen zulässigen Lösungen prüft. Würde man alle n Stufen des Lösungsbaumes konstruieren, so wären alle Möglichkeiten explizit untersucht worden. Nun stellt sich die Frage, ob zulässige Lösungen ausgeschlossen wurden, wenn man sich dazu entscheidet, einen Knoten des Lösungsbaumes nicht mehr zu verzweigen. Ein Knoten wird in einem der drei folgenden Fälle nicht mehr verzweigt (vgl. Satz 3.17): • An einem Knoten wurde eine zulässige Basislösung gefunden. Nach Folgerung 3.5 erhält man an einem Sohn dieses Knotens keine Optimallösung mit kleinerem Optimalwert. • An einem Knoten wurde eine nicht zulässige Lösung gefunden, deren Zielfunktionswert grösser ist als der Wert der „besten bis jetzt gefundenen zulässigen Lösung“. 89 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Wieder sagt uns Folgerung 3.5, dass wir an keinem Sohn des Knotens einen kleineren Optimalwert erhalten können. • An einem Knoten wurde eine nicht zulässige Lösung gefunden, deren Zielfunktionswert kleiner ist als der Wert der „besten bis jetzt gefundenen zulässigen Basislösung“. In diesem Fall wird überprüft, ob diese noch nicht zulässige Lösung überhaupt noch zulässig werden kann. Wenn nein, dann wird nicht mehr weiter verzweigt. Mit anderen Worten: Wird ein Knoten nicht mehr verzweigt, so werden entweder zulässige Lösungen, deren Zielfunktionswert grösser ist als der einer bereits gefundenen zulässigen Basislösung, oder nicht zulässige Lösungen ausgeschlossen. 3.4.5 Calipso for Linear Programming Das Programm Calipso for Linear Programming hat in der DOS-Version die Funktion IMPLICIT ENUMERATION. Diese wendet im wesentlichen den Additiven Algorithmus von BALAS an. Hat man schon ein binäres LOP eingegeben, so löst es dies, wobei man sich die einzelnen Schritte ausgeben lassen kann. Hat man ein ganzzahliges, aber nicht binäres LOP, so bietet Calipso for Linear Programming die Möglichkeit, das ganzzahlige LOP in eine binäres umzuwandeln, sich das binäre ausgeben zu lassen und dann das binäre zu lösen. Wie so eine Umwandlung von einem ganzzahligen LOP G in ein binäres LOP BP vor sich geht, wird nun beschrieben: f (x) = cT x → min! G= Ax = b x ≥ 0, x ∈ Z wobei c, x ∈ Zn , b ∈ Zm , A ∈ Mmn (Z). Es wird vorausgesetzt, dass der zulässige Bereich M = {x ∈ Rn | Ax = b, x ≥ 0} beschränkt ist. So kann man für jedes xi mit i ∈ {1, . . . , n} eine untere und eine obere Schranke angeben: αi ≤ xi ≤ βi . 90 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Die obere Grenze βi kann man finden, indem man das Problem xi → max! L= Ax = b x≥0 löst. Analog findet man αi durch Lösung von x → min! i L= Ax = b x≥0 Jedes xi für i ∈ {1, . . . , n} kann nur endlich viele ganzzahlige Werte annehmen. Diese Anzahl bezeichnet man mit k = bβi c − dαi e + 1. Schreiben wir ein xi als Linearkombination von binären Variablen yj mit j ∈ {1, . . . , p} an, wobei k ≤ 2p und p ∈ N ist. xi = αi + y1 + 2y2 + 22 y3 + . . . + 2p−1 yp . Man numeriert die binären Variablen durch, das heisst, wenn z.B. x1 mit p binären Variablen dargestellt wird, dann beginnt die Indizierung für Variable x2 bei p + 1, also x2 = α2 + yp+1 + 2yp+2 + . . . . Beispiel 3.18 Fortsetzung von Beispiel 2.5 x1 − 9x2 → min! −x1 + 6x2 ≤ 11 G= x1 ≥ 1 5x + 2x ≤ 27 1 2 x , x ≥ 0, x , x ∈ Z 1 2 1 2 α1 = 1, β1 = 5.4, α2 = 0, β2 = 2.5625 1) x1 : k = 5 ⇒ p = 3, da 5 ≤ 23 = 8 ⇒ x1 = 1 + y1 + 2y2 + 4y3 2) x2 : k = 3 ⇒ p = 2, da 3 ≤ 22 = 4 ⇒ x2 = y4 + 2y5 91 3.4. DER ADDITIVE ALGORITHMUS VON BALAS 1 + y1 + 2y2 + 4y3 − 9y4 − 18y5 → min! −1 − y1 − 2y2 − 4y3 + 6y4 + 12y5 ≤ 11 BP = 1 + y1 + 2y2 + 4y3 ≥ 1 5 + 5y1 + 10y2 + 20y3 + 2y4 + 4y5 ≤ 27 y ∈ B5 Nun müssen wir das Problem in die Form, die der Algorithmus von Balas verlangt, transformieren. Wir schreiben für die Variablen x statt y , um mit der obigen Beschreibung des Algorithmus konform zu gehen. Weiters führen wir die Variablen x0 ein (vgl. Satz 3.16). Mit Hilfe der Schlupfvariablen y1 , y2 udn y3 erhalten wir so: f (x0 ) = −26 + x01 + 2x02 + 4x03 + 9x04 + 18x05 → min! −x01 − 2x02 − 4x03 − 6x04 − 12x05 + y1 = −6 BP 0 = −x01 − 2x02 − 4x03 + y2 = 0 5x01 + 10x02 + 20x03 − 2x04 − 4x05 + y3 = 16 x0 ∈ B5 , y ≥ 0 Der Einfachheit halber schreibe ich im Folgenden x statt x0 . Schritt 0 x = (0, 0, 0, 0, 0), y = (−6, 0, 16) f (x) = −26, o0 = ∞, R0 = ∅, Liste = []. 0 Schritt 1 und 2 Das Tableau ist nicht primalzulässig. Also berechnen wir uns: σ1 = −25 < −6. Es gibt also zulässige Lösungen und wir berechnen weiters: τ1 = −5, τ2 = −4, τ3 = −2, τ4 = 0, τ5 = 0 Wähle x4 als Verzweigungsvariable aus, da c4 < c5 . Schritt 3 x = (0, 0, 0, 1, 0), y = (0, 0, 18) f (x) = −17, R0 = {x4 }, Liste = [x4 ]. 92 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Schritt 1 Das Tableau ist primalzulässig und f (x) < o0 . So setzen wir o0 := −17. Spei- chere (x, y) als beste bis jetzt gefundene zulässige Basisllösung. Schritt 4 Die Wurzel hat nur einen Sohn, wir konstruieren also den zweiten Sohn x̄4 : x = (0, 0, 0, 0, 0), y = (−6, 0, 16), f (x) = −26, R0 = ∅ und Liste = [x̄4 ]. Schritt 1 und 2 Das Tableau ist nicht primalzulässig. Entnehme die Werte für σ1 , τ1 , τ2 und τ3 aus einem früheren Durchlauf von Schritt 1. Der Wert τ5 werden nicht mehr benötigt, da die Bedingung f (x) + cj < o0 nicht erfüllt wird. Wir wählen x3 als Verzweigungsvariable. 0 .. .............. ....... .............. ....... ....... . . . . . . ....... ....... ....... ....... ....... ....... ....... . . . . . . ....... ... . . . . . ....... . ... . . . ....... . . . ... ....... . . . . . . . x̄4 x4 P Schritt 3 x = (0, 0, 1, 0, 0), y = (−2, 4, −4), f (x) = −22, R0 = {x3 }, Liste = [x̄4 , x3 ]. Schritt 1 Das Tableau ist nicht primalzulässig, f (x) < o0 . Berechne σ1 = −3 < −2, σ3 = 0 > −4 Es gibt also keine zulässigen Lösungen der LOP, die zu den Söhnen von Knoten x3 gehören. Markiere ihn mit N Z . Schritt 4 Wir konstruieren Knoten x̄3 : x = (0, 0, 0, 0, 0), y = (−6, 0, 16), f (x) = −26, R0 = ∅ und Liste = [x̄4 , x̄3 ]. Schritt 1 und 2 Das Tableau ist nicht primalzulässig. Entnehme die Werte für σ1 , τ1 und τ2 aus den früheren Durchläufen von Schritt 1. Wir wählen x2 als Verzweigungsva- riable. 93 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Schritt 3 x = (0, 1, 0, 0, 0), y = (−4, 2, 6), f (x) = −24, R0 = {x2 }, Liste = [x̄4 , x̄3 , x2 ]. Schritt 1 Das Tableau ist nicht primalzulässig und f (x) < S . Also berechnen wir uns: σ1 = −1 > −4 Es gibt also keine zulässigen Lösungen der LOP, die zu den Söhnen von Knoten x2 gehören. Markiere ihn mit N Z . Schritt 4 Wir konstruieren Knoten x̄2 : x = (0, 0, 0, 0, 0), y = (−6, 0, 16), f (x) = −26, R0 = ∅ und Liste = [x̄4 , x̄3 , x̄2 ]. Schritt 1 und 2 Das Tableau ist nicht primalzulässig. Entnehme die Werte für σ1 und τ1 aus früheren Durchläufen von Schritt 1. Wir wählen x1 als Verzweigungsvariable. Schritt 3 x = (1, 0, 0, 0, 0), y = (−5, 1, 11), f (x) = −25, R0 = {x1 }, Liste = [x̄4 , x̄3 , x̄2 , x1 ]. Schritt 1 Das Tableau ist nicht primalzulässig und f (x) < S . Also berechnen wir uns: σ1 = −1 > −4 Es gibt also keine zulässigen Lösungen der LOP, die zu den Söhnen von Knoten x1 gehören. Markiere ihn mit N Z . Schritt 4 Wir konstruieren Knoten x̄1 : x = (0, 0, 0, 0, 0), y = (−6, 0, 16), f (x) = −26, R0 = ∅ und Liste = [x̄4 , x̄3 , x̄2 , x̄1 ]. Schritt 1 Das Tableau ist nicht primalzulässig. σ1 = 0 > −6, da R0 = ∅. Es gibt also keine zulässigen Lösungen der LOP, die zu den Söhnen von Knoten x̄1 gehören. Markiere ihn mit N Z . Wir haben nun alle möglichen (nicht unbedingt zulässigen) Lösungen implizit untersucht. Die Optimallösung ist x = (0, 0, 0, 1, 0), y = (0, 0, 18) mit Optimalwert f (x) = −17. Transformieren wir diese Werte vom binären LOP zurück ins ganzzahlige LOP, so erhalten wir y = (0, 0, 0, 1, 0) und x1 = 1 + y1 + 2y2 + 4y3 = 1 und x2 = 3 − y4 − y5 = 2. 94 3.4. DER ADDITIVE ALGORITHMUS VON BALAS Und so löst Calipso for Linear Programming dieses Beispiel: The binary problem is: Minimize: (1)u1 + (2)u2 + (4)u3 + (9)u4 + (18)u5 - (27); Row 1: (1)u1 + (2)u2 + (4)u3 + (6)u4 + (12)u5 >= 7; Row 2: (1)u1 + (2)u2 + (4)u3 >= 1; Row 3: (-5)u1 + (-10)u2 + (-20)u3 + (2)u4 + (4)u5 >= -21; Row 4: (1)u1 + (2)u2 + (4)u3 >= 0; Row 5: (-1)u4 + (-2)u5 >= -3; P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = [10000] [11 ] [111 ] [110 ] [1101 ] [1100 ] [11001] [11000] [10 ] [101 ] [1011 ] [1010 ] [10101] [10100] [100 ] [1001 ] [1000 ] [10001] [10000] [0 ] [01 ] [011 ] [010 ] [0101 ] [0100 ] [01001] [01000] [00 ] [001 ] [0011 ] [0010 ] [00101] [00100] zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp zp = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -26.00 -24.00 -20.00 -24.00 -15.00 -24.00 -6.00 -24.00 -26.00 -22.00 -13.00 -22.00 -4.00 -22.00 -26.00 -17.00 -26.00 -8.00 -26.00 -27.00 -25.00 -21.00 -25.00 -16.00 -25.00 -7.00 -25.00 -27.00 -23.00 -14.00 -23.00 -5.00 -23.00 zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= zstar= infinity infinity infinity infinity -15.00 -15.00 -15.00 -15.00 -15.00 -15.00 -15.00 -15.00 -15.00 -15.00 -15.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 -17.00 EXT EXT IPS EXT FPS EXT EOV IPS EXT EXT EOV EXT EOV IPS EXT FPS EXT EOV IPS EXT EXT IPS EXT EOV EXT EOV IPS EXT EXT EOV EXT EOV IPS 95 3.5. VERZWEIGUNGSSTRATEGIEN P = [000 ] zp = -27.00 zstar= -17.00 IPS Number of iterations = 34 The optimal solution is: x1= 1.000000 x2= 2.000000 (with bound <= 7) (with bound <= 3) z= 17.000000 Calipso Balas P x zp f (x) zstar o0 EXT steht für eine nicht zulässige und nicht ganzzahlige Lösung. IPS steht für eine nicht zulässige, aber ganzzahlige Lösung. FPS steht für eine zulässige, ganzzahlige Lösung. EOV steht für end of vertex. 3.5 Verzweigungsstrategien Wenn man die Reihenfolge der Konstruktion der Knoten von den beiden eben beschriebenen Algorithmen genauer ansieht, stellt man einen Unterschied fest: Sowohl bei DAKIN als auch bei BALAS wird zuerst nur ein Sohn pro Knoten konstruiert, der zweite erst später. Bei L AND und D OIG werden zuerst zwei Knoten konstruiert, dann beide untersucht und erst danach werden die Knoten der nächsten Stufe erstellt. 3.5.1 Depth First Search - Strategie Bei der sogenannten Depth First Search - Strategie sucht man zuerst in die Tiefe (engl. depth), dann in die Breite (engl. breadth). Der Algorithmus von DAKIN verwendet diese Methode. Er untersucht einen Knoten einer Stufe, verzweigt diesen, untersucht den Knoten der nächsten Stufe usw., bis er auf einen Endknoten stösst, d.h. einen Knoten, dessen 96 3.5. VERZWEIGUNGSSTRATEGIEN LOP entweder eine ganzzahlige Optimallösung besitzt oder unlösbar ist. Dann wandert er Stufe für Stufe diesen Ast zurück, verzweigt die jeweiligen Knoten ein zweites Mal und sucht dort wieder Stufe um Stufe nach oben, bis er wieder zu einem Endknoten gelangt. Vergleiche dazu Abbildung 3.2. Diese Methode eignet sich zur Implementierung in den Computer, da wenig Speicherplatz benötigt wird. Sie führt jedoch weniger schnell zum Ziel als die Breadth First Search - Strategie. 0 1 2 3 4 7 5 6 8 Abbildung 3.2: Depth First Search - Strategie 3.5.2 Breadth First Search - Strategie Bei der sogenannten Breadth First Search - Strategie, die beim Algorithmus von L AND und D OIG angewendet wird, sucht man zuerst in die Breite und dann in die Tiefe. Es werden an jeden Knoten mindestens zwei Söhne konstruiert und einer dieser Knoten wird ausgewählt, und an ihm werden wieder mindestens zwei Söhne konstruiert und einer davon zur weiteren Verzweigung ausgewählt, usw. Vergleiche dazu die Abbildung 3.3. Der Vorteil dieser Methode ist, dass die erste gefundene ganzzahlige Lösung besser ist, als die erste gefundene Lösung der Depth First Search - Strategie, was ein Vorteil ist, wenn 97 3.5. VERZWEIGUNGSSTRATEGIEN man Algorithmen nach einer gewissen Anzahl von Schritten abbricht. Der Nachteil dieser Methode ist, dass sie sich schlecht zum Programmieren eignet, da man viel Speicherplatz benötigt, weil die Informationen von mehreren Knoten gespeichert werden müssen. (vgl. Minoux [3]) 0 1 2 3 4 7 5 6 8 Abbildung 3.3: Breadth First Search - Strategie 98 Literaturverzeichnis [1] Schrijver, A., Theory of linear and integer programming, John Wiley & Sons, 1986 [2] Dantzig, G.B., Lineare Programmierung und Erweiterungen, Springer-Verlag, 1966 [3] Minoux, M., Mathematical Programming, John Wiley & Sons, 1986 [4] Girstmair, K., Vorlesung „Lineare Optimierung“, SS1996 [5] Piehler, J., Einführung in die lineare Optimierung, Teubner, 1970 [6] Piehler, J., Ganzzahlige lineare Optimierung, Teubner, 1970 [7] Strayer, J.K., Linear Programming and its Applications, Springer-Verlag, 1989 [8] Bronstein, I.N., et al., Taschenbuch der Mathematik, Verlag Harri Deutsch, 1993 [9] dtv-Atlas zur Mathematik, Deutscher Taschenbuch Verlag, 1978 [10] Kleine Enzyklopädie Mathematik, VEB Verlag Enzyklopädie Leipzig, 1977 [11] Land, A.H. und Doig, A.G., An Automatic Method of Solving Discrete Programming Problems, Econometrica 28 (1960) p. 497-520 [12] Brucker, P., Ganzzahlige lineare Programmierung mit ökonomischen Anwendungen, Verlag Anton Hain, 1975 [13] Neumann, K., Operations Research Verfahren Band I, Carl Hanser Verlag, 1975 [14] Gal, T. (Hrsg.), Grundlagen des Operations Research 2, Springer Verlag, 1989 99 LITERATURVERZEICHNIS [15] Dakin, R.J., A tree-search algorithm for mixed integer programming problems, Computer Journal 8 (1965) p. 250-255 [16] Lawler, E.L., and Wood, D.E., Branch-and-Bound Methods: A Survey, Operations Research (USA) 14 (1966) p. 699-719 [17] Einführung in die Methode Branch and Bound, Hrsg. F. Weinberg, Springer Verlag, 1968 [18] Balas, E., An Additive Algorithm for Solving Linear Programs with Zero-One Variables, Operations Research (USA) 13 (1965) p. 517-546 [19] Little, J.D.C. et.al., An Algorithm for the Traveling Salesman Problem, Operations Research (USA) 11 (1963), p. 972-989 [20] Calvert, J. und Voxman, W., Linear Programming, Harcourt Brace College Publishers, 1989 [21] http://www.uidaho.edu/˜calvert/lp.html [22] Tomlin, J.A., Branch and Bound Methods for Integer and Nonconvex Programming, Integer and Nonlinear Programming, ed. J. Abadie, 1970, p. 437-450 [23] Lederle, C., Anwendungen der Linearen Optimierung, 4. Methode der Schnittebenen - Ganzzahlige Optimierung, Seminararbeit, WS 1996/97 [24] Nemhauser, G.L. and Wolsey, L.A., Integer and Combinatorial Optimization, John Wiley & Sons, 1988 [25] Sierksma, G., Linear and Integer Programming, Theory and Practice, Dekker, 1996 100 Danksagung An dieser Stelle möchte mich bei allen bedanken, die mir während meines Studiums zur Seite gestanden sind: • meinen Eltern und dem Staat Österreich für die finanzielle Unterstützung • meinem Diplomarbeitsbetreuer A. Univ. Prof. Dr. Kurt Girstmair für die fachliche Unterstützung und Michael Schgraffer für die LATEX-nische Unterstützung und das Korrekturlesen dieser Arbeit • meiner Mutter, sowie allen Freunden und Kollegen in nah und fern, für die moralische Unterstützung Lebenslauf Ich, Arntraud Heidrun Bacher, wurde am 31.10.1974 in Hall in Tirol geboren. • Ausbildung: – 1981 - 1985: Volksschule Amras, Innsbruck – 1985 - 1993: Akademisches Gymnasium Innsbruck, Humanistischer Zweig – 1993: Matura und Immatrikulation an der Leopold-Franzens-Universität Innsbruck • Tagungen, Vorträge (V), Posterpräsentationen (P), Beobachtungsaufenthalt: – 19. - 23.3.1999 IAF Space and Education Seminar, ESA/ESRIN, Frascati, Italien – 22. - 24.7.1999 XIII. Tage der Schulastronomie, Sächsische Akademie für Lehrerfortbildung, Meissen, Deuschland – 9. - 14.8.1999 (P) 3rd EAAE Summerschool, Briey, Frankreich – 24. - 25.9.1999 (V) Astrodidactica III., Deutschlands astronomische Bildungsmesse, Zeulenroda, Deutschland – 26.9. - 2.10.1999 Computerkurs für 50+ Aktive, Posthotel Oberiberg, Schweiz (Kursleitung) – 3. - 8.10.1999 50th IAF Congress,Amsterdam, Niederlande – 15. - 17.10.1999 (V) Preparatory Visit EducationalPackage im Rahmen von Comenius, Innsbruck, Österreich – 25. - 28.10.1999 (V) Astrobux99, Tagung zur Astronomie und Raumfahrt, Buxtehude, Deutschland 101 – 28.2. - 1.3.2000 (V) 54. Fortbildungswoche des Vereins zur Förderung des physikalischen und chemischen Unterrichts, Wien, Österreich – 4.4. - 25.4.2000 Beobachtungsaufenthalt ESO 1.0m-Teleskop (DeNIS-Projekt), La Silla, Chile – 3. - 8.7.2000 (P) 4th EAAE Summerschool, Tavira, Portugal • Publikationen: – Kerber F., Armsdorfer B., Bacher A., Benger W., Bruckner S., Eisendle R., Furlan E., Gajdosik M., Gratl H., Gröbner H., Grömer G., Hartl H., Jarosch A., Kapferer W., Kausch W., Kimeswenger S., Koller J., Nordmeyer G., Limmert H., Saurer W., Schmeja S., Span N., Stampfer B., Weinberger R., Wiedemair C., (Projektgruppe Hale-Bopp Innsbruck), Comet Hale-Bopp over Innsbruck, Astronomische Gesellschaft Abstract Series 13 (1997), 171 – Bacher, A., Europe’s Classrooms, 3rd European Association for Astronomy Education International Summer School Proceedings (1999), 154 – Bacher, A., Raumfahrt im Physik/Astronomie-Unterricht oder Der Mond im Klassenzimmer. Astrodidactica III, Deutschlands astronomische Bildungsmesse, Messebroschüre (1999), 17 – Bacher, A., Projekt LunarSat - Der Mond im Klassenzimmer. Astrobux99, Tagung zur Astronomie und Raumfahrt, Tagungsmappe (1999), 18 – Grömer, G., Bacher, A., Lederle, C., Zechmann, M.: Proc. of the LunarSat Educational Package Preparatory Visit (1999) – Bacher, A., Energy Crisis in Moon orbit, 4th European Association for Astronomy Education International Summer School Proceedings (2000), 206 • Musikalische Ausbildung und Tätigkeiten: – Blockflöte: 1983 - 1986 – Gitarre: 1986 - 2000 8.6.2000: Abschlussprüfung mit Sehr Gutem Erfolg – Klarinette: 1993 - 1997 18.6.1994: Jungmusikerleistungabzeichen in Bronze mit Ausgezeichnetem Erfolg 24.6.1995: Jungmusikerleistungabzeichen in Silber mit Sehr Gutem Erfolg – Saxophon: 1997 – Seit 1995: Mitglied bei der Stadtmusikkapelle Amras 102