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: FF \to \infty.
TippIdee

Der Simplex meldet jeden Sonderfall selbst. Man muss nur wissen, wo man hinschaut: FF-Zeile, bb-Spalte oder Pivotspalte.

Mehrdeutige Lösung

Ein einfaches Beispiel

maxF=X1+X2X1+X24X12X1,X20 \begin{aligned} \max \; & F = X_1 + X_2 \\ & X_1 + X_2 \le 4 \\ & X_1 \le 2 \\ & X_1, X_2 \ge 0 \end{aligned}

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.

Zwei optimale Basislösungen

Im Optimaltableau sind die reduzierten Kosten der Nichtbasisvariablen Y2Y_2 null, ein Basistausch kostet nichts:

BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 bb
X2X_2 0 1 1 −1 2
X1X_1 1 0 0 1 2
FF 0 0 1 0 4
BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 bb
X2X_2 1 1 1 0 4
Y2Y_2 1 0 0 1 2
FF 0 0 1 0 4

Optimal: X1*=2X_1^* = 2, X2*=2X_2^* = 2, F*=4F^* = 4. Der Multiplikator von Y2Y_2 ist null \Rightarrow duale Degeneration.

Nach dem Basistausch (Y2Y_2 für X1X_1): X2*=4X_2^* = 4, F*=4F^* = 4, eine zweite optimale Basislösung, gleicher Zielwert.

Grafische Deutung

Die Zielgerade liegt auf der ersten Nebenbedingung.

WichtigMehrere Optima

(2,2)(2, 2), (0,4)(0, 4) und alle Punkte dazwischen sind optimal.

Primale Degeneration

Entartete Basislösung

maxF=X1+2X2X1+X24X12X22X1,X20 \begin{aligned} \max \; & F = X_1 + 2 X_2 \\ & X_1 + X_2 \le 4 \\ & X_1 \le 2 \\ & X_2 \le 2 \\ & X_1, X_2 \ge 0 \end{aligned}

Am Optimum treffen sich drei Restriktionen in einem Punkt, eine Basisvariable wird null.

Eine Basisvariable wird null

BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 bb
X1X_1 1 0 1 0 −1 2
Y2Y_2 0 0 −1 1 1 0
X2X_2 0 1 0 0 1 2
FF 0 0 1 0 1 6

Basisvariable Y2=0Y_2 = 0: eine entartete (degenerierte) Basislösung.

Grafische Deutung

Die gepunktete Restriktion ist redundant; sie läuft durch die optimale Ecke (2,2)(2, 2).

VorsichtGefahr des Kreisens

Der Simplex kann zwischen Basislösungen desselben Eckpunkts kreisen.

Keine zulässige Lösung

Widersprüchliche Vorgaben

maxF=X1+2X2X1+X24X13X1X2X1,X20 \begin{aligned} \max \; & F = X_1 + 2 X_2 \\ & X_1 + X_2 \le 4 \\ & X_1 \ge 3 \\ & X_1 \le X_2 \\ & X_1, X_2 \ge 0 \end{aligned}

Frage: Sehen Sie den Widerspruch?

X13X_1 \ge 3 und X1X2X_1 \le X_2 erzwingen X1+X26>4X_1 + X_2 \ge 6 > 4. Aber wie merkt das der Simplex?

Zweiphasen als Detektor

Die \ge-Zeile erhält eine künstliche Variable: X1Y2+Z1=3X_1 - Y_2 + Z_1 = 3, also ZZ-Zeile X1+Y2+Z=3-X_1 + Y_2 + Z = -3.

BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 Z1Z_1 bb
Y1Y_1 1 1 1 0 0 0 4
Z1Z_1 1 0 0 −1 0 1 3
Y3Y_3 1 −1 0 0 1 0 0
FF −1 −2 0 0 0 0 0
ZZ −1 0 0 1 0 0 −3
BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 Z1Z_1 bb
Y1Y_1 0 2 1 0 −1 0 4
Z1Z_1 0 1 0 −1 −1 1 3
X1X_1 1 −1 0 0 1 0 0
FF 0 −3 0 0 1 0 0
ZZ 0 −1 0 1 1 0 −3
BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 Z1Z_1 bb
X2X_2 0 1 1/2 0 −1/2 0 2
Z1Z_1 0 0 −1/2 −1 −1/2 1 1
X1X_1 1 0 1/2 0 1/2 0 2
FF 0 0 3/2 0 −1/2 0 6
ZZ 0 0 1/2 1 1/2 0 −1

ZZ-Zeile: 1-1 unter X1X_1; kleinster Quotient 0/10/1 \Rightarrow Pivot [1].

ZZ-Zeile: 1-1 unter X2X_2; Quotienten min{4/2,3/1}=2\min\{4/2,\, 3/1\} = 2 \Rightarrow Pivot [2].

Die ZZ-Zeile hat keine negativen Einträge mehr, aber Z1=1Z_1 = 1 bleibt in der Basis: keine zulässige Lösung.

Dualer Simplex als Detektor

Alternative: X13X_1 \ge 3 mit 1-1 multipliziert (X1+Y2=3-X_1 + Y_2 = -3). Die Startlösung ist unzulässig, der duale Simplex übernimmt.

BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 bb
Y1Y_1 1 1 1 0 0 4
Y2Y_2 −1 0 0 1 0 −3
Y3Y_3 1 −1 0 0 1 0
FF −1 −2 0 0 0 0
BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 bb
Y1Y_1 0 1 1 1 0 1
X1X_1 1 0 0 −1 0 3
Y3Y_3 0 −1 0 1 1 −3
FF 0 −2 0 −1 0 3
BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 Y3Y_3 bb
Y1Y_1 0 0 1 2 1 −2
X1X_1 1 0 0 −1 0 3
X2X_2 0 1 0 −1 −1 3
FF 0 0 0 −3 −2 9

Y2=3Y_2 = -3 ist unzulässig; einziger negativer Koeffizient \Rightarrow Pivot [−1].

Jetzt ist Y3=3Y_3 = -3 unzulässig; wieder nur ein Kandidat \Rightarrow Pivot [−1].

Y1=2Y_1 = -2 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 Z1>0Z_1 > 0 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.

WichtigLeere Lösungsmenge

Es gibt keine zulässige Lösung.

Unbeschränktes Problem

Unbegrenzte Zielfunktion

maxF=X1+2X2X1X24X1+X24X1,X20 \begin{aligned} \max \; & F = X_1 + 2 X_2 \\ & X_1 - X_2 \le 4 \\ & X_1 + X_2 \ge 4 \\ & X_1, X_2 \ge 0 \end{aligned}

Der zulässige Bereich ist nach oben offen, die Zielfunktion kennt keine Schranke.

Erkennung im Simplex

BV X1X_1 X2X_2 Y1Y_1 Y2Y_2 bb
Y1Y_1 2 0 1 −1 8
X2X_2 1 1 0 −1 4
FF 1 0 0 −2 8

Y2Y_2 soll in die Basis, aber alle Koeffizienten der Pivotspalte sind 0\le 0. Es gibt keine Schranke: FF ist beliebig steigerbar.

Grafische Deutung

Die Zielgerade lässt sich beliebig nach rechts oben schieben.

WichtigKeine endliche Lösung

FF \to \infty: das Problem ist unbeschränkt.

Kontrolle mit Julia

Mehrdeutigkeit erkennen

Die reduzierten Kosten verraten die Mehrdeutigkeit: HiGHS findet die Ecke (0,4)(0, 4); die Nichtbasisvariable X1X_1 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
HinweisWarum DUAL_INFEASIBLE?

HiGHS meldet Unbeschränktheit über das Dualproblem: Ist das primale Problem unbeschränkt, dann ist sein Dual unzulässig (Vorlesung 4). DUAL_INFEASIBLE bedeutet hier also: unbeschränkt.

Zusammenfassung

Das Wichtigste auf einen Blick

  • Duale Degeneration: reduzierte Kosten einer NBV sind null \Rightarrow mehrere optimale Lösungen.
  • Primale Degeneration: eine Basisvariable ist null \Rightarrow Gefahr des Kreisens.
  • Keine zulässige Lösung: künstliche Variable bleibt in der Basis / kein Basistausch möglich.
  • Unbeschränktes Problem: Pivotspalte ganz 0\le 0 \Rightarrow FF \to \infty.

Literatur

Literaturverzeichnis

Domschke, Wolfgang, Andreas Drexl, Robert Klein, und Armin Scholl. 2015. Einführung in Operations Research. 9. Aufl. Springer Gabler. https://doi.org/10.1007/978-3-662-48216-2.
Haase, Knut, Habib Zain Al Abideen, Salim Al-Bosta, u. a. 2016. „Improving pilgrim safety during the hajj: an analytical and operational research approach“. Interfaces 46 (1): 74–90.