using JuMP, HiGHS
I = 1:15
J = [2, 5, 11, 14]
u = [2, 3, 6, 4, 3, 7, 6, 3, 1, 7, 8, 6, 3, 4, 3]
zeile(i) = cld(i, 5)
spalte(i) = mod(i - 1, 5) + 1
d(i, h) = abs(zeile(i) - zeile(h)) + abs(spalte(i) - spalte(h))
nachbarn(i) = [h for h in I if d(i, h) == 1]
modell = Model(HiGHS.Optimizer)
set_silent(modell)
# IHR CODE HIER
optimize!(modell)Übung 10: Mehrfache Zielsetzung
Grundlagen Operations Research
Video zur Übung
Das Modell
Gegeben ist das folgende Standortplanungsmodell für Verkaufsgebiete (vgl. Vorlesung 10).
Mengen: : Gebiete mit Index ; : potenzielle Verkaufsstandorte mit Index , ; : Nachbarn des Gebiets .
Parameter: : Umsatzpotenzial des Gebiets ; : Distanz zwischen Gebiet und Gebiet ; : maximaler Umsatz; : minimale Reisekosten.
Variablen: , wenn das Gebiet dem Verkaufsstandort zugeordnet wird (0, sonst); , wenn der Verkaufsstandort errichtet wird (0, sonst); : Umsatz des Verkaufsstandorts ; : Reisekosten des Verkaufsstandorts .
Für die Menge der Gebiete sind die Umsatzpotenziale :
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 3 | 6 | 4 | 3 | 7 | 6 | 3 | 1 | 7 | 8 | 6 | 3 | 4 | 3 |
Zusätzlich ist eine abstrahierte Ansicht der Gebietsanordnung gegeben. Als potenzielle Verkaufsstandorte wurden identifiziert. Die Distanz zwischen zwei benachbarten (Kante an Kante) Gebieten beträgt eine Einheit (d. h. bzw. ):
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
Aufgabe 1
- Was wird mit der ersten Zielfunktion maximiert?
- Was wird durch den zweiten Term () in der ersten Zielfunktion berücksichtigt?
- Stellen Sie eine Nebenbedingung auf, die fordert, dass nur Gebiete mit einer maximalen Distanz von Einheiten einem Standort zugeordnet werden dürfen.
- Könnte eine Nebenbedingung, die die Einhaltung einer maximalen Distanz zwischen einem Standort und zugeordnetem Gebiet fordert, zu einer Unzulässigkeit des Modells führen? Begründen Sie Ihre Antwort!
- Stellen Sie die Zielfunktion so um, dass die maximale relative Abweichung des Umsatzbeitrags bzw. Kostenbeitrags vom Optimum minimiert wird! (Hinweis: Sie können hierfür zusätzliche Nebenbedingungen und Variablen einführen.)
- Bestimmen Sie die zur aktuellen Lösung (, , , , , , , ) gehörenden Werte für , , , und . (Hinweis: Es müssen nur die von null verschiedenen Werte angegeben werden!)
- Überprüfen Sie in Julia, ob die aktuelle Lösung optimal ist!
Ihre Lösung in Julia
Bestimmen Sie zuerst die Einzeloptima (Maximierung) und (Minimierung), danach das Optimum der gemeinsamen Zielfunktion . Nennen Sie Ihr Modell modell:
# Führen Sie diese Zelle nach der Maximierung von F1 aus:
@assert isapprox(objective_value(modell), 33.0; atol = 1e-4) "F1* noch nicht korrekt, prüfen Sie die Min-Umsatz-Bedingung mit 1000·(1-Y)."
println("F1* korrekt: ", objective_value(modell))# Führen Sie diese Zelle nach der Minimierung von F2 aus:
@assert isapprox(objective_value(modell), 22.0; atol = 1e-4) "F2* noch nicht korrekt, prüfen Sie die Reisekosten-Definition."
println("F2* korrekt: ", objective_value(modell))@assert isapprox(objective_value(modell), 1 / 33; atol = 1e-4) "Noch nicht korrekt, relative Abweichungen: (F1*-F1)/F1* + (F2-F2*)/F2*."
println("Optimum korrekt: F = ", round(objective_value(modell); digits = 4))
println("Vergleichen Sie mit dem F-Wert der in Aufgabenteil 6 gegebenen Lösung!")