2 Optimierung auf Netzwerken

Werbung
2
Optimierung auf Netzwerken
Die Diskussion, ob nun in der Praxis Innere-Punkte-Methoden oder die Simplexmethode
zum Lösen linearer Programme zu bevorzugen sind, ist noch offen. Es zeichnen sich aber
einzelne Problemklassen ab, in denen jeweils eine Methode besonders effizient ist. Eine
Problemklasse, für die die Simplexmethode besonders gut geeignet ist, sind spezielle lineare
Programme, die von Optimierungsproblemen über Netzwerken herrühren. Wir werden dazu
im folgenden drei Beispiele kennenlernen.
2.1
Das Transportproblem
Das Transportproblem läßt sich am einfachsten an einem Beispiel illustrieren. Das Bild
unten ist inhaltlich aus [1] entnommen. Es zeigt verschiedene Städte in den USA, in denen
Fischkonserven hergestellt werden und andere Städte, in denen die Fischkonserven gelagert
bzw. weiterverkauft werden sollen. Die Produktion und der Verbrauch (Bedarf, Umsatz) an
Fischkonserven ist an den einzelnen Städten ablesbar, und die Transportkosten zwischen
den Städten sind an den Pfeilen angegeben. Das Problem ist nun, einen kostengünstigsten
Transportplan zu finden, bei dem die Fischkonserven längs einzelner Pfeile transportiert
werden, und zwar so, daß der Verbrauch in jedem Lager gedeckt wird, und der Transport
aus einer Stadt die Produktion in der Stadt nicht überschreitet.
Probleme dieser Natur waren es, die Dantzig dazu angeregt hatten, die Simplexmethode
gegen Ende des Zweiten Weltkrieges zu entwickeln.
....
... ...
...........
...............
.......
.. ..
... ...
... ...
.. ...
.
.................................
...
...
.
...............................
....
... ...
...........
................
.........
Portland .... ....
................
................
. ..
................
40 t
... ...
................
.....
................
.................................
.....
................
.....
.
...
.
.
.
.
.
.
................
.....
...........
...
Seattle 70 t
................
.....
.....
..............
................
.
.....
..............
................
.....
..... ............................
.............
.
.
.
.
.
.
.
.
.
.
................
.....
.
.
.
.
.
.
.
........
...
.....
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................
.....
.
...
........
.
.
.
.
.
.
.
.
..
.
.
.....
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
................
..
.....
..
.....
................
..............
.....
...
...
......
................
.............
.....
...
...
..... ................
......
.....
...
......
.........................................
.....
...
......
...
................
..............
.....
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.....
................
.....
........
.....
......
................
..............
...
.....
..........................
......
.............
...
.....
.
..............
.....
...... .................................... ................................
..............
...
.....
.... ...
......
.............
.
.
.
.
.
.
.
.
..
.
.
.
.
.. ....
.
.
.
.
.
.
.
.
.
.
.
.
.
.....
...
.
...........
..............
.....
...
......
..................................... .....
.... .......................
.......
......
.. .......
.
.............. ...
.....
.....................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.......
.
.
. .
.
..........................
.....
....
............ .
.....
......
..............
.....
.....
............
..............
.....
......
............
.............
New York
.....
................
..............
......
............
.....
.............
..... ......................
.
.
.
.
.
.
.
.
.
.
.
.
..............................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.....
.
..
. .........
.
. ..
100 t
....
.....
.................
....................
....................................... .....
.....
.....
..............
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.....
.. .
. ...
..
.....
.....
............ ......
....................................
.....
............ ..........
.....
.
.
.
.
.
.
.
.
.
.
.
.....
.
.
.
.
........
....
.....
......
............
San Franzisco .
.....
.....
.....
............
.....
.....
......
...............
..... ......................
.....
......
. .........
.........
70 t
.....
..............
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.......
........
.
......
....
.......
............
..........
...........
.....
.......
............
...
.....
.......
............
....
..........................................
...
.....
.......
............
....... .....
.......
........................................... ....
.....
...
............
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.......
.
...
.
...
..............
...........
.......
...
...
... ...........
.....
............
.......
...
.....
.......
.. .............
............... ...............................
...
.....
.................
..................... ....
... ....
.....
...
........... .............
....................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Kansas
City
.
.
.
.
.
.
.
.
.
.
.
.
.
.... ....
.
.......
.........
......................................
............
.....
.. ..
...........
.....
.................. .............
20 t
...
.................................. .
.....
....................
.......
..
..
.....
... .....................................
.......
..
.....
.
.......
.
.
.
.....
...
.
.
.......
...
.......
............................
... ........
.....
.......
.....
... .. ..
.......
.....
.. ...........
.......
.....
San Diego 50 t
.. .............
.......
.
.
.
.
.
.
.
.......
....
...
.......
... ... ...
.....
.......
.. ... ...
.....
.......
... ... .... .....
.......
.
... ...
.
.................................
..
....
.................................
190
210
130
70
40
60
170
40
90
100
50
100
Houston 30 t
52
Formal werden Gebilde wie oben, in denen gewisse Knoten (Städte) durch Kanten (Pfeile) verbunden werden, durch Graphen beschrieben.
Definition 2.1 Ein Graph G ist ein Tupel G = (V, E) bestehend aus einer endlichen
Knotenmenge V (aus dem Englischen: “vertices”) und einer Kantenmenge E (“edges”) mit
E ⊂ V × V . In dieser Vorlesung wird der Fall, daß eine Kante mehrfach auftritt, oder daß
eine Kante e = (u, v) ∈ E denselben Anfangs- und Endpunkt u = v hat, ausgeklammert.
Ein Graph kann durch seine Adjazenzmatrix A dargestellt werden. Dabei ist A ∈ IRV ×V
und1
1 falls (u, v) ∈ E
Auv =
0
sonst.
Ein Graph G heißt ungerichtet, falls seine Kanten keine Richtung haben, d.h. falls E ⊂
{{u, v} | u, v ∈ V }. Wir schreiben dann trotzdem (u, v) ∈ E und assoziieren (u, v) = (v, u).
Die Adjazenzmatrix ist in diesem Fall symmetrisch.
Allgemein läßt sich das Transportproblem wie folgt formulieren: Gegeben seien n Quellen S1 , . . . , Sn (aus dem engl. “sources”) und m Ziele D1 , . . . , Dm (“destinations”) und ein
bestimmtes Gut (die Fischkonserven). Die Produktion des Gutes in Si sei si und der Verbrauch des Gutes in Dj betrage dj . Weiter seien Transportkosten pro Einheit von Si nach
Dj bekannt und durch cij gegeben. Gesucht sind die Transportmengen xij ≥ 0 von Si nach
Dj für 1 ≤ i ≤ m und 1 ≤ j ≤ m so, daß die Gesamttransportkosten möglichst niedrig sind
und die Verbrauchs- und Produktionsmengen nicht unter- bzw. überschritten werden. Wir
erhalten folgendes Problem:
min
Pn
i=1
Pm
j=1 cij xij
s.t.
Pm
j=1 xij ≤ si
Pn
i=1 xij ≥ dj
xij ≥ 0.
für 1 ≤ i ≤ n
für 1 ≤ j ≤ m
Die Nebenbedingungen fordern z.B., daß die gesamte Transportmenge, die aus dem Knoten Si ausfließt, die Produktion si nicht übersteigen darf. Man erkennt sofort, daß der
P
P
zulässige Bereich des linearen Programms leer ist, falls ni=1 si < m
j=1 dj . Falls umgekehrt
Pm
Pn
s
>
d
,
kann
man
eine
“Müllhalde”
D
einführen
mit dem “Verbrauch”
m+1
i=1 i P j=1 j P
n
m
dm+1 := i=1 si − j=1 dj und Kosten ci,m+1 = 0 für 1 ≤ i ≤ n. So kann stets erreicht
werden, daß
n
X
si =
i=1
m
X
dj
j=1
gilt. Unter dieser Zusatzforderung erhalten wir die folgende Form des Transportproblems:
min
(T P )
Pn
i=1
Pm
j=1 cij xij
s.t.
Pm
j=1 xij = si
Pn
i=1 xij = dj
xij ≥ 0.
für 1 ≤ i ≤ n
für 1 ≤ j ≤ m
1
Die Bezeichnung A ∈ IRV ×V ist so zu verstehen, daß die Zeilen und Spalten von A mit v1 , v2 , . . . , vn
durchnumeriert sind falls V = {v1 , v2 , . . . , vn }, (und nicht wie gewohnt für A ∈= IRn×n mit 1, 2, . . . , n
numeriert sind).
53
Dies ist ein lineares Programm in Standardform (P ), min{c̃T x̃ | Ax̃ = b, x̃ ≥ 0} mit
x̃ = (x11 , . . . , x1m , x21 , . . . , x2m , . . . , xn1 , . . . , xnm )T
und c̃ analog. Weiter ist

1···1




A=

1
 .
 ..
1···1
1
..
1
.
1




.

1···1
,

1
.. 
. 
···
..
1
s
1
 s2
 .
 ..

b=
 sn
 d1
 .
 .
.
dm





.




Wir schreiben A = (a11 a12 · · · a1m a21 · · · anm ) mit Spaltenvektoren
0
 
a ij
 ... 
 
0
 
 1  ←− i
 
0
.
.
=
.
.
0
 
 1  ←− n + j
 
0
.
.
.
0
Der Rang von A ist offenbar kleiner als n + m, denn
(1, . . . , 1, −1, . . . , −1)A = 0.
| {z } |
n−mal
{z
m−mal
}
(Der Spaltenvektor (1, . . . , 1, −1 . . . , −1)T liegt im Nullraum von AT .) Wir bezeichnen die
Matrix, die man aus A durch Streichen der letzten Zeile erhält, mit Ã, und mit b̃ den Vektor
b ohne die letzte Komponente. Dann hat à (und somit auch A) den Rang n + m − 1, denn
das Gleichungssystem ÃT y = 0 hat nur die Lösung yk = 0 für 1 ≤ k ≤ n + m − 1. (Die m-te
Zeile von ÃT enthält eine einzige 1 an der Stelle k = 1, also ist y1 = 0, analog folgt aus der
2m-ten Zeile des Gleichungssystems y2 = 0, und allgemein yk = 0 für 1 ≤ k ≤ n. Damit
P
P
ist dann auch yn+1 = . . . = yn+m−1 = 0.) Aufgrund unserer Forderung si = dj ist die
rechte Seite konsistent, d.h.
Ax̃ = b ⇐⇒ Ãx̃ = b̃.
Um die einfache Struktur der Matrix A beizubehalten, benutzen wir im folgenden weiterhin
A anstelle von Ã. So betrachten wir wieder Indexvektoren J ⊂ N := {(1, 1), (1, 2), . . . , (n, m)}
und nennen J eine Basis von A, wenn |J| = n + m − 1 und die Spalten von AJ linear unabhängig sind (d.h. wenn Ã−1
J existiert). Die Basen von A lassen sich mithilfe von Graphen
beschreiben.
Definition 2.2 Sei G = (V, E) ein gerichteter Graph. Ein Weg von u ∈ V nach v ∈ V ist
eine Folge von Kanten ((u, v1 ), (v1 , v2 ), (v2 , v3 ), . . . , (vn−1 , v)) ∈ E n für ein passendes n ≥ 1.
Dabei stimmen der Endknoten der i-ten Kante und der Anfangsknoten der i+1-ten Kante
54
für 1 ≤ i ≤ n−1 stets überein. Ein Weg ist einfach (elementar), wenn er keine Kante (Ecke)
mehr als einmal durchläuft. In einem ungerichteten Graphen sind Wege analog definiert.
In einem gerichteten Graphen sprechen wir auch von einem ungerichteten Weg, wenn
zugelassen ist, daß einige (oder alle) Kanten auch in entgegengesetzter Richtung längs des
Weges durchlaufen werden, z.B. in (u, v1 ), (v2 , v1 ), (v2 , v). (Das entspricht einem Weg in
dem Graphen, bei dem alle gerichteten Kanten durch ungerichtete Kanten ersetzt werden.)
G heißt (schwach) zusammenhängend, wenn es zu jedem Paar u, v ∈ V (u 6= v) einen
ungerichteten Weg von u nach v gibt. Ein Zykel ist ein ungerichteter Weg von u nach u. Sei
A wie oben mit Spalten aus der Indexmenge N , dann heißt A Inzidenzmatrix des Graphen G.
Allgemein ist eine Inzidenzmatrix A eines Graphen G dadurch charakterisiert, daß jede
Spalte von A einer Kante von G entspricht, und jede Zeile einem Knoten von G. Die Spalte
von A, die zu einer Kante e gehört, besitzt stets genau zwei von Null verschiedene Einträge
und zwar in den Zeilen, die den beiden (End-) Knoten von e entsprechen. Bei ungerichteten
Graphen sind diese Einträge beide “1”, und bei gerichteten Graphen findet sich in den
Zeilen zu Anfangs- und Endknoten je eine “1” und eine “−1”. Zu einer Teilmenge J der
Kantenmenge N bezeichnen wir mit G(J) den durch J induzierten Graphen mit den gleichen
Knoten wie G, nämlich {Si }1≤i≤n ∪ {Dj }1≤j≤m , und mit den (ungerichteten) Kanten
(Si , Dj ) ∈ E ⇐⇒ es gibt eine Spalte a∗,k von AJ mit aSi ,k = aDj ,k = 1.
Hier ist AJ die Inzidenzmatrix zu G(J).
Lemma 2.3 Sei J ⊂ N ein Indexvektor. Dann ist J linear unabhängig (d.h. AJ und ÃJ
haben linear unabhängige Spalten) genau dann, wenn G(J) keine Zykeln enthält.
Zum Beweis nehmen wir zunächst an, daß G(J) einen Zykel
Dj1 − Si1 − Dj2 − Si2 − · · · − Sik − Dj1 enthält. Aus der Struktur der aij können wir sofort
ablesen, daß dann
ai1 j1 − ai1 j2 + ai2 j2 − ai2 j3 + . . . + aik jk − aik j1 = 0 folgt, d.h. die Spalten von AJ sind linear
abhängig.
Falls andererseits J linear abhängig ist, gibt es Koeffizienten γij , die nicht alle Null
P
sind, so daß (i,j)∈J γij aij = 0. Ohne Einschränkung nehmen wir an, daß alle γij von Null
verschieden sind (sonst Übergang zu J 0 ⊂ J). Aus der Struktur der aij folgt, daß jeder Index
i und jeder Index j in J mindestens zwei mal vorkommt (die aij sind nur an den Stellen i
und n + j von Null verschieden!). Wir fangen nun mit einer Kante (Si1 , Dj1 ) mit (i1 , j1 ) ∈ J
an, und konstruieren sukzessive einen Weg: Da j1 in J mindestens zwei mal vorkommt, gibt
es ein i2 mit (i2 , j1 ) ∈ J. Wir hängen diese Kante an (i1 , j1 ) an und finden wieder eine
Kante (i2 , j2 ). Solange sich kein Index ik oder jk wiederholt, können wir die Konstruktion
des Weges fortsetzen, da jeder neu aufgenommene Index ja zwei mal in J vorkommen muß.
Da die Knotenmenge endlich ist, muß das Verfahren irgendwann einen Knoten Si oder Dj
wiederholen, und liefert somit einen Zykel.
Lemma 2.4 Sei G ein zyklenfreier Graph mit n Kanten und n + 1 Knoten. Dann ist G
zusammenhängend.
Bemerkung: Ein zusammenhängender zyklenfreier Graph heißt Baum.
Der Beweis läßt sich mit Induktion nach n führen. Für n = 0 ist nichts zu zeigen.
Für den Schritt n − 1 → n nehmen wir an, G habe n ≥ 1 Kanten und n + 1 Knoten.
55
Da G zyklenfrei ist, gibt es einen Knoten, von dem nur eine Kante ausgeht. (Wenn von
jedem Knoten mindestens zwei Kanten ausgingen, könnten wir uns wie im Beweis von
Lemma 2.3 wieder einen Zykel konstruieren.) Man streiche diesen Knoten und die zugehörige
Kante. Der entstandene Graph ist immer noch zyklenfrei und nach Induktionsannahme
daher zusammenhängend. Somit ist auch G zusammenhängend.
Als Korollar von Lemma 2.3 und 2.4 erhalten wir eine Charakterisierung der Basen von
A (d.h. von Ã).
Korollar 2.5 Es ist J linear unabhängig und |J| = n + m − 1 (d.h. J ist Basis von Ãx̃ = b̃)
genau dann, wenn G(J) ein Baum ist.
Die Simplexmethode zur Lösung des Transportproblems
Bestimmung einer zulässigen Startbasis mit Hilfe der NW-Eckenregel
Wir erklären diese Regel an einem einfachen Beispiel. In der nachfolgenden Tabelle listen
wir für den Fall n = 3 und m = 4 die Zahlenwerte si und dj auf und die Basislösung
{xij }(ij)∈J , wie sie durch die NW-Eckenregel konstruiert wird.
s1 = 7
s2 = 5
s3 = 2
d1 = 1
1
d2 = 6
6
d3 = 2
0
2
d4 = 5
3
2
Die NW-Eckenregel fängt in der Ecke der Tabelle unten rechts an. Dort ist der Verbrauch
d4 größer als die Produktion s3 , wir nutzen daher die ganze Produktion aus S3 , um den
Bedarf von D4 zu decken, und erhalten x34 = 2. Wir vermerken, daß D4 jetzt nur noch
5 − 2 = 3 Einheiten benötigt. Da die Produktion von S3 verbraucht ist, wenden wir uns
S2 zu, dessen Produktion wir weiterhin nach D4 schicken, soweit sie dort benötigt wird.
Es fließen also 3 Einheiten aus S2 nach D4 (x24 = 3). Um die restliche Produktion von
S2 zu verwerten, wenden wir uns D3 zu und schicken die verbleibenden 2 Einheiten dort
hin, (x23 = 2). Nachdem nun auch S2 leer ist wird der restliche Verbrauch von D3 durch
S1 gedeckt, der restliche Verbrauch ist zufällig Null, x13 = 0, und die Versorgung von D3
damit abgeschlossen. So hangelt sich das Verfahren entweder nach oben (Norden) oder nach
links (Westen) weiter, bis es bei x11 (in der nordwestlichen Ecke der Tabelle) anlangt. Die
Nichtbasisvariablen sind in der Tabelle nicht eingetragen, ihr Wert ist natürlich Null. Wie
man an dem Beispiel sieht, sind auch Entartungen möglich, daß einzelne Komponenten der
P
P
Basislösung (z.B. x13 ) Null sind. Wegen
si =
dj geht das Verfahren stets auf. Der
zugehörige Basisgraph G(J) ist in diesem Fall durch den Baum
D1
D2
D3
D4
.......
....... .
....... .
.
.............
.........
............ .........
............ ..........
........ . .........
........ . .......
...
...
........
........
.
...
..
.......
.......
...
...
.
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
....
.
.
.
.
.
...
...
...
........
........
...
...
...
...
........
........
...
.
.
.
.
.
.
.
.
.
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
..
..
..
...
........
........
...
....
...
...
........
........
...
....
...
...
........
........
....
...
...
...
........
........
...
...
........
........
...
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...
..
..
...
........
........
...
....
...
...
........
........
...
...
....
...
........
........
...
...
...
........
........
...
...
...
...
........
........
...
.
.
.
.
.
.
.
.
.
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
..
..
...
.......
... ........
... ....................
...
... .......
. . ....
....
.............
1
6
S1
0
2
S2
gegeben.
56
3
2
S3
Lösung mit einer Variante der Simplexmethode
Für das Transportproblem läßt sich die Pivotwahl anhand des dualen Problems erläutern:
Wir bemerken, daß das Problem (T P ) die Standardform (P ) hat, und erhalten als duales
Problem (unter Ausnutzung der Struktur von A)
max

n
X

i=1
si ui +
m
X
dj vj | ui + vj ≤ cij


für 1 ≤ i ≤ n, 1 ≤ j ≤ m .

j=1
u
aufgeteilt. Aus der Komplementarität bei dualen
v
Programmen folgt, daß eine Basis J mit Basislösung xij optimal ist, falls es Zahlen ui und vj
gibt, mit ui +vj = cij für (i, j) ∈ J und ui +vj ≤ cij sonst. (Die dualen Variablen s̃ = c̃− ÃT y
sind hier durch sij = cij − ui − vj gegeben.) Wir formulieren nun einen Simplexschritt.
Die duale Variable y ist dabei in y =
1. Bestimme ui und vj mit ui + vj = cij für (i, j) ∈ J. (Dies ist wieder wie bei der
NW-Eckenregel möglich. Die Wahl der ui und vj ist dabei nicht eindeutig (da AT
nicht vollen Rang hat), so daß wir ohne Einschränkung u1 = 0 wählen können. Für
die Nachbarn Dl von S1 , die mit S1 durch eine Kante in G(J) verbunden sind, folgen
aus u1 = 0 und u1 + vl = c1l die Werte vl . Für deren Nachbarn Sk (in G(J)) sind
dann wiederum die Werte uk durch uk + vl = ckl eindeutig gegeben. So lassen sich
sukzessive alle restlichen ui und vj bestimmen.)
2. Falls ui + vj ≤ cij für alle i, j STOP, J ist optimal.
3. Sonst gibt es Koeffizienten r, s so daß ur + vs > crs . Bringe xrs in die Basis. Dadurch
entsteht in G(J) ein Zykel C. Man transportiert nun δ ≥ 0 Einheiten von r nach
s, d.h. xrs := δ. In Ds mündet nun außer (r, s) noch eine Kante (k, s) aus C. Die
Transportmenge xks reduzieren wir auf xks − δ, um somit den Gesamtzufluß in Ds
unverändert (bei ds ) zu halten. Aus Sk führt wiederum noch eine weitere Kante (k, l) ∈
C heraus, längs derer der Transport von xkl auf xkl + δ erhöht wird. Dadurch bleibt
auch in Sk der Gesamtwarenabfluß konstant auf sk . So addiert man zu allen (i, j)
aus C entweder δ oder −δ zu xij hinzu, bis man wieder bei der Kante (r, s) anlangt.
Dann wählt man δ maximal, so daß alle xij nichtnegativ bleiben. Eine der Kanten
(ī, j̄) aus C erhält dabei die Transportmenge xīj̄ − δ = 0 und wird aus der Basis
entfernt. (Im Nichtentartungsfall ist diese Kante eindeutig.) Als neue Basis erhält
man J\{(ī, j̄)} ∪ {(r, s)}.
Als Übung überlege man sich den Zusammenhang zwischen den reduzierten Kosten c̄K
in der Simplexmethode zur Lösung von (P 0 ) und den hier auftretenden Größen cij − ui − vj .
Im Nichtentartungsfall konvergiert diese Variante der Simplexmethode wieder in endlich
vielen Schritten. Beachte, falls die si und dj ganzzahlig sind, so folgt dies auch für die
berechnete Lösung x̃.
2.2
Transshipmentproblem
Bei dem Transshipmentproblem handelt es sich um eine Verallgemeinerung des Transportproblems. Dazu sei ein gerichteter Graph G = (V, R, α, ω) mit Knotenmenge V und Kantenmenge R gegeben. Mit α(r) werde der Anfangsknoten der Kante r ∈ R bezeichnet, mit
57
ω(r) deren Endknoten. Transportiert wird ein Gut, dessen Überschuß im Knoten v ∈ V
durch die Funktion s : V −→ IR dargestellt wird: sv > 0 bedeutet, daß in v mehr produziert
P
als verbraucht wird, sv < 0 umgekehrt. Dabei gelte v∈V sv = 0. Des weiteren bezeichne
xr die Transportmenge längs Kante r, und cr die Kosten pro Einheit Gut bei Transport
entlang der Kante r.
Wir vereinbaren folgende Nomenklatur:
K + (v) := {r|α(r) = v} ist die Menge der Kanten, die vom Knoten v wegführen, die Kanten
aus K − (v) := {r|ω(r) = v} führen in v hinein. Man erhält folgendes Problem:
(T S)
min

X

r∈R
cr xr X
xr −
X


∀v ∈ V, xr ≥ 0
xr = sv

r∈K − (v)
r∈K + (v)
Sei A die Inzidenzmarix von G, definiert durch Air = 1, falls i der Anfangsknoten von r ist,
Air = −1, falls i der Endknoten von r ist, Air = 0 sonst. Die Spalten von A werden also
mit den Kanten r ∈ R durchnumeriert, und die Zeilen mit den Knoten i ∈ V . Mit A kann
man die Nebenbedingungen in der Form Ax = s und x ≥ 0 schreiben. Das duale Problem
zu (T S) lautet:
n
max sT y yα(r) − yω(r) ≤ cr
∀r ∈ R
o
Für einen Indexvektor J ⊂ {xr |r ∈ R} schreiben wir auch J ⊂ R und assoziieren wieder mit
G(J) = (V (J), R(J), α0 , ω 0 ) den durch J induzierten Teilgraphen mit R(J) = {r|xr ∈ J},
kurz R(J) = J, V (J) = {v = α(r)|r ∈ R(J)} ∪ {v = ω(r)|r ∈ R(J)} sowie α0 (r) = α(r) für
r ∈ R(J) und ω 0 (r) = ω(r) für r ∈ R(J).
Satz 2.6 Sei G = (V, R, α, ω) (schwach) zusammenhängend mit |V | = n, und J ⊂ R ein
Indexvektor mit |J| = n − 1. Es gelten:
1. Rg(A) = n − 1,
2. Rg(AJ ) = n − 1
⇐⇒
G(J) ist ein Baum.
Beweis:
1. Es ist AT e = 0, was Rg(A) ≤ n − 1 zeigt.
Definiere à als A ohne seine letzte Zeile. Löse ÃT ỹ = 0. Die letzte Zeile von A
entspricht einem Knoten vn . Für alle Kanten r, r̂ mit α(r) = vn oder ω(r̂) = vn
enthält die entsprechende Zeile von ÃT genau eine −1 bzw. eine 1 in der Spalte von
ÃT zu vj = ω(r) bzw. vj = α(r̂). Daraus folgt: die zugehörigen Knoten vj haben den
Wert yj = 0. Zu diesen vj betrachten wir nun wieder alle Kanten r̃, ˆr̃ mit α(r̃) = vj
oder ω(ˆr̃) = vj und schließen für die gegenüberliegenden Eckpunkte ṽk wieder, daß
yk = 0. So setzen wir das Verfahren fort. Da G zusammenhängend ist, wird auf diese
Weise jedes vl ∈ V erreicht, d.h. yl = 0 ∀l = 1, . . . , n. Also hat à Höchstrang n − 1,
und somit hat auch A Rang n − 1.
Bemerkung: Die Konsistenz der Gleichung Ax = s wird durch eT s = 0 gewährleistet,
d.h. es wird genausoviel produziert wie gebraucht wird.
2. Diese Aussage folgt wie bei Lemma 2.4.
58
Die Optimalitätsbedingung läßt sich wieder wie beim Transportproblem formulieren:
x̄ = x̄(J) zu einer Basis J von (T S) ist optimal, falls es eine duale Variable y : V −→ IR
gibt mit yα(r) − yω(r) = cr für r ∈ J und yα(r) − yω(r) ≤ cr sonst.
Simplexschritt:
Sei J eine zulässige Basis von (T S) und x = x(J) die Basislösung.
1. Bestimme y1 , . . . , yn mit yα(r) − yω(r) = cr für r ∈ J. (Die yr sind bis auf eine additive
Konstante eindeutig.)
2. Falls yα(r) − yω(r) ≤ cr
∀r
=⇒
STOP, J ist optimal.
3. Sonst wähle r̄ ∈ R mit yα(r̄) − yω(r) > cr̄ .
4. J 0 := J ∪ {r̄} enthält einen Zykel C.
5. Entferne eine Kante s ∈ C, J˜ := J 0 \ {s}, so daß J˜ wieder zulässig ist für (T S).
Bemerkung: Die Bestimmung der yi in Schritt 1. und die Bestimmung von s in Schritt 5.
lassen sich wie beim Transportproblem durchführen.
Bestimmung einer zulässigen Startbasis für den Fall, daß G schwach zusammenhängend ist. (Sonst Zerfall in kleinere Teilprobleme.)
1. Bestimme einen G aufspannenden Baum (d.h. ein J ⊂ R so, daß V (J) = V und G(J)
ein Baum ist.)
2. Bestimme die Basislösung x̄ = x̄(J). Falls J zulässig ist für (T S) STOP, sonst:
3. Für alle R ∈ J mit xr < 0 streiche r aus J und ersetze r durch die entgegengesetzt
laufende Kante. Das Resultat sei Ḡ = (V, R̄). (Einige der neuen Kanten liegen aber
vielleicht nicht in R!) Falls R̄ ⊂ R: STOP.
4. Sonst löse (T S) auf G̃ := (V, R ∪ R̄) mit den Kosten cr =
(
0 falls r ∈ R
1 falls r ∈ R̄ \ R.
Der Optimalwert sei ω.
5. Falls ω > 0, hat (T S) keine zulässige Lösung. Falls ω = 0:
(a) alle Kanten r in der Optimallösung sind zulässig, d.h. r ∈ R
=⇒
fertig.
(b) es gibt Kante r in der Optimallösung, die zu R̄ \ R gehört. Deren Wert xr erfüllt
dann xr = 0. Ersetze r durch die entgegengesetzte Kante (aus R). =⇒ fertig.
Bemerkungen:
• Ein aufspannender Baum entspricht einer (möglicherweise unzulässigen) Basislösung,
einen solchen Baum zu finden, ist einfach. Die Basislösung x = x(J) kann dann
direkt abgelesen werden. Ausgehend von einem Knoten v, der in dem Baum nur einen
Nachbarn hat, legt man in der zugehörigen Kante den Fluß so fest, daß der Nettobedarf
in v gedeckt ist. Dann streicht man v und die zugehörige Kante aus dem Baum und
wiederholt den Vorgang.
59
• Falls cr ≥ 0 und eine zulässige Lösung existiert, so ist die Zielfunktion offenbar beschränkt, cT x ≥ 0, und daher existiert eine Optimallösung. Ein Abbruch wegen Unbeschränktheit ist möglich, falls gewisse cr < 0 sind. (Bei einer unsinnigen Subventionspolitik könnte so ein Fall z.B. vorkommen.)
• Die berechneten Lösungen sind bei ganzzahligen si wieder ganzzahlig.
2.3
Bestimmung kürzester und längster Wege in einem Netzwerk
Gegeben: Gerichteter Graph G = (V, R, α, ω) mit zwei ausgezeichneten Knoten P und Q.
Weiter sei jeder Kante r ∈ R eine “Länge” l(r) ∈ IR zugeordnet.
Gesucht: Kürzester gerichteter Weg von P nach Q.
1. Lösungsmöglichkeit:
Reduktion auf Transshipmentproblem.
Eine Einheit werde in P produziert, eine Einheit in Q verbraucht, und die Kosten entsprechen den Längen der Kanten.
Die Simplexmethode zur Lösung des Transshipmentproblems liefert ein ganzzahliges x, das
wie folgt
( interpretiert wird:
0 falls Kante r nicht auf dem kürzesten Weg liegt,
xr =
1 falls Kante r auf dem kürzesten Weg liegt.
2. Die Methode von Dantzig
Diese Methode kann benutzt werden, falls die Längen l(r) der Kanten r alle nichtnegativ
sind.
Mit K + (v) bezeichnen die Menge aller Kanten r, die in v starten, d.h. mit α(r) = v.
(Für die Implementierung des nachfolgenden Verfahren ist es vorteihaft, die Elemente von
K + (v) = {r1 , . . . , rk } stets so zu ordnen, daß l(r1 ) ≤ l(r2 ) ≤ . . . ≤ l(rk ) gilt.)
Mit λ(v) bezeichnen wir im folgenden den kürzesten Abstand eines Knoten v zum Knoten
P , mit T die Knotenmenge, für die der kürzeste Abstand zu P bekannt ist, und mit S die
Menge der Kanten, die in einem kürzsten Weg vorkommen.
1. Setze T := {P } und λ(P ) := 0 die Länge des kürzesten Weges von P nach P . S := ∅
sei die Menge der Knoten, die auf dem kürzesten Weg liegen.
2. Bestimme min{λ(v) + l(r)|v ∈ T, r = (v, v̄) ∈ K + (v), v̄ 6∈ T }. Seien v ∗ und v̄ ∗ zwei
Knoten, für die das Minimum angenommen wird, d.h. v ∗ liegt in T und v̄ ∗ 6∈ T ist
ein Knoten, der von allen Knoten außerhalb von T am nächsten zu P ist. (v ∗ und
v̄ ∗ sind nicht notwendig eindeutig.) Setze S := S ∪ {(v ∗ , v̄ ∗ )}, T := T ∪ {v̄ ∗ } und
λ(v̄ ∗ ) := λ(v ∗ ) + l(v ∗ , v̄ ∗ ).
3. Falls es ein (v, u) gibt mit v ∈ T und u ∈
/ T goto 2. ansonsten STOP.
Behauptung: S ist ein Baum, der die kürzesten Wege von P angibt.
Beweis: Induktion nach der Anzahl der Schritte:
60
1. Schritt: S = ∅
Wegen l(r) ≥ 0 hat der kürzeste Weg von P nach P die Länge ≥ 0, daher ist auch
der leere Weg (ein) kürzester Weg.
k. Schritt → k+1. Schritt:
v0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.............
.
.
.
•
.
.
.
.
.
.
........
.............
..
...
.............
..................
.. .. ...............................
.... ...
...........
.
.
.
•
•.
...
.
.
.
.
.
.
.
.
.
.
.
.....
....
.
.
.
.
.
.
.
.
.
.
.
..
.
.... ..
.
... .......
.
.
.
.
.
..
...
.
.
.
•
.
.
.
.
.
.
...
.
.
...
.
.
.
.
.
.
..
.
.
.
.
.
.
.
...
.
.
........
....
...
......
.
...
.
.
.
.
.
.
.
.
....
.
•
....
.
.
..
.
...
.
.
.
.
.
...
..
.
... ...........
...
.
....
...
...
...
...
..
...
...
...
............. • .........
.
...
.
.
.
...
.
.
.
.
.
.......
..
.... .
..
..
.......
.......
...
...
.......
..
.......
.......
...
....
.......
..
.......
. ..
..
......... .........
....... .
...........
.
.....................
......... v ∗
...
.
.
.........
.. P • ........
• .................................................................... •
......
...............
..
......
.
.
.
.
.
..
......
..
v̄ ∗
......
......
..
......
..
......
.
......
......
.
.
.
.
.
...
......
.....
......
.
.....
......
......
...
...... .
.....
...
..........
......
.
.
.
.
.
.
.
.
.
.
.
.
...
.
.
.
.
.
.
.
• ........................................... •
...
...
...
.
.
.
...
..
....
....
.
.. ..
.
.
...
... .
T ...................................
Die Punkte aus T liegen in dem Bild in dem gestrichelten Kreis. Der kürzeste Abstand
dieser Punkte von P ist nach Induktionsannahme bekannt. Im k-ten Schritt werde nun
der Knoten v̄ ∗ in T aufgenommen. Wir betrachten einen beliebigen anderen Weg von
P zu v̄ ∗ . Der erste Knoten auf disem Weg, der nicht mehr in T liegt werde mit v 0
bezeichnet. Nach Wahl von v̄ ∗ ist λ(v 0 ) ≥ λ(v̄ ∗ ) und der Weg von v 0 nach v̄ ∗ hat
nichtnegative Länge. Daher ist der gefundene Weg über v ∗ nach v̄ ∗ ein kürzester Weg.
(Dieser braucht aber nicht eindeutig zu sein.)
Was ist der Vorteil des Verfahrens von Dantzig?
Man braucht nur n Schritte, da in jedem Schritt ein Knoten neu in T aufgenommen wird.
Dabei muß man pro Schritt maximal |R| Kanten prüfen, im allgemeinen deutlich weniger.
Daher ist dieses Verfahren in der Regel billiger als die Simplexmethode. Allerdings benötigt
man die Voraussetzung l(r) ≥ 0. Wir wollen den Aufwand hier nicht näher abschätzen,
sondern ein etwas verbessertes Verfahren betrachten.
3. Der Algorithmus von Dijkstra
Dieses Verfahren ist im wesentlichen eine verfeinerte Version des Verfahrens von Dantzig.
Gegeben sei wieder ein Graph G = (V, R, α, ω), und eine Funktion l, die jeder Kante r ∈ R
eine Länge l(r) ≥ 0 zuordnet. Außerdem seien P, Q aus V gegeben (P 6= Q). Gesucht ist
ein kürzester Weg von P nach Q.
Wir teilen die Knoten und Kanten aus G in je drei disjunkte Teilmengen wie folgt ein:
• A := { Knoten, für die der Minimalabstand zu P bekannt ist }
• B := { Knoten, die mit mindestens einem Knoten aus A durch eine Kante verbunden
sind }
Zu jedem v ∈ B ist also mindestens ein Weg P → v in der Form P → u ∪{(u, v)}
mit u ∈ A bekannt.
61
• C := { restliche Knoten }
• I := { Kanten, die Teile kürzester Wege von P zu v ∈ A sind }
• II: Für jedes v ∈ B gebe es genau eine Kante (u, v) ∈ II mit u ∈ A. Die Kante
(u, v) ∈ II liege dabei auf einem kürzesten der bislang bekannten Wege von P nach
v.
• III := { restliche Kanten }.
Mit λ(v) bezeichnen wir für v ∈ A ∪ B die Länge des kürzesten (bislang bekannten) Weges
von P nach v. Mit L bezeichnen wir den letzten Knoten, der zu A hinzugekommen ist. Mit
diesen Definitionen läßt sich das Verfahren wie folgt beschreiben:
1. Start: Setze A := {P }, B := ∅, C := V \{P },
I := ∅, II := ∅, III := R, L := P , λ(P ) = 0.
2. Setze Σ := {r | α(r) = L}
Für alle r ∈ Σ:
(a) Falls ω(r) ∈ B:
Falls λ(L) + l(r) < λ(ω(r)), ersetze die Kante s ∈ II mit ω(s) = ω(r) durch r
und setze λ(ω(r)) := λ(L) + l(r). (Man hat einen neuen, kürzeren Weg zu ω(r)
gefunden.)
(b) Falls ω(r) ∈ C, setze B := B ∪ {ω(r)} und λ(ω(r)) := λ(L) + l(r) sowie II :=
II ∪ {r}.
3. Falls B = ∅, Stop, Q ist von P aus nicht erreichbar.
sonst wähle u ∈ B, so daß λ(u) minimal ist.
Sei r die Kante aus II mit ω(r) = u.
Setze A := A ∪ {u},
B := B\{u},
L := u
I := I ∪ {r},
II := II\{r}.
4. Falls Q ∈ A Stop, ein kürzester Weg von P nach Q ist gefunden. Sonst gehe zu 2.
Man überzeugt sich leicht, daß aufgrund von l(r) ≥ 0 für alle r, die Definitionen der Mengen
A, B, C sowie I, II, III im Laufe des Verfahrens korrekt bleiben und das Verfahren einen
kürzesten Weg nach spätestens |R| Schritten (Additionen) findet.
4. Die Methode von Fulkerson
Diese Methode ist bei azyklischen Graphen G = (V, R, α, ω) anwendbar. Die Nichtnegativität von l(r) für r ∈ R wird nicht benötigt. Ein gerichteter Graph G heißt azyklisch, wenn
G keine gerichteten Kreise enthält. Das Verfahren läßt sich wie folgt beschreiben:
Vorbereitung:
Numeriere die Knoten aus V so, daß i < j gilt, falls es eine Kante (i, j) ∈ R gibt. Man
sieht leicht ein, falls es so eine Numerierung gibt, dann sind die “kleinen” Knoten von
den “großen” aus nicht erreichbar. (Alle Pfeile gehen ja von den “kleinen” Knoten zu den
“großen”.)
Die Vorbereitung kann so realisiert werden:
62
1. Es gibt einen Knoten u ∈ V , der keinen Vorgänger hat.
(Hätte jeder Knoten u ∈ V einen Vorgänger, so könnte man sich immer vom Vorgänger
zum Vorvorgänger “weiterhangeln”, und da |V | endlich ist, müßte man irgenwann
einen Knoten zwei mal besuchen. Das Wegstück zwischen den beiden Besuchen ist
dann aber ein gerichteter Zykel—im Widerspruch zur Annahme, daß G azyklisch ist.)
Man wähle einen Knoten u ohne Vorgänger, gebe ihm die kleinste noch freie Nummer
und streiche u und alle Kanten r mit α(r) = u aus G. (Der Graph bleibt dann natürlich
azyklisch.)
2. Falls V = ∅ Stop, sonst gehe zu 1.
Nach dieser Vorbereitung bestimmen wir nun einen kürzesten Weg von P = j nach
Q = k mit j < k. Für j ≤ i ≤ k bezeichnen wir mit λ(i) die Länge eines kürzesten Weges
von j nach i.
Verfahren von Fulkerson:
1. λ(j) := 0.
2. Für i = j + 1, . . . , k:
λ(i) :=
(
min {λ(u) + l((u, i)) | u ∈ {j, . . . , i − 1} und (u, i) ∈ R}
+∞ falls kein Weg von j nach i existiert
Induktiv läßt sich zeigen, daß dieses Verfahren korrekt ist:
Da G zyklenfrei ist, gibt es nur den leeren Weg von j nach j, und dessen Länge λ(j) = 0
ist korrekt.
Da i von Knoten u > i aus nicht erreichbar ist, und da Knoten u < j von j aus nicht
erreichbar sind, wird auch λ(i) in jedem Schritt korrekt bestimmt.
Man überzeugt sich auch, daß das Verfahren höchstens |R| Additionen benötigt.
Einige Anwendungen: Transhipmentprobleme haben eine Reihe wichtiger Anwendungen.
PERT: Program Evolution and Review Technique
CPM: Critical Path Method
Hierbei geht es um die Planung eines Projektes, welches aus n Jobs ( =
b Knoten )
besteht, die gewissen Anordnungen gehorchen müssen. So kann z.B. ein gewisser Job
i (Lackieren eines Tisches) erst dann beginnen wenn ein anderer Job k (Verleimen des
Tisches) beendet ist. Bezeichnet man den Anfangszeitpunkt des Gesamtprojektes mit
P und den Endpunkt mit Q, und trägt zwischen je zwei Jobs i und k eine gerichtete
Kante ein, falls i beendet sein muß, bevor k beginnen kann, so erhält man einen gerichteten azyklischen Graphen, dessen Kantenlängen den Längen der einzelnen Jobs
entsprechen. Bei Projekten, die etwas komplizierter sind als die Fertigung eines Tisches, ist es unter Umständen schwierig festzustellen, wie lange das Gesamtprojekt
dauern wird. Die Dauer des Projektes entspricht einem längsten Weg von P nach Q,
(oder einem kürzesten Weg, wenn man alle Kantenlängen mit −1 multipliziert). Dieses
ist ein kritischer Pfad, daher der Name CPM. Zur Lösung kann man das Verfahren
von Fulkerson anwenden (aber nicht das von Dijkstra!). (Die erste Anwendung der
CPM bei einem komplexen Projekt war beim Bau der Apollo-Raketen.)
63
3
Die Dekompositionsmethode von Dantzig & Wolfe
Die Darstellung aus diesem Kapitel lehnt sich an eine Ausarbeitung von C. Roos (1993) an.
Wir betrachten folgendes, speziell strukturiertes, lineares Programm:
Berechne
λ∗ (P ) := min{ cT x | Ax = a, Bx = b, x ≥ 0 }
(P )
Hierbei sei das Problem ohne die Bedingung Ax = a “leicht” zu lösen und A habe “nur
wenige” Zeilen, d.h. A ∈ IRm×n mit kleinem m.
Beispiele: Multiperiodische Planungsprobleme, stochastische Programmierungsprobleme.
In diesen Beispielen hat das Problem folgende Gestalt:
.........................................................................................................................................................................................................................
..
....
..........................................................................................................................................................................................................................
..
...
..
.....................................
...
..................................
...
....
...
...
..................................
..
..
...
...
................................
...
...
...
..................................
...
...
.................................
...
...
...
....
...
................................
...
...
...
...
.................................
...
...
...
...
................................
...
...
...
.................................
...
...
.................................
...
...
...
...
....
...
..
.................................
...
...
................................
...
.
..
.
.
..
...
..................................
...........................................................................................................................................................................................................................
}A










B









Die Nebenbedingungen x ≥ 0 und Bx = b zerfallen in kleinere Probleme, die (parallel)
unabhängig voneinander schnell gelöst werden können.
Ein anderes Beispiel wäre, daß B die Inzidenzmatrix eines Netzwerks ist, und das zugehörige
Problem z.B. mit dem Verfahren von Fulkerson oder Dijkstra gelöst werden kann.
Probleme dieser Struktur kommen in den Anwendungen häufig vor.
Voraussetzung: (P ) habe einen zulässigen Punkt und eine obere Schranke M für λ∗ (P )
sei bekannt.
Unter dieser Voraussetzung ist der Dualitätssatz anwendbar und es gilt
λ∗ (P ) = max{aT u + bT v
u,v
| AT u + B T v ≤ c}
= max{aT u + max{bT v
u
(D)
| B T v ≤ c − AT u}}
v
= max{aT u + min{(c − AT u)T x | Bx = b}}
u
x≥0
|
{z
}
Bemerkung 1
= max min{aT u + (c − AT u)T x | Bx = b}
u
x≥0
= max{ξ
u,ξ
mit
|
aT u + (c − AT u)T x ≥ ξ
|
{z
Bemerkung 2
B := {x ≥ 0
}
∀x
∈ B}}
| {z
(PB )
Bem. 3
| Bx = b}.
Bemerkung 1: Dieses Problem hat einen zulässigen Punkt weil (P ) einen zulässigen Punkt
hat, und hier die Bedingung Ax = a sogar fehlt; der Dualitätssatz ist also anwendbar.
Bemerkung 2: Auch das x ∈ B mit dem kleinsten aT u + (c − AT u)T x muß den Wert ≥ ξ
haben.
Bemerkung 3: Dies stellt ∞ viele Nebenbedingungen dar, sieht also zunächst gar nicht
64
so aus, als ob man durch diese Umformung irgendetwas “gewonnen” hätte. Beachte jedoch,
daß die Nebenbedingungen Ax = a und Bx = b jetzt “auseinandergerissen” sind.
Idee: Es genügen “einige wenige” Ungleichungen aus B (der Beweis hierfür erfolgt später).
Diese wenigen Ungleichungen entsprechen Extremalpunkten und Extremalstrahlen ( = unbeschränkte eindimensionale Randmannigfaltigkeiten).
Für B̂ ⊂ B, betrachte
max{ξ
u,ξ
|
aT u + (c − AT u)T x ≥ ξ
∀x ∈ B̂}.
Der nachfolgende Algorithmus versucht eine passende Menge B̂ zu konstruieren; die
Menge B̂ wächst in jedem Schritt um einen Extremalpunkt bzw. um einen Extremalstrahl
an. Der Algorithmus konvergiert in endlich vielen Schritten. Wir unterteilen B̂ in Extremalpunkte SB und Extremalstrahlen RB.
Algorithmus 3.1 (Dantzig – Wolfe – Algorithmus)
1. SB := ∅ (die Menge der Extremalpunkte), RB := ∅ (die Menge der Extremalstrahlen),
λ := −∞ (eine untere Schranke für λ∗ (P )), λ := M (eine obere Schranke für λ∗ (P )),
wähle ū ∈ IRm beliebig.
2. Löse
min{aT ū + (c − AT ū)T x|Bx = b} =: λ∗ (Pū ).
x≥0
(Dieses Problem ist—für fest gewähltes ū—nach Voraussetzung leicht lösbar.) Wenn
dieses Problem unzulässig ist, ist auch (P ) unzulässig. STOP.
Sei x∗ ∈ B eine Optimallösung oder x∗ + θz ∗ ein Strahl in B für θ ≥ 0, entlang dem
(c − AT ū)T x unbeschränkt fällt.
Im ersten Fall gehe zu 3.), im zweiten Fall gehe zu 4.).
3. Setze λ := max{λ, λ∗ (Pū )}.
Wenn λ = λ STOP (man kann eine Optimallösung berechnen, s.u.).
Sonst setze SB := SB ∪ {x∗ } und gehe zu 5.).
4. Setze RB := RB ∪ {z ∗ }.
5. Löse
2
( aT u + (c − AT u)T x ≥ ξ
max ξ (c − AT u)T z ≥ 0
u,ξ
∀x ∈ SB
∀z ∈ RB
)
=: λ∗ (PSB,RB )
(Dies ist leicht zu lösen, da u ∈ IRm mit kleinem m.)
Wenn der zulässige Bereich leer ist, dann STOP: Es gibt keine endliche Optimallösung
für (P ).
Wenn λ∗ (PSB,RB ) endlich ist mit Optimalwert u∗ , dann setze λ := min{λ, λ∗ (PSB,RB )}
Eigentlich wollen wir alle Punkte x∗ + θz ∗ , θ ≥ 0 zu B̂ hinzufügen, so daß für jedes θ ≥ 0 eine
Ungleichung aT u+(c−AT u)T (x∗ +θz ∗ ) ≥ ξ entstünde. Es reicht dabei offenbar aus, aT u+(c−AT u)T x∗ ≥ ξ
und (c − AT u)z ∗ ≥ 0 zu fordern. Die eigentliche Information liegt dabei in der ∞-Richtung z ∗ , wir nutzen
daher nur letztere.
2
65
und u := u∗ .
Sonst sei u∗ ein beliebiger Punkt, der für obiges Problem zulässig ist und AT u∗ + (c −
AT ū)T ≥ λ ∀x ∈ SB erfüllt.
Setze ū := u∗ und gehe zu Schritt 2.).
Satz 3.2 Der Algorithmus von Dantzig & Wolfe hält nach endlich vielen Schritten, sofern
(P ) einen zulässigen Punkt hat.
Beweis: Mit einer Iteration bezeichnen wir im folgenden den Durchlauf der Schritte 2.) bis
5.). Wenn der Algorithmus in Schritt 2.) nicht hält (mit der Meldung daß (P ) unzulässig
ist) und auch nicht in Schritt 3.) (mit λ = λ), dann ist
x∗ 6∈ SB
z ∗ 6∈ RB
falls λ∗ (Pū ) > −∞
.
sonst
Denn im ersten Fall ist
aT ū + (c − AT ū)T x∗ ≤ λ < λ ≤ aT ū + (c − AT ū)T x ∀x ∈ SB,
d.h. x∗ 6∈ SB, und im zweiten Fall ist (c − AT ū)T z ∗ < 0. Aus (c − AT ū)T z ≥ 0 ∀z ∈ RB
folgt z ∗ 6∈ RB. (Beachte dabei, daß ū in der vorherigen Iteration mit den verwendeten Eigenschaften gewählt wurde bzw. λ in Schritt 3.) angepaßt wurde, und in der 1. Iteration
die Aussage trivial richtig ist, da SB = RB = ∅.) Solange der Algorithmus nicht hält, wird
also SB oder RB in jeder Iteration um ein Element vergrössert. Falls die Probleme mit der
Simplexmethode gelöst werden, ist x∗ ein Extremalpunkt von B bzw. x∗ + θz ∗ ein Extremalstrahl (Übung.) Deren Anzahl ist aber endlich.
Bemerkung: Falls die Probleme in Schritt 2.) mit Innere-Punkte-Verfahren gelöst werden,
gilt im wesentlichen die gleiche Aussage. Der Satz ist natürlich auch für beliebige Aufteilungen der linearen Gleichungen in Ax = a und Bx = b richtig, das Verfahren ist aber nur
dann effektiv, wenn die Voraussetzungen (“m klein” und “Systeme mit Bx = b, x ≥ 0 leicht
lösbar”) zutreffen.
Konstruktion einer Optimallösung für (P )
Wenn der Algorithmus in Schritt 3.) hält, dann ist λ = λ = λ∗ (P ) und das in Schritt 5.)
gegebene Problem aus der vorigen Iteration kann auch wie folgt formuliert werden:
(
∗
λ (P ) = max ξ
u,ξ
ξ − (a − Ax)T u ≤ cT x ∀x ∈ SB
(Az)T u ≤ cT z ∀z ∈ RB
)
Um wiederum das hierzu duale Problem herzuleiten, macht man am besten eine Skizze
zu
ξ
T
der Form der Nebenbedingungen. Die Zielfunktion hat z.B. die Form (1, 0, . . . , 0)
.
u
Man erhält als duales Problem in den dualen Variablen wx und wz dann:
X
min
wx cT x +
x∈SB
wz cT z
z∈RB
X
s.t.
X
wx = 1
x∈SB
X
wx (Ax − a) +
x∈SB
X
wz Az = 0
z∈RB
wx ≥ 0,
66
wz ≥ 0
Nach dem Dualitätssatz ist der Minimalwert hierfür auch λ∗ (P ). Dieses Problem kann noch
wie folgt umformuliert werden:
cT
λ∗ (P ) = min
s.t.
X
wx x
x∈SBX
+
X
wz z
z∈RB
wx = 1
x∈SB
A
X
wx x +
x∈SB
Wir setzen nun
X
wx x +
x∈SB
X
wz z
!
=a
z∈RB
wx ≥ 0,
x̃ :=
!
X
wz ≥ 0
!
wz z ,
z∈RB
dann ist offenbar Ax̃ = a. Weiter ist B x̃ = b, da die erste Summe in der Definition von
x̃ eine Konvexkombination von Extremalpunkten von B ist, und die zweite Summe eine
nichtnegative Linearkombination von Extremalstrahlen von B ist, für die mit x ∈ B auch
stets x + λz ∈ B für λ ≥ 0 gilt. Also ist x̃ zulässig für (P ). Desweiteren ist x̃ optimal für
(P ), denn es ist cT x̃ = λ∗ (P ).
Aus der Optimallösung in Schritt 5.) ist zunächst nur der Vektor ū bekannt. Aus der
Komplementaritätsbedingung läßt sich damit aber festlegen, welche der wx , wz von Null
verschieden sind, und dann die Lösung x̃ berechnen.
Literatur
[1] G.B. Dantzig, “Lineare Programmierung und Erweiterungen”, Springer (1966).
67
Herunterladen