Ausgewählte Methoden der ganzzahligen Linearen Optimierung

Werbung
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
Herunterladen