Transportplanung

Kapitel 7 · Supply Chain Management & Distribution

Prof. Dr. Thomas Kirschstein

Strategische Gestaltung von Supply Chains - Transportplanung

Strategische Gestaltung von Supply Chains

  • Multikriterielle Standortplanung
  • Kontinuierliche Standortplanung
  • Diskrete Standortplanung
  • Transportplanung

Operative Distributionsplanung

Einordnung

Planungsaufgabe Leitfrage Horizont Modell
Standortplanung Wo produzieren/lagern wir? strategisch (Jahre) WLP (MILP)
Transportplanung Welche Quelle beliefert welche Senke mit welcher Menge? taktisch/operativ (Wochen, Tage) Transportproblem (LP)
Kürzeste Wege Welcher Weg im Straßennetz ist der kürzeste? operativ (Stammdaten, täglich) Kürzeste-Wege-Problem
Tourenplanung In welcher Reihenfolge fährt ein Fahrzeug seine Kunden an? operativ (täglich) TSP / VRP

Roter Faden

Die Standortfrage für SushiFresh ist beantwortet: Von Raunheim und Wiesbaden-Erbenheim werden die sechs Filialen beliefert. Das WLP hat Standorte gewählt und Filialen zugeordnet. Was passiert, wenn die Standorte feststehen, aber Kapazitäten knapp werden?

Lernziele

Nach dieser Einheit können Sie …

  • das klassische Transportproblem als lineares Optimierungsmodell formulieren,
  • balancierte und unbalancierte Transportprobleme unterscheiden und durch Dummy-Knoten ausgleichen,
  • Startlösungen mit der Nordwestecken-Regel und der Vogel’schen Approximationsmethode (VAM) berechnen,
  • die Lösungsqualität heuristischer Verfahren im Vergleich zur LP-Optimallösung beurteilen.

Literatur zur Vertiefung

Fallstudie – SushiFresh GmbH

Das Weihnachtsgeschäft

Ausgangslage

Im Normalbetrieb beliefern Raunheim und Wiesbaden-Erbenheim alle sechs Filialen. Die Planung für die Adventszeit steht an: Dann steigt die Nachfrage nach Sushi-Boxen um rund 40 %. Raunheim und Wiesbaden-Erbenheim können im Schichtbetrieb höchstens 850 Boxen/Tag produzieren (Raunheim: 450 Boxen/Tag, Wiesbaden-Erbenheim: 400 Boxen/Tag).

Idee der Geschäftsführung

Für vier Wochen wird daher in Neu-Isenburg eine temporäre Cateringküche angemietet, die eine Kapazität von 333 Boxen/Tag hat. Damit deckt die Gesamtkapazität die Adventsnachfrage genau.

Entscheidungsproblem

Die Standorte stehen fest, keine Standortentscheidung mehr. Offen ist nur: Welche Küche beliefert welche Filiale mit wie vielen Boxen, sodass die täglichen Transportkosten minimal sind?

Fallstudie – SushiFresh GmbH

Daten

Küchen und Kapazitäten \(s_i\) (Boxen/Tag)

ID Küche Kapazität s_i
S3 Raunheim 450
S1 Wiesbaden-Erbenheim 400
S5 Neu-Isenburg 333

Filialen und Nachfrage \(a_j\) im Dezember (Boxen/Tag)

ID Filiale Normal μ_j Dezember a_j
C1 Wiesbaden 120 168
C2 Mainz 150 210
C3 Frankfurt 280 392
C4 Rüsselsheim 90 126
C5 Darmstadt 110 154
C6 Offenbach 95 133

Transportkosten \(c_{ij}\) (€/Box, aus Einheit Standortplanung II)

Küche C1 C2 C3 C4 C5 C6
S3 0.482 0.272 0.170 0.546 0.448 0.126
S1 0.123 0.415 0.475 0.552 0.860 0.182
S5 0.502 0.875 0.906 0.607 0.320 0.114

Bilanz

Gesamtkapazität \(\sum_i s_i =\) 1183 Boxen, Gesamtnachfrage \(\sum_j a_j =\) 1183 Boxen → Angebot und Nachfrage sind ausgeglichen.

Transportproblem

Problembeschreibung

Problemstellung

Gegeben sind \(m\) Quellen (z. B. Werke, Küchen, Lager) mit Angebotsmengen und \(n\) Senken (z. B. Kunden, Filialen) mit Nachfragemengen. Für jede Verbindung fallen Transportkosten je Einheit an. Gesucht ist ein kostenminimaler Transportplan, der die Nachfrage deckt und die Angebotsmengen nicht überschreitet.

Notation

  • Quellen \(i \in I\) mit Angebot \(s_i\)
  • Senken \(j \in J\) mit Nachfrage \(a_j\)
  • Transportkosten je Einheit von \(i\) nach \(j\): \(c_{ij}\)
  • Entscheidungsvariable: Transportmenge \(x_{ij} \geq 0\)

Unterschied zum WLP (Einheit Standortplanung II)

  • keine Standortentscheidung \(y_i\) – alle Quellen sind „geöffnet“
  • dafür Kapazitäten \(s_i\) der Quellen
  • keine Fixkosten, nur variable Transportkosten

Transportproblem

Mathematisches Modell

Lineares Optimierungsmodell (Hitchcock 1941)

Minimiere die gesamten Transportkosten

\[\min \rightarrow \sum_{i \in I} \sum_{j \in J} c_{ij} \cdot x_{ij}\]

Nebenbedingungen \[ \begin{align} \sum_{j \in J} x_{ij} &\leq s_i & \forall i \in I &\quad\rightarrow \text{Kapazität nicht überschreiten} \\ \sum_{i \in I} x_{ij} &= a_j & \forall j \in J &\quad\rightarrow \text{Nachfrage decken} \\ x_{ij} &\geq 0 & \forall i, j &\quad\rightarrow \text{keine negativen Mengen} \end{align} \]

Eigenschaften

  • Balanciert, wenn \(\sum_i s_i = \sum_j a_j\) → alle Kapazitätsrestriktionen gelten mit „\(=\)“
  • reines LP (keine Binärvariablen) → effizient exakt lösbar
  • ganzzahlige \(s_i, a_j\) → ganzzahlige Optimallösung (Nebenbedingungsmatrix total unimodular)
  • eine Basislösung hat höchstens \(m + n - 1\) positive Transportmengen

Für SushiFresh: \(m + n - 1 = 3 + 6 - 1 = 8\) genutzte Verbindungen von 18 möglichen.

Transportproblem

Lösungsverfahren im Überblick

Eröffnungsverfahren

Konstruieren eine zulässige Startlösung mit höchstens \(m+n-1\) Transporten:

  • Nordwestecken-Regel – ignoriert die Kosten
  • Matrixminimum-Methode – beliefert stets die insgesamt günstigste freie Zelle
  • Vogel’sche Approximationsmethode (VAM) – berücksichtigt Opportunitätskosten

Verbesserungs- und exakte Verfahren

  • Stepping-Stone- bzw. MODI-Methode: verbessern eine Startlösung schrittweise bis zum Optimum (Tableau-Varianten des Simplex-Verfahrens)
  • LP-Solver (z. B. glpk über ompr): lösen das Modell direkt exakt

Warum Eröffnungsverfahren heute noch?

Sie sind per Hand nachvollziehbar, liefern in Sekundenbruchteilen gute Lösungen und dienen als Startlösung für Verbesserungsverfahren. Die Logik von VAM – „Wo wäre ein Fehler am teuersten?“ – ist zudem ein nützliches Denkmuster für Disponenten.

Nordwestecken-Regel

Kosten werden ignoriert

Algorithmus

  1. Starte in der linken oberen Zelle (Zeile 1, Spalte 1).
  2. Transportiere \(x_{ij} = \min(\text{Restangebot}_i, \text{Restnachfrage}_j)\).
  3. Ist das Angebot von \(i\) erschöpft → eine Zeile nach unten, sonst eine Spalte nach rechts.
  4. Wiederhole, bis alle Nachfrage gedeckt ist.

Schwäche

Die Reihenfolge der Zeilen/Spalten bestimmt die Lösung, nicht die Kosten.

Nordwestecken-Lösung für SushiFresh (Boxen/Tag)

Küche C1 C2 C3 C4 C5 C6
S3 168 210 72 – – –
S1 – – 320 80 – –
S5 – – – 46 154 133

Transportkosten: 438,80 €/Tag

Beispiel: Die Filiale Wiesbaden (C1) wird komplett aus Raunheim beliefert (0,482 €/Box), obwohl die Küche Wiesbaden-Erbenheim mit 0,123 €/Box fast viermal günstiger wäre.

Vogel’sche Approximationsmethode

Idee: Opportunitätskosten

Idee: Beliefere zuerst dort, wo eine falsche Entscheidung am teuersten wäre. Maß dafür ist die Strafkosten-Differenz (penalty) \(\Delta\) einer Zeile oder Spalte: die Differenz zwischen der zweitgünstigsten und der günstigsten noch verfügbaren Zelle.

Beispiel: Spalte C1 (Filiale Wiesbaden)

Küche c_i,C1 (€/Box)
S1 0.123
S3 0.482
S5 0.502

\(\Delta_{C1} = 0.482 - 0.123 = 0.358\) €/Box

Interpretation

Kann Wiesbaden nicht aus der günstigsten Küche (S1) beliefert werden, kostet jede Box mindestens 0,358 € mehr.

Bei 168 Boxen/Tag sind das bis zu 60,18 € Opportunitätskosten pro Tag.

→ Zeilen/Spalten mit großem \(\Delta\) werden zuerst bedient.

Vogel’sche Approximationsmethode

Algorithmus

Initialisierung: Alle Zeilen und Spalten sind aktiv; Restangebot \(s_i\), Restnachfrage \(a_j\).

Wiederhole, solange aktive Zeilen und Spalten existieren:

  1. Berechne für jede aktive Zeile \(i\) und jede aktive Spalte \(j\) die Strafkosten-Differenz: \[\Delta = c_{(2)} - c_{(1)}\] (zweitkleinste minus kleinste Kosten unter den aktiven Zellen)

  2. Wähle die Zeile oder Spalte mit dem größten \(\Delta\).

  3. Wähle darin die günstigste aktive Zelle \((i^*, j^*)\).

  4. Transportiere \(x_{i^*j^*} = \min(s_{i^*}, a_{j^*})\) und aktualisiere Restangebot und Restnachfrage.

  5. Streiche die erschöpfte Zeile bzw. Spalte.

Hinweise

  • Bei Gleichstand von \(\Delta\): beliebige Wahl (z. B. die Zeile/Spalte mit der günstigeren Zelle)
  • Bleibt nur eine Zelle in einer Zeile/Spalte, ist \(\Delta = 0\) – die Zuordnung ist dann ohnehin erzwungen
  • Nach höchstens \(m + n - 1\) Iterationen ist eine zulässige Lösung gefunden

Aber

VAM ist eine Heuristik: gute, aber nicht garantiert optimale Lösungen.

Vogel’sche Approximationsmethode

Fallbeispiel – Iteration 1

C1 C2 C3 C4 C5 C6 si (Rest) Δ Zeile
S3 0.482 0.272 0.170 0.546 0.448 0.126 450 0.044
S1 0.123 → 168 0.415 0.475 0.552 0.860 0.182 400 0.059
S5 0.502 0.875 0.906 0.607 0.320 0.114 333 0.206
aj (Rest) 168 210 392 126 154 133
Δ Spalte 0.358 0.143 0.304 0.005 0.127 0.012

Zeilen: z. B. Raunheim (S3): günstigste Zellen C6 (0.126) und C3 (0.170) → \(\Delta_{S3} = 0.044\)

Spalten: z. B. Wiesbaden (C1): \(\Delta_{C1} = 0.358\) → größtes \(\Delta\) im gesamten Tableau

Entscheidung

Günstigste Zelle in Spalte C1: S1 → C1. Menge \(\min(400, 168) = 168\) Boxen. Nachfrage von C1 ist gedeckt → Spalte C1 streichen.

Vogel’sche Approximationsmethode

Fallbeispiel – Iteration 2

C1 C2 C3 C4 C5 C6 si (Rest) Δ Zeile
S3 0.482 0.272 0.170 → 392 0.546 0.448 0.126 450 0.044
S1 0.123 [168] 0.415 0.475 0.552 0.860 0.182 232 0.233
S5 0.502 0.875 0.906 0.607 0.320 0.114 333 0.206
aj (Rest) 0 210 392 126 154 133
Δ Spalte – 0.143 0.304 0.005 0.127 0.012

Durch das Streichen von C1 ändert sich die Strafkosten-Differenz von S1: Die günstigste Zelle (C1) fällt weg, neu ist \(\Delta_{S1} = 0.233\).

Die Penalties müssen daher in jeder Iteration neu berechnet werden.

Entscheidung

Größtes \(\Delta\): Spalte C3 (Frankfurt, \(\Delta = 0.304\)). Günstigste Zelle: S3 → C3, Menge \(\min(450, 392) = 392\). Spalte C3 streichen.

Vogel’sche Approximationsmethode

Fallbeispiel – Iteration 3

C1 C2 C3 C4 C5 C6 si (Rest) Δ Zeile
S3 0.482 0.272 0.170 [392] 0.546 0.448 0.126 58 0.146
S1 0.123 [168] 0.415 0.475 0.552 0.860 0.182 → 133 232 0.233
S5 0.502 0.875 0.906 0.607 0.320 0.114 333 0.206
aj (Rest) 0 210 0 126 154 133
Δ Spalte – 0.143 – 0.005 0.127 0.012

Entscheidung

Erstmals ist eine Zeile ausschlaggebend: Wiesbaden-Erbenheim (S1) hat mit \(\Delta = 0.233\) das größte Penalty. Die günstigste verbleibende Zelle ist S1 → C6 (Offenbach). Menge \(\min(232, 133) = 133\) → Nachfrage von Offenbach gedeckt, Spalte C6 streichen. S1 bleibt mit Restangebot 99 Boxen aktiv.

Vogel’sche Approximationsmethode

Fallbeispiel – alle Iterationen

It. max. Δ in Δ Zelle Menge Kosten (€) gestrichen
1 Spalte C1 0.358 S1 → C1 168 20,74 C1
2 Spalte C3 0.304 S3 → C3 392 66,78 C3
3 Zeile S1 0.233 S1 → C6 133 24,23 C6
4 Zeile S5 0.287 S5 → C5 154 49,34 C5
5 Zeile S3 0.274 S3 → C2 58 15,78 S3
6 Spalte C2 0.460 S1 → C2 99 41,06 S1
7 Zeile S5 0.268 S5 → C4 126 76,53 C4
8 Zeile S5 0.000 S5 → C2 53 46,38 S5, C2

Beobachtungen

  • Genau \(m + n - 1 = 8\) Iterationen bzw. Transporte
  • Die teuren Fehlentscheidungen (Wiesbaden, Frankfurt) werden zuerst vermieden
  • In der letzten Iteration ist \(\Delta = 0\): Die Zuordnung ist durch die Restmengen erzwungen

Vogel’sche Approximationsmethode

Fallbeispiel – Ergebnis

VAM-Transportplan (Boxen/Tag)

Küche C1 C2 C3 C4 C5 C6
S3 – 58 392 – – –
S1 168 99 – – – 133
S5 – 53 – 126 154 –

Transportkosten: 340,86 €/Tag gegenüber 438,80 €/Tag mit der Nordwestecken-Regel.

Zulässigkeit: Zeilensummen 450 / 400 / 333 = Kapazitäten, Spaltensummen = Nachfrage.

Transportproblem

Implementierung mit R

# Heuristik (scm_functions.R)
vam <- vogels_approximation(tp_cost,
                            supply = tp_supply,
                            demand = tp_demand)

# Exakte Lösung als LP mit ompr
library(ompr); library(ompr.roi)
library(ROI.plugin.glpk)
m <- nrow(tp_cost); n <- ncol(tp_cost)

tp_model <- MIPModel() |>
  add_variable(x[i, j], i = 1:m, j = 1:n,
               type = "continuous", lb = 0) |>
  set_objective(
    sum_expr(tp_cost[i, j] * x[i, j],
             i = 1:m, j = 1:n), "min") |>
  # Kapazitäten
  add_constraint(
    sum_expr(x[i, j], j = 1:n) <= tp_supply[i],
    i = 1:m) |>
  # Nachfrage
  add_constraint(
    sum_expr(x[i, j], i = 1:m) == tp_demand[j],
    j = 1:n)

tp_opt <- solve_model(tp_model, with_ROI(solver = "glpk"))
Verfahren Kosten (€/Tag) Abw. vom Optimum
Nordwestecke 438,80 44,9 %
VAM 340,86 12,5 %
LP-Optimum 302,92 0,0 %

Optimaler Transportplan (Boxen/Tag)

Küche C1 C2 C3 C4 C5 C6
S3 – 58 392 – – –
S1 168 152 – 80 – –
S5 – – – 46 154 133

Transportproblem

Vergleich der Lösungen

Ergebnis

  • VAM liegt 12,5 % über dem Optimum, die Nordwestecke 45 %.
  • Der Unterschied VAM ↔︎ Optimum liegt allein in der Aufteilung von Mainz (C2), Rüsselsheim (C4) und Offenbach (C6) zwischen Wiesbaden-Erbenheim und Neu-Isenburg.

Hochgerechnet

Über vier Adventswochen (24 Liefertage) spart der optimale Plan gegenüber der Nordwestecke rund 3.261 €. Gegenüber VAM sind es nur 911 €.

Unbalancierte Transportprobleme

Dummy-Quellen und Dummy-Senken

Überkapazität \(\sum_i s_i > \sum_j a_j\)

  • Einführung einer Dummy-Senke mit Nachfrage \(\sum_i s_i - \sum_j a_j\) und Kosten \(c_{i,\text{Dummy}} = 0\)
  • Lieferungen an die Dummy-Senke = ungenutzte Kapazität

Unterkapazität \(\sum_i s_i < \sum_j a_j\)

  • Einführung einer Dummy-Quelle mit Angebot \(\sum_j a_j - \sum_i s_i\)
  • Kosten = Fehlmengenkosten (z. B. entgangener Deckungsbeitrag, vgl. Newsvendor)
  • Lieferungen der Dummy-Quelle = nicht belieferte Nachfrage

Variante: Neu-Isenburg bietet 350 statt 333 Boxen/Tag → 17 Boxen Überkapazität

Küche C1 C2 C3 C4 C5 C6 Dummy
S3 – 58 392 – – – –
S1 168 82 – – – 133 17
S5 – 70 – 126 154 – –

vogels_approximation() ergänzt die Dummy-Spalte automatisch. Kosten: 348,68 €/Tag.

Dummy-Kosten von 0 verändern die Strafkosten-Differenzen. VAM kann daher bei unbalancierten Problemen deutlich schlechter abschneiden. Das LP liefert immer das Optimum.

Transportproblem

Grenzen des Modells und Ausblick

Annahme 1: Kosten \(c_{ij}\) sind gegeben

Bisher wurden die Transportkosten je Box vorgegeben. In der Praxis müssen sie aus Entfernungen im Straßennetz abgeleitet werden.

→ Kürzeste-Wege-Probleme (Einheit Kürzeste Wege)

Annahme 2: Kosten sind linear in der Menge

Das Modell unterstellt Direktverkehre (Pendelfahrten) mit Kosten proportional zur Menge. Tatsächlich fährt ein Kühlfahrzeug mehrere Filialen nacheinander an, und die Kosten hängen von der Fahrstrecke ab.

→ Tourenplanung / TSP (Einheit Tourenplanung)

Weitere Erweiterungen

Umschlagpunkte (Transshipment), mehrere Produkte, Kapazitäten auf Verbindungen, Mindestmengen je Fahrt (dann MILP).

Kernaussagen

Das Wichtigste in Kürze

  • Das Transportproblem verteilt Angebotsmengen kostenminimal auf Nachfragemengen. Es ist ein LP mit ganzzahligen Optimallösungen.
  • Unbalancierte Probleme werden über Dummy-Quellen bzw. -Senken ausgeglichen.
  • Die Nordwestecken-Regel ist einfach, ignoriert aber die Kosten.
  • Die Vogel’sche Approximationsmethode priorisiert Zeilen/Spalten mit hohen Opportunitätskosten und liefert meist Lösungen nahe am Optimum (SushiFresh: +12,5 %).
  • Mit ompr lässt sich das Transportproblem in wenigen Zeilen exakt lösen.

Übung

Übungsaufgaben zu dieser Einheit

Aufgaben zur Klausurvorbereitung (Teil 1) und eine vertiefende Fallstudie (Teil 2) finden Sie in Fallstudie 3: Diskrete Standortplanung und Transportplanung.

Domschke, Wolfgang. 2007. Logistik: Transport. Grundlagen, Lineare Transport- Und Umladeprobleme. 5th ed. Oldenbourg.
Günther, Hans-Otto, and Horst Tempelmeier. 2012. Produktion Und Logistik. 9th ed. Springer-Lehrbuch. Springer.
Hitchcock, Frank L. 1941. “The Distribution of a Product from Several Sources to Numerous Localities.” Journal of Mathematics and Physics 20 (1–4): 224–30.
Reinfeld, Nyles V., and William R. Vogel. 1958. Mathematical Programming. Prentice-Hall.