using JuMP, HiGHS
modell = Model(HiGHS.Optimizer)
set_silent(modell)
# IHR CODE HIER
optimize!(modell)Übung 04: Zweiphasenmethode und Dualität
Grundlagen Operations Research
Video zur Übung
Aufgabe 1
Gegeben sei folgendes primales Problem:
- Wie viele Schlupfvariablen und künstliche Variablen benötigen Sie bei Anwendung der Zweiphasenmethode?
- Lösen Sie das Problem mit der Zweiphasenmethode.
- Dualisieren Sie die Problemstellung.
- Lösen Sie das duale Problem mit einem geeigneten Simplexverfahren.
- Geben Sie die optimalen Werte von , , und (optimale Lösung des primalen Problems) an.
- Überprüfen Sie Ihre Lösungen mit Julia.
Ihre Lösung in Julia: primales Problem
Modellieren Sie das primale Problem und nennen Sie Ihr Modell modell:
# Führen Sie diese Zelle nach Ihrer Lösung aus:
@assert isapprox(objective_value(modell), 40.0; atol = 1e-4) "Noch nicht korrekt. Prüfen Sie die vier Nebenbedingungen."
println("Primales Problem korrekt: F* = ", objective_value(modell))Das primale Problem hat mehrere optimale Ecklösungen (wird in Vorlesung 5 vertieft): Der Solver kann Ihnen andere Werte für und liefern als Ihre Handrechnung. Beide sind korrekt, solange der Zielfunktionswert der Selbstkontrolle standhält.
Ihre Lösung in Julia: duales Problem
Modellieren Sie nun das duale Problem mit den Dualvariablen und nennen Sie das Modell wieder modell. Lesen Sie anschließend die primalen Werte aus den Schattenpreisen der dualen Nebenbedingungen ab (shadow_price):
modell = Model(HiGHS.Optimizer)
set_silent(modell)
# IHR CODE HIER
optimize!(modell)@assert isapprox(objective_value(modell), 40.0; atol = 1e-4) "Noch nicht korrekt. Maximierung? Drei Nebenbedingungen (eine je primaler Variable)?"
println("Duales Problem korrekt: F* = ", objective_value(modell))Primales und duales Problem haben denselben optimalen Zielfunktionswert, und jedes enthält die Lösung des jeweils anderen: die Schattenpreise des dualen Endtableaus sind die primalen Variablenwerte (und umgekehrt).