using JuMP, HiGHS
modell = Model(HiGHS.Optimizer)
set_silent(modell)
# IHR CODE HIER
optimize!(modell)Übung 08: Branch & Bound
Grundlagen Operations Research
Video zur Übung
Aufgabe 1
Gegeben sei folgendes ganzzahlige Optimierungsproblem:
Im Rahmen eines Branch-&-Bound-Verfahrens wurden die zusätzlichen Restriktionen und eingeführt, also .
- Bestimmen Sie eine obere Schranke für das zugehörige Teilproblem.
- Lösen Sie das ganzzahlige Teilproblem grafisch.
- Überprüfen Sie Ihre Lösungen mit Julia.
Ihre Lösung in Julia
Modellieren Sie zunächst die LP-Relaxation des Teilproblems ( fixieren Sie mit fix(modell[:X][2], 1; force = true)) und nennen Sie das Modell modell:
# Führen Sie diese Zelle nach Ihrer Lösung aus:
@assert isapprox(objective_value(modell), 20.0; atol = 1e-4) "Noch nicht korrekt, ist X2 auf 1 fixiert und das Problem noch nicht ganzzahlig?"
println("Obere Schranke korrekt: F = ", objective_value(modell))Das ganzzahlige Teilproblem
Deklarieren Sie die Variablen nun ganzzahlig (Int) und lösen Sie erneut, das Ergebnis muss zu Ihrer grafischen Lösung passen:
@assert isapprox(objective_value(modell), 19.0; atol = 1e-4) "Noch nicht korrekt, sind alle Variablen ganzzahlig deklariert?"
println("Ganzzahliges Teilproblem korrekt: F = ", objective_value(modell))Aufgabe 2
Gegeben sei der folgende Branch-&-Bound-Baum. Jeder Kasten zeigt den Namen des Teilproblems, die Schranke und die Lösung :
Was für ein Variablentyp wird betrachtet?
Handelt es sich um eine Maximierung oder eine Minimierung?
Ersetzen Sie die Fragezeichen durch die zugehörigen Variablenfestlegungen.
Welche Regel wurde bei der Variablenauswahl angewandt?
Bestimmen Sie die Reihenfolge der Abarbeitung der Teilprobleme bei reiner Tiefensuche, bei Tiefensuche mit MUB und bei Breitensuche (vgl. Vorlesung 8).