Vorlesung 12: Modellierung B

Grundlagen Operations Research

Modellierung B

OR in der Praxis

Von der Theorie zur Praxis

Echte OR-Projekte und wie sie die Bausteine dieses Kurses nutzen:

  • Brauerei: Losgrößen- und Kapazitätsplanung (→ V11).
  • Verkaufsgebiete: Sales Force Deployment (→ V10).
  • Distriktoptimierung: Zuordnung von Gebieten (→ V08).
  • Discrete Choice: Nachfrageprognose mit Nutzenfunktionen.
  • Crowd-Management: Ablaufplanung von Pilgerströmen (→ V06/V09).

Brauerei-Produktionsplanung

Feldschlösschen

Das Projekt

Entwickelt für die Schweizer Brauerei Feldschlösschen (Carlsberg-Konzern):

  • 41 Biermarken, 1,8 Mio. hl/Jahr, 42 % Marktanteil.
  • 13 Produktions- und 8 Lagerressourcen.
  • 220 Fertig- und 100 Halbfertigprodukte.
  • Jahresplanung auf Wochenebene.

Das Modell

Strategische und operative Fragen in einem Modell:

  • Losgrößen- und Kapazitätsplanung, wie die dynamische Losgrößenplanung (Vorlesung 11), nur mehrstufig und kapazitiert.
  • Binäre Rüstentscheidungen, kontinuierliche Mengen und Lagerbestände.
  • Ziel: Rüst-, Lager- und Kapazitätskosten minimieren.

Ein MIP mit Zehntausenden Variablen, gelöst mit HiGHS oder Gurobi.

Die Idee im Kleinen

Zwei Produkte, gemeinsame Kapazität; das V11-Modell wächst mit:

using JuMP, HiGHS
d = [40 50 60 40 50 60; 20 30 20 30 20 30]     # d[p, t]
f, h, cap = 100, 1, 120
P, T = 1:2, 1:6
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, Q[P, T] >= 0); @variable(modell, I[P, T] >= 0)
@variable(modell, X[P, T], Bin)
@objective(modell, Min, sum(f*X[p,t] + h*I[p,t] for p in P, t in T))
@constraint(modell, [p in P, t in T],
    (t == 1 ? 0 : I[p,t-1]) + Q[p,t] - I[p,t] == d[p,t])   # Lagerbilanz
@constraint(modell, [p in P, t in T], Q[p,t] <= sum(d[p,:]) * X[p,t])
@constraint(modell, [t in T], sum(Q[p,t] for p in P) <= cap)  # Kapazität!
optimize!(modell)
println("F* = ", round(Int, objective_value(modell)),
        " mit ", round(Int, sum(value.(X))), " Rüstvorgängen")
F* = 850 mit 6 Rüstvorgängen

Verkaufsgebietsplanung

Sales Force Deployment

Für die dänische Brauerei FAXE: Wie setzt man den Außendienst optimal ein?

Vier Entscheidungen in einem Modell:

  • Wie viele Außendienstmitarbeiter (ADM)?
  • Wo haben sie ihren Standort?
  • Welche Kunden bilden ihr Verkaufsgebiet?
  • Wie viel Verkaufszeit erhält jeder Kunde?

Ziel: Gewinnmaximierung, nicht Umsatz!

Die Umsatzreaktionsfunktion

Der Umsatz eines Kunden wächst mit der Verkaufszeit, aber konkav.

Frage: Warum lohnt der zehnte Besuch weniger als der erste?

Sättigung: Ab einem Punkt kostet mehr Verkaufszeit mehr, als der Zusatzumsatz einbringt.

Die Managementvorlage

Das Modell liefert dem Management drei Karten:

  • Gebiete und Gewinn: welcher ADM betreut welche Region.
  • Verkaufszeiten: wie viel Zeit jeder Kunde erhält.
  • Erwartete Umsätze: was jede Region einbringt.
WichtigErgebnis

Standorte, Gebiete und Zeiteinsatz kommen aus einer Optimierung, statt aus drei getrennten Bauchentscheidungen.

Distriktoptimierung

Polizeibezirke neu zuschneiden

Das Problem

  • Viele Bezirkspläne reichen Jahrzehnte zurück und wurden manuell entlang von Autobahnen und Grenzen gezogen.
  • Notdienste besitzen viele Daten, nutzen sie aber selten zur Verbesserung.

Frage: Wie schneidet man Bezirke so zu, dass die Reaktionszeit minimal und die Auslastung ausgeglichen ist?

Der OR-Ansatz

Ein Zuordnungsproblem: weise jede Gebietszelle einer Wache zu.

minzsdistzsXzssXzs=1z(jede Zelle einer Wache)zXzsn_s(Auslastung ausgleichen)Xzs{0,1} \begin{aligned} \min \; & \sum_{z}\sum_{s} \text{dist}_{zs}\, X_{zs} \\ & \sum_{s} X_{zs} = 1 && \forall z \quad (\text{jede Zelle einer Wache}) \\ & \sum_{z} X_{zs} \ge \underline{n} && \forall s \quad (\text{Auslastung ausgleichen}) \\ & X_{zs} \in \{0, 1\} \end{aligned}

Kontrolle mit Julia

Illustrativ: 6 Zellen, 2 Wachen, ausgeglichen zugeordnet:

using JuMP, HiGHS
dist = [2 8; 3 7; 1 9; 8 2; 7 3; 6 4]   # dist[z, s]: Zelle z zu Wache s
Z, S = 1:6, 1:2
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, X[Z, S], Bin)
@objective(modell, Min, sum(dist[z,s] * X[z,s] for z in Z, s in S))
@constraint(modell, [z in Z], sum(X[z,s] for s in S) == 1)   # jede Zelle zugeordnet
@constraint(modell, [s in S], sum(X[z,s] for z in Z) >= 3)   # Auslastung ausgleichen

optimize!(modell)
println("Zelle→Wache: ", [s for z in Z for s in S if value(X[z,s]) > 0.5],
        ", Distanz = ", round(Int, objective_value(modell)))
Zelle→Wache: [1, 1, 1, 2, 2, 2], Distanz = 15

Ergebnis der Fallstudien

Fallstudien in Deutschland und Belgien:

WichtigWirkung

Optimierte Polizeibezirke senkten die Reaktionszeit in der Simulation um bis zu 14,5 %.

Derselbe Ansatz lässt sich auf andere Rettungsdienste übertragen.

Discrete Choice

Welches Verkehrsmittel?

Nachfrage prognostizieren

Wie entscheiden sich Menschen zwischen Alternativen (Auto, Bus, Bahn)?

  • Revealed preferences: „Ich habe xx gewählt.”
  • Stated preferences: „Ich würde xx wählen.”
  • Daraus wird eine Nutzenfunktion geschätzt, und daraus die Nachfrage prognostiziert.

Was liefert die Analyse?

Aus der geschätzten Nutzenfunktion folgen direkt:

  • Nachfrageprognosen für neue Angebote.
  • Zahlungsbereitschaften der Kunden.
  • Die ökonomische Beurteilung von Infrastrukturmaßnahmen.
  • Die Ausgestaltung des Dienstleistungsangebots.

Fallstudie Dresdner Schülerverkehr: geschätzte Nutzenfunktionen zeigten, wie Schüler auf Takt und Preis des ÖPNV reagieren.

Fallstudie: BART

Prognose des Marktanteils des neuen Bay Area Rapid Transit (San Francisco):

Verkehrsmittel Tatsächlich [%] Prognose [%]
nur Pkw 59,90 55,84
Bus 10,78 12,51
Park-and-Ride 1,43 2,41
BART + Bus 0,95 1,05
BART + Pkw 5,23 5,29
Carpooling 21,71 22,89

BART-Marktanteil: Prognose 6,3 % vs. tatsächlich 6,2 %, eine sehr genaue Vorhersage.

Crowd-Management

Die Hadsch in Mekka

Das Ritual

Die Hadsch ist die große islamische Pilgerfahrt nach Mekka.

  • Zwischen 2 und 4 Millionen Menschen, mehrtägig, mehrere rituelle Stätten.
  • Fokus: das Ramy-al-Jamarat-Ritual (symbolische Steinigung), an vier Tagen wiederholt.
  • Die meisten Pilger wohnen in der Zeltstadt von Mina.

Das Risiko

  • Pilger haben Zeitpräferenzen, die sich um wenige Spitzenzeiten ballen.
  • Logistische Grenzen (Shuttle-Zeiten), extreme Wüstenhitze, enge Infrastruktur.
  • In Extremfällen eskalierte unkoordinierter Zugang zu Massenkatastrophen.

Crowd Disasters

Jahr Ort Tote
1990 Al-Ma’aisim 1 426
1994 Jamarat 270
1998 Jamarat 180
2001 Jamarat 35
2003 Jamarat 14
2005 Jamarat 5
2006 Jamarat 346
2015 Jamarat 769 – 2 411

Lange Wartezeiten und Engpässe machen die Pilgerfahrt gefährlich: ein Ablaufplanungsproblem.

Der OR-Beitrag

Anpassungen auf Basis von Operations Research:

  • Zeitplanung der Steinigungsrituale (Path Assignment & Timetabling).
  • Metronutzung und Pilgerstrom-Monitoring.
  • Mobile Apps, elektronische E-Gates (RFID), Online-Karten, Simulation.

Im Kern: Ströme über ein Netzwerk zeitlich so verteilen, dass Engpässe vermieden werden (die Werkzeuge aus V06 und V09).

Weitere Anwendungen

Dieselben Bausteine tragen viele weitere Projekte:

  • Standortplanung für Automobilhändler.
  • Tourenplanung: Getränkehandel, medizinische Labore, Bücherhallen.
  • Waren-Lager-Zuordnung in der Logistik.
  • Steuerung von Metroauslastungen.

Zusammenfassung

Operations Research wirkt

  • Brauerei: Losgrößen-MIP steuert eine Jahresproduktion.
  • Verkaufsgebiete: eine Optimierung statt drei Bauchentscheidungen.
  • Distrikte: Reaktionszeiten sinken um über 14 %.
  • Discrete Choice: Marktanteile aufs Zehntelprozent prognostiziert.
  • Crowd-Management: Netzwerkmodelle retten Leben.

Die Bausteine dieses Kurses (LP, MIP, Graphen, Netzpläne) sind genau die Werkzeuge dieser Projekte.

Literatur

Literaturverzeichnis

Domschke, Wolfgang, Andreas Drexl, Robert Klein, und Armin Scholl. 2015. Einführung in Operations Research. 9. Aufl. Springer Gabler. https://doi.org/10.1007/978-3-662-48216-2.
Vlćek, Tobias, Knut Haase, Matthes Koch, Lena Dolz, Anneke Weygandt, und Jan Pape. 2023. „Controlling Passenger Flows into Metro Systems to Mitigate Overcrowding during large-scale Events. Working Paper.