using JuMP, HiGHS
d = [140, 110, 190, 120, 200, 110, 250, 100, 220, 100, 180, 130]
f, h = 500, 1
modell = Model(HiGHS.Optimizer)
set_silent(modell)
# IHR CODE HIER
optimize!(modell)Übung 12: Algebraische Modellierung II
Grundlagen Operations Research
Video zur Übung
Aufgabe 1
Die dynamische Losgrößenplanung (aus Vorlesung 11) soll um die Berücksichtigung der nachfolgenden brauereispezifischen Restriktionen erweitert werden:
- Berücksichtigung eines Mehrproduktportfolios
- Berücksichtigung eines mehrstufigen Produktionsprozesses
- Berücksichtigung von Produktions- und Lagerkapazitäten
- Berücksichtigung von Kapazitätserweiterungen
- Berücksichtigung von Vorlaufzeiten
- Berücksichtigung von diskreten Losgrößen
- Berücksichtigung von Mindestlosgrößen, Sicherheitsbeständen und Haltbarkeiten
- Berücksichtigung von Tankressourcen
Drei Produktionsstufen (Basisbiere, Sortenbiere, Fertigbiere), drei Produktionsressourcen (Brauhaus, Filtration, Abfüllung) und drei Lagerressourcen (Lagertanks, Puffertanks, Warenlager), vgl. das Brauerei-Fallbeispiel in Vorlesung 12.
Als Ausgangspunkt dient das Grundmodell der dynamischen Losgrößenplanung:
Mengen: : Planungsperioden (Index ). Parameter: : Nachfrage in Periode ; : fixe Rüstkosten; : Lagerhaltungskostensatz; : hinreichend große Obergrenze der Losgröße (Big M, z. B. ; Vorlesung 11 nennt sie ). Variablen: , wenn in Periode gerüstet wird (0, sonst); : Lagerbestand am Ende der Periode (Anfangsbestand ); : Produktionsmenge in Periode .
Formulieren Sie für jede der acht Erweiterungen die notwendige Notation und die zusätzlichen bzw. angepassten Nebenbedingungen.
Ihre Lösung in Julia: Grundmodell
Implementieren Sie zunächst das Grundmodell mit den Daten aus Vorlesung 11 und nennen Sie Ihr Modell modell:
# Führen Sie diese Zelle nach Ihrer Lösung aus:
@assert isapprox(objective_value(modell), 3670.0; atol = 1e-3) "Noch nicht korrekt, Lagerbilanz: I[t-1] + Q[t] - I[t] = d[t] mit I0 = 0."
println("Grundmodell korrekt: F* = ", objective_value(modell))Ihre Lösung in Julia: Mehrprodukt und Kapazität
Erweitern Sie Ihr Modell nun um die Erweiterungen 1 und 3: zwei Produkte auf einer gemeinsamen Ressource mit Produktionskapazität 120 je Periode (Daten aus Vorlesung 12):
d = [40 50 60 40 50 60;
20 30 20 30 20 30]
f, h, kap = 100, 1, 120
modell = Model(HiGHS.Optimizer)
set_silent(modell)
# IHR CODE HIER
optimize!(modell)@assert isapprox(objective_value(modell), 850.0; atol = 1e-3) "Noch nicht korrekt, gilt die Kapazität je Periode über BEIDE Produkte?"
println("Kapazitiertes Mehrproduktmodell korrekt: F* = ", objective_value(modell))