Grundlagen Operations Research
Gesucht ist ein gesamtkostenminimales Streckennetz, das Orte direkt oder indirekt verbindet.
Minimaler spannender Baum
In einem zusammenhängenden, bewerteten, ungerichteten Graphen ist ein minimaler spannender Baum, wenn kein anderer spannender Baum eine geringere Gesamtbewertung besitzt.
Idee
Kanten aufsteigend nach Bewertung durchgehen und jede Kante aufnehmen, die keinen Kreis erzeugt, bis Kanten gewählt sind.
Sechs Städte, zehn mögliche Verbindungen mit Baukosten.
Frage: Welche fünf Kanten würden Sie wählen?
Günstigste Kante zuerst: mit .
mit : kein Kreis, aufnehmen.
mit : kein Kreis, aufnehmen.
mit : aufnehmen. Danach () und (): beide würden einen Kreis schließen, also überspringen!
mit , die fünfte Kante: , fertig.
Ergebnis
Kanten mit Gesamtbewertung
Ein 1-Baum ist zusammenhängend mit genau einem Kreis.
Der 1-Baum liefert eine untere Schranke für Rundreiseprobleme (Travelling Salesman).
Für :
Ein Kreis: . Gesamt: .
Ein Unternehmen produziert in Hannover und Regensburg und beliefert Stuttgart, Wolfsburg und Dresden.
| von / nach | Stuttgart | Wolfsburg | Dresden | Angebot |
|---|---|---|---|---|
| Hannover | 150 | 30 | 110 | 15 |
| Regensburg | 80 | 140 | 100 | 15 |
| Nachfrage | 13 | 11 | 6 | 30 |
Summe Angebot Summe Nachfrage .
Anbieter H, R (Angebot ) links, Nachfrager S, W, D (Bedarf ) rechts.
Jeder Pfeil trägt die Transportkosten pro Ladung.
: Transportmenge von Standort zu Abnehmer .
Die Angebots- und Nachfragegleichungen sind nicht unabhängig:
Eine Gleichung darf entfallen. Bei Restriktionen bleiben unabhängige. Die Dualvariablen sind deshalb nur bis auf eine Normierung bestimmt (gleich: ).
Ausgleich
Ist , führt man einen fiktiven Nachfrager ein mit
So wird jedes Transportproblem auf den ausgeglichenen Fall zurückgeführt.
Heuristik für eine gute Startlösung:
Idee
Betrachte je Zeile und Spalte die Strafkosten : die Differenz aus günstigster und zweitgünstigster Verbindung. Zuerst wird dort belegt, wo am größten ist (dort wäre Ausweichen am teuersten). Bei Gleichstand entscheidet der kleinere Index (zuerst Zeilen, dann Spalten).
| von / nach | S | W | D | ||
|---|---|---|---|---|---|
| Hannover | 150 | 30 | 110 | 15 | 80 |
| Regensburg | 80 | 140 | 100 | 15 | 20 |
| 13 | 11 | 6 | |||
| 70 | 110 | 10 |
(Spalte W) .
Startlösung
Spezialisiertes LP-Verfahren auf einer zulässigen Startlösung. Die reduzierten Kosten einer Transportvariablen:
Für Basisvariablen gilt stets , also . Daraus bestimmt man die Dualvariablen .
Aus den vier Basisvariablen und :
Reduzierte Kosten der Nichtbasisvariablen:
Grafisch ist der Umweg über den Kreis : .
Alle die Startlösung ist bereits optimal. Wäre ein , würde man entlang des Kreises in die Basis bringen, wie im nächsten Beispiel.
Drei Standorte, vier Zentren. Das Angebot übersteigt die Nachfrage:
Ausgleich durch einen fiktiven Nachfrager mit und Kosten :
| 1 | 2 | 3 | 4 | 5 | ||
|---|---|---|---|---|---|---|
| 1 | 110 | 150 | 160 | 130 | 0 | 50 |
| 2 | 130 | 140 | 180 | 120 | 0 | 60 |
| 3 | 140 | 100 | 110 | 160 | 0 | 50 |
| 30 | 40 | 20 | 50 | 20 |
Der Distributionsleiter plant bisher so (Basiszellen mit Mengen, Stück):
| 1 | 2 | 3 | 4 | 5 | ||
|---|---|---|---|---|---|---|
| 1 | 30 | – | 10 | – | 10 | 50 |
| 2 | – | – | – | 50 | 10 | 60 |
| 3 | – | 40 | 10 | – | – | 50 |
| 30 | 40 | 20 | 50 | 20 |
Kosten dieses Plans: .
Frage: Geht es günstiger?
Aus den sieben Basiszellen (, Normierung ) folgen und .
Eine Nichtbasisvariable hat negative reduzierte Kosten:
in die Basis aufnehmen, entlang eines Umverteilungskreises durch die Basiszellen.
| 1 | 2 | 3 | 4 | 5 | ||
|---|---|---|---|---|---|---|
| 1 | 30 | – | 10 −Δ | – | 10 +Δ | 50 |
| 2 | – | +Δ | – | 50 | 10 −Δ | 60 |
| 3 | – | 40 −Δ | 10 +Δ | – | – | 50 |
| 30 | 40 | 20 | 50 | 20 |
Jede Zeilen- und Spaltensumme bleibt erhalten. Das größtmögliche bestimmen die −Δ-Zellen: .
Ersparnis: .
Nach der Umverteilung sind alle reduzierten Kosten :
| Zelle | |||||||
|---|---|---|---|---|---|---|---|
| Menge | 30 | 10 | 50 | 30 | 20 | 20 | 0 |
Zwei -Zellen wurden gleichzeitig null, nur eine verlässt die Basis: bleibt als degenerierte Basisvariable (primale Degeneration, Vorlesung 5!).
Optimum
bleibt beim fiktiven Nachfrager (nicht ausgeliefert),
using JuMP, HiGHS
a = [15, 15] # Angebot: Hannover, Regensburg
b = [13, 11, 6] # Nachfrage: Stuttgart, Wolfsburg, Dresden
c = [150 30 110; 80 140 100] # Transportkosten c[i,j]
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, X[1:2, 1:3] >= 0)
@objective(modell, Min, sum(c[i,j] * X[i,j] for i in 1:2, j in 1:3))
@constraint(modell, [i in 1:2], sum(X[i,j] for j in 1:3) == a[i]) # Angebot
@constraint(modell, [j in 1:3], sum(X[i,j] for i in 1:2) == b[j]) # Nachfrage
optimize!(modell)
println("F* = ", objective_value(modell))F* = 2010.0
Angebot als (Überschuss bleibt liegen), Nachfrage als :
a = [50, 60, 50]; b = [30, 40, 20, 50]
c = [110 150 160 130; 130 140 180 120; 140 100 110 160]
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, X[1:3, 1:4] >= 0)
@objective(modell, Min, sum(c[i,j]*X[i,j] for i in 1:3, j in 1:4))
@constraint(modell, [i in 1:3], sum(X[i,j] for j in 1:4) <= a[i]) # Angebot
@constraint(modell, [j in 1:4], sum(X[i,j] for i in 1:3) == b[j]) # Nachfrage
optimize!(modell)
println("F* = ", round(Int, objective_value(modell)))F* = 15900
Vorlesung 07: Transportproblem | Zur Webseite