Vorlesung 05: Sonderfälle
Grundlagen Operations Research
Sonderfälle
Wenn der Plan nicht aufgeht
Vier Sonderfälle
Bisher fand der Simplex stets genau eine optimale Lösung. Das ist nicht selbstverständlich:
- Mehrdeutige Lösung: mehrere Optima.
- Degenerierte Basislösung: Gefahr des Kreisens.
- Keine zulässige Lösung: leerer Lösungsraum.
- Unbeschränktes Problem: .
Der Simplex meldet jeden Sonderfall selbst. Man muss nur wissen, wo man hinschaut: -Zeile, -Spalte oder Pivotspalte.
Mehrdeutigkeit
Ein einfaches Beispiel
Frage: Was fällt Ihnen an Zielfunktion und erster Restriktion auf?
Die Zielfunktion verläuft parallel zur ersten Nebenbedingung, das führt zu einer Besonderheit.
Auf der nächsten Folie schieben Sie den Plan selbst. Wo liegt der beste Punkt, und ist es nur einer?
Sie sind dran
Zwei optimale Basislösungen
Im Optimaltableau (nach zwei Pivots) sind die reduzierten Kosten der Nichtbasisvariablen null, ein Basistausch kostet nichts:
| BV | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 4 | |
| 1 | 0 | 0 | 1 | 2 | |
| −1 | −1 | 0 | 0 | 0 |
-Zeile: unter und , gewählt ; Quotienten Pivot [1].
| BV | |||||
|---|---|---|---|---|---|
| 0 | 1 | 1 | −1 | 2 | |
| 1 | 0 | 0 | 1 | 2 | |
| 0 | −1 | 0 | 1 | 2 |
-Zeile: unter ; einziger Quotient Pivot [1].
| BV | |||||
|---|---|---|---|---|---|
| 0 | 1 | 1 | −1 | 2 | |
| 1 | 0 | 0 | 1 | 2 | |
| 0 | 0 | 1 | 0 | 4 |
Optimal: , , . Zeile 2 wurde -mal zur -Zeile addiert: Der Simplex-Multiplikator von bzw. die korrespondierende duale Variable ist null duale Degeneration.
| BV | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 4 | |
| 1 | 0 | 0 | 1 | 2 | |
| 0 | 0 | 1 | 0 | 4 |
Nach dem Basistausch ( für ): , , eine zweite optimale Basislösung, gleicher Zielwert.
Grafische Deutung
Die Zielgerade liegt auf der ersten Nebenbedingung.
, und alle Punkte dazwischen sind optimal.
Degeneration
Entartete Basislösung
Am Optimum treffen sich drei Restriktionen in einem Punkt, eine Basisvariable wird null.
Eine Basisvariable wird null
| BV | ||||||
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 4 | |
| 1 | 0 | 0 | 1 | 0 | 2 | |
| 0 | 1 | 0 | 0 | 1 | 2 | |
| −1 | −2 | 0 | 0 | 0 | 0 |
-Zeile: unter ; Quotienten Pivot [1].
| BV | ||||||
|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0 | −1 | 2 | |
| 1 | 0 | 0 | 1 | 0 | 2 | |
| 0 | 1 | 0 | 0 | 1 | 2 | |
| −1 | 0 | 0 | 0 | 2 | 4 |
-Zeile: unter ; Quotienten : Gleichstand. Pivot [1] in der Zeile , dann wird auch null.
| BV | ||||||
|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0 | −1 | 2 | |
| 0 | 0 | −1 | 1 | 1 | 0 | |
| 0 | 1 | 0 | 0 | 1 | 2 | |
| 0 | 0 | 1 | 0 | 1 | 6 |
Basisvariable : eine entartete (degenerierte) Basislösung.
Grafische Deutung
Die gepunktete Restriktion ist redundant; sie läuft durch die optimale Ecke .
Der Simplex kann zwischen Basislösungen desselben Eckpunkts kreisen.
Unzulässigkeit
Widersprüchliche Vorgaben
Frage: Sehen Sie den Widerspruch?
und erzwingen . Aber wie merkt das der Simplex?
Zweiphasen als Detektor
Die -Zeile erhält eine künstliche Variable: , also -Zeile .
| BV | |||||||
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 0 | 4 | |
| 1 | 0 | 0 | −1 | 0 | 1 | 3 | |
| 1 | −1 | 0 | 0 | 1 | 0 | 0 | |
| −1 | −2 | 0 | 0 | 0 | 0 | 0 | |
| −1 | 0 | 0 | 1 | 0 | 0 | −3 |
-Zeile: unter ; kleinster Quotient Pivot [1].
| BV | |||||||
|---|---|---|---|---|---|---|---|
| 0 | 2 | 1 | 0 | −1 | 0 | 4 | |
| 0 | 1 | 0 | −1 | −1 | 1 | 3 | |
| 1 | −1 | 0 | 0 | 1 | 0 | 0 | |
| 0 | −3 | 0 | 0 | 1 | 0 | 0 | |
| 0 | −1 | 0 | 1 | 1 | 0 | −3 |
-Zeile: unter ; Quotienten Pivot [2].
| BV | |||||||
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1/2 | 0 | −1/2 | 0 | 2 | |
| 0 | 0 | −1/2 | −1 | −1/2 | 1 | 1 | |
| 1 | 0 | 1/2 | 0 | 1/2 | 0 | 2 | |
| 0 | 0 | 3/2 | 0 | −1/2 | 0 | 6 | |
| 0 | 0 | 1/2 | 1 | 1/2 | 0 | −1 |
Die -Zeile hat keine negativen Einträge mehr, aber bleibt in der Basis: keine zulässige Lösung.
Dualer Simplex als Detektor
Alternative: mit multipliziert (). Die Startlösung ist unzulässig, der duale Simplex übernimmt.
| BV | ||||||
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 0 | 4 | |
| −1 | 0 | 0 | 1 | 0 | −3 | |
| 1 | −1 | 0 | 0 | 1 | 0 | |
| −1 | −2 | 0 | 0 | 0 | 0 |
ist unzulässig; einziger negativer Koeffizient Pivot [−1].
| BV | ||||||
|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 0 | 1 | |
| 1 | 0 | 0 | −1 | 0 | 3 | |
| 0 | −1 | 0 | 1 | 1 | −3 | |
| 0 | −2 | 0 | −1 | 0 | 3 |
Jetzt ist unzulässig; wieder nur ein Kandidat Pivot [−1].
| BV | ||||||
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 1 | −2 | |
| 1 | 0 | 0 | −1 | 0 | 3 | |
| 0 | 1 | 0 | −1 | −1 | 3 | |
| 0 | 0 | 0 | −3 | −2 | 9 |
ist unzulässig, aber die Zeile hat keinen negativen Koeffizienten, kein zulässiger Basistausch: keine zulässige Lösung.
Zwei Wege, ein Befund
- Zweiphasenmethode: Phase 1 endet mit einer künstlichen Variablen in der Basis, obwohl keine Verbesserung mehr möglich ist.
- Dualer Simplex: für eine negative Basisvariable existiert kein zulässiger Basistausch.
Beides signalisiert dasselbe: der Lösungsraum ist leer.
Grafische Deutung
Die drei Halbräume haben keine gemeinsame Fläche.
Es gibt keine zulässige Lösung.
Unbeschränktheit
Unbegrenzte Zielfunktion
Der zulässige Bereich ist nach oben offen, die Zielfunktion kennt keine Schranke.
Erkennung im Simplex
Die -Zeile mit multipliziert (). Die Startlösung ist unzulässig, der duale Simplex übernimmt.
| BV | |||||
|---|---|---|---|---|---|
| 1 | −1 | 1 | 0 | 4 | |
| −1 | −1 | 0 | 1 | −4 | |
| −1 | −2 | 0 | 0 | 0 |
ist unzulässig: Pivotzeile . Spaltenregel aus Vorlesung 3: Pivot [−1] unter .
| BV | |||||
|---|---|---|---|---|---|
| 2 | 0 | 1 | −1 | 8 | |
| 1 | 1 | 0 | −1 | 4 | |
| 1 | 0 | 0 | −2 | 8 |
soll in die Basis, aber alle Koeffizienten der Pivotspalte sind . Es gibt keine Schranke: ist beliebig steigerbar.
Grafische Deutung
Die Zielgerade lässt sich beliebig nach rechts oben schieben.
: das Problem ist unbeschränkt.
Sonderfälle im dualen Problem
Jeder Fall hat ein Gegenstück im dualen Problem (Vorlesung 4):
- Primal optimal dual optimal, mit gleichem Zielwert (starke Dualität).
- Primal unbeschränkt dual unzulässig.
- Primal unzulässig dual unbeschränkt oder unzulässig.
Das Dual des Duals ist wieder das Primal: Die Regeln gelten auch in Gegenrichtung.
Kontrolle mit Julia
Mehrdeutigkeit erkennen
Die reduzierten Kosten verraten die Mehrdeutigkeit: HiGHS findet die Ecke ; die Nichtbasisvariable hat reduzierte Kosten null, ein Basistausch wäre gratis:
using JuMP, HiGHS
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, X1 >= 0); @variable(modell, X2 >= 0)
@objective(modell, Max, X1 + X2)
@constraint(modell, X1 + X2 <= 4)
@constraint(modell, X1 <= 2)
optimize!(modell)
println("X = (", value(X1), ", ", value(X2), "), F* = ",
objective_value(modell))
println("Reduzierte Kosten von X1: ", round(Int, reduced_cost(X1)))X = (0.0, 4.0), F* = 4.0
Reduzierte Kosten von X1: 0
Sonderfälle erkennen
JuMP meldet jeden Sonderfall über den termination_status:
# Unzulässiges Problem
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, X1 >= 0); @variable(modell, X2 >= 0)
@objective(modell, Max, X1 + 2X2)
@constraint(modell, X1 + X2 <= 4)
@constraint(modell, X1 >= 3)
@constraint(modell, X1 <= X2)
optimize!(modell)
println("Status: ", termination_status(modell))Status: INFEASIBLE
Unbeschränktheit erkennen
modell = Model(HiGHS.Optimizer); set_silent(modell)
@variable(modell, X1 >= 0); @variable(modell, X2 >= 0)
@objective(modell, Max, X1 + 2X2)
@constraint(modell, X1 - X2 <= 4)
@constraint(modell, X1 + X2 >= 4)
optimize!(modell)
println("Status: ", termination_status(modell))Status: DUAL_INFEASIBLE
DUAL_INFEASIBLE?
HiGHS meldet Unbeschränktheit über das Dualproblem: Ist das primale Problem unbeschränkt, dann ist sein Dual unzulässig. DUAL_INFEASIBLE bedeutet hier also: unbeschränkt.
Zusammenfassung
Das Wichtigste auf einen Blick
- Duale Degeneration: reduzierte Kosten einer NBV sind null mehrere optimale Lösungen.
- Primale Degeneration: eine Basisvariable ist null Gefahr des Kreisens.
- Keine zulässige Lösung: künstliche Variable bleibt in der Basis / kein Basistausch möglich.
- Unbeschränktes Problem: Pivotspalte ganz .