Vorlesung 02: Primaler Simplex
Grundlagen Operations Research
Motivation
Wenn Zeichnen nicht reicht
Grafisch lösen wir nur zwei Variablen.
Reale Optimierungsprobleme (Zuströme in U-Bahnhöfe, Pilgerströme, Losgrößen) haben Tausende Variablen und Nebenbedingungen. Dafür brauchen wir ein systematisches, rechnerisches Verfahren: den Simplex-Algorithmus.
Wiederholung
Das Einführungsbeispiel
Heute: rechnerisch statt grafisch.
Das Gleichungssystem
Mit Schlupfvariablen :
Drei Gleichungen, fünf Variablen: zwei Variablen sind frei wählbar.
Iteratives Lösen
Vom Ausprobieren zum System
Wir starten in einer Ecke des Lösungsraums und wandern gezielt zu einer benachbarten Ecke mit besserem Zielfunktionswert, bis keine Verbesserung mehr möglich ist.
Jede Ecke entspricht einer Basislösung: wir lösen das Gleichungssystem nach drei Basisvariablen auf; die übrigen zwei sind null.
Erste Basislösung
Setze (Nichtbasisvariablen). Dann folgt unmittelbar:
- Basisvariablen (BV ):
- Nichtbasisvariablen (NBV ):
Eine zulässige, aber noch nicht optimale Basislösung.
Eine bessere Basislösung?
Frage: Welche Variable soll in die Basis aufgenommen werden?
Aus der Zielfunktion :
steigert den Zielwert pro Einheit am stärksten.
in die Basis aufnehmen
Wie groß darf werden?
Bei gilt:
Frage: Wie weit dürfen wir erhöhen, und wer verlässt dafür die Basis?
Verlässt die Basis (), wird : unzulässig.
Verlässt die Basis (), bleibt : zulässig.
Elementaroperationen
Um die neue Basislösung abzulesen, isolieren wir die Basisvariablen (jede nur noch in einer Gleichung):
- Multiplikation einer Gleichung mit einem Wert
- Addition/Subtraktion einer Gleichung zu einer anderen
Der Informationsgehalt des Gleichungssystems bleibt erhalten.
Der Basistausch im Detail
Ziel: isolieren, nur noch in der zweiten Gleichung.
Die zweite Gleichung enthält . Hier wird isoliert.
Multiplikation der zweiten Gleichung mit : der Koeffizient von wird .
Subtraktion der zweiten von der ersten Gleichung: verschwindet aus Gleichung 1.
Addition des 30-fachen der zweiten Gleichung zur Zielfunktionszeile. Ablesbar: , , .
Geht es noch besser?
Die Zielfunktionszeile lautet umgestellt:
Frage: Sehen Sie noch Verbesserungspotenzial?
Eine Erhöhung von steigert weiter.
in die Basis aufnehmen; der minimale Quotient zeigt: verlässt die Basis (diese Minimalquotientenregel führen wir gleich im Tableau formal ein).
Der zweite Basistausch
Gleiches Vorgehen, jetzt für statt :
wird in der ersten Gleichung isoliert ( verlässt die Basis).
Multiplikation der ersten Gleichung mit .
Subtraktion des -fachen der ersten von der zweiten Gleichung, Addition des 10-fachen zur Zielfunktionszeile.
Optimale Basislösung
Nach dem zweiten Basistausch ():
Wegen verschlechtert jede Erhöhung von den Wert.
Basislösung ↔︎ Eckpunkt
Jeder Basistausch führt zu einem benachbarten Eckpunkt des Lösungsraums.
Erste Analysen
Simplex-Multiplikatoren
Vergleich der Zielfunktionszeile (Ausgangssystem → Optimalsystem ):
- 15-faches der 1. Gleichung zur Zielfunktion addiert,
- 5-faches der 2. Gleichung zur Zielfunktion addiert.
Die heißen Simplex-Multiplikatoren (Dualwerte).
Weitere Zusammenhänge
Nicht nur die Zielfunktionszeile: jede Gleichung des Optimalsystems ist eine Linearkombination der Ausgangsgleichungen.
Die erste Optimalgleichung: 1. Gleichung 2. Gleichung. Probe auf der rechten Seite:
Solche Rekonstruktionen nutzen wir ab Vorlesung 3 zur Interpretation optimaler Lösungen und zur Bewertung neuer Alternativen.
Das Simplextableau
Der Algorithmus im Tableau
| BV | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 5 | |
| 1 | 3 | 0 | 1 | 9 | |
| −20 | −30 | 0 | 0 | 0 |
| BV | |||||
|---|---|---|---|---|---|
| 2/3 | 0 | 1 | −1/3 | 2 | |
| 1/3 | 1 | 0 | 1/3 | 3 | |
| −10 | 0 | 0 | 10 | 90 |
| BV | |||||
|---|---|---|---|---|---|
| 1 | 0 | 3/2 | −1/2 | 3 | |
| 0 | 1 | −1/2 | 1/2 | 2 | |
| 0 | 0 | 15 | 5 | 120 |
Pivotspalte (), Pivotzeile (), Pivotelement .
Neue Pivotspalte (), Pivotzeile , Pivotelement ; .
Alle Werte der -Zeile optimal, .
Unbeschränkte Lösung
Angenommen, in einem anderen Problem gilt für die aufzunehmende Variable nur die Beziehung , also .
Eine Erhöhung von hält stets ein: kein Quotient begrenzt sie.
Sind alle Koeffizienten der Pivotspalte , ist die Lösung unbeschränkt.
Verallgemeinertes Tableau
| BV | |||
|---|---|---|---|
- : aktueller Koeffizient in Zeile , Spalte
- : aktueller Wert der -Spalte
- : aktueller Wert der -Zeile
- Ausgangstableau: , ,
Der Simplex-Algorithmus
Ziel: optimale Basislösung eines Maximierungs-LOP.
- Pivotspalte : kleinster negativer Wert der -Zeile, . Keiner negativ optimal.
- Pivotzeile : kleinster Quotient .
- Elementaroperationen: Einheitsvektor in der Pivotspalte erzeugen. Weiter mit 1.
Kontrolle mit Julia
Dasselbe Optimum mit JuMP
using JuMP, HiGHS
modell = Model(HiGHS.Optimizer)
set_silent(modell)
@variable(modell, X1 >= 0) # Abnahmemenge Auftrag 1
@variable(modell, X2 >= 0) # Abnahmemenge Auftrag 2
@objective(modell, Max, 20X1 + 30X2) # Umsatzerlöse in EUR
@constraint(modell, Paletten, X1 + X2 <= 5) # max. 5 Paletten
@constraint(modell, Gewicht, X1 + 3X2 <= 9) # max. 9 Tonnen
optimize!(modell)
println("F* = ", objective_value(modell),
" mit X1 = ", value(X1), ", X2 = ", value(X2))F* = 120.0 mit X1 = 3.0, X2 = 2.0
Zusammenfassung
Das Wichtigste auf einen Blick
- Der Simplex wandert von Ecke zu Ecke (Basistausch) zu besseren Werten.
- Pivotspalte = beste neue BV, Pivotzeile = kleinster Quotient.
- Abbruch, wenn die -Zeile keine negativen Werte mehr enthält.
- Die Simplex-Multiplikatoren liefern .