Simplex-Verfahren
Das Simplex-Verfahren läuft von einer Ecke eines LP-Polyeders zur nächsten, bis keine Verbesserung mehr möglich ist.
Das
Simplex-Verfahren (auch
Simplex-Algorithmus) ist im Operations Research ein Optimierungsverfahren zur Lösung
linearer Programme (LPs). Es löst ein solches Problem nach
endlich vielen Schritten exakt oder stellt dessen Unlösbarkeit oder Unbeschränktheit fest. Die Grundidee des Simplex-Verfahrens wurde 1947 von George Dantzig vorgestellt. Seitdem hat es sich durch zahlreiche Verbesserungen zum wichtigsten Lösungsverfahren der
linearen Optimierung in der Praxis entwickelt.
Obwohl bisher für jede Variante des Verfahrens ein Beispiel konstruiert werden konnte, bei dem der
Algorithmus exponentielle Laufzeit benötigt, läuft der Simplex-Algorithmus in der Praxis meist schneller als andere Verfahren. Zwar gibt es zur Lösung einzelner
linearer Programme auch andere konkurrenzfähige Methoden, z. B.
Innere-Punkte-Verfahren. Der große Vorteil des Simplex-Algorithmus liegt jedoch darin, dass er bei leichter Veränderung des Problems - beispielsweise dem Hinzufügen einer zusätzlichen Bedingung - einen "Warmstart" von der letzten verwendeten Lösung durchführen kann und daher meist nur wenige Iterationen zur erneuten Lösung benötigt, während andere Verfahren von vorne beginnen müssen. Darüber hinaus nutzt das
Simplex-Verfahren die engen Zusammenhänge zwischen einem
linearen Programm und seinem dualen LP aus und löst grundsätzlich beide Probleme gleichzeitig. Beide Eigenschaften sind in der nichtlinearen oder
ganzzahligen linearen Optimierung von Bedeutung, wo sehr viele ähnliche LPs in Folge gelöst werden müssen.
Die geometrische Grundidee des
Algorithmus besteht darin, von einer beliebigen Ecke des Polyeders, das durch das
lineare Programm definiert wird, entlang seiner
Kanten zu einer optimalen Ecke zu laufen. Der Name des Verfahrens rührt daher, dass die nichtnegativen
Linearkombinationen der Basisspalten in jeder Iteration einen simplizialen Kegel beschreiben. Ein Namensvetter dieses Verfahrens namens Downhill-Simplex-Verfahren basiert ebenfalls auf einem Simplex, ist aber ein iteratives Verfahren zur nichtlinearen
Optimierung.
Grundidee des Simplex-Verfahrens
- (LP) max{cTx∣Ax=b,x≥0},
wobei
A∈Rm×n eine
Matrix mit reellen Einträgen,
c∈Rn der sogenannte Zielfunktionsvektor und
b∈Rm ein Vektor mit Beschränkungen ist. Ziel ist es, einen
Punkt x zu finden, der das
lineare Gleichungssystem erfüllt und einen möglichst hohen Zielfunktionswert
G(x)=cTx hat.
Jedes
lineare Programm kann durch einfache Umformungen in diese Form gebracht werden. Insbesondere lässt sich ein Minimierungsproblem durch
Multiplikation der Zielfunktion mit (-1) in ein Maximierungsproblem verwandeln. Meist wird noch vorausgesetzt, dass alle Einträge von
b nichtnegativ sind, was sich immer durch
Multiplikation einzelner Zeilen des Gleichungssystems mit (-1) erreichen lässt.
Geometrisch lässt sich die
Menge der zulässigen Lösungen, also die
Menge der
Punkte mit nichtnegativen Koordinaten, die das
lineare Gleichungssystem Ax=b erfüllen, als konvexes Polyeder (mehrdimensionales
Vieleck)
P interpretieren, dessen
Dimension durch die Anzahl der Variablen nach oben begrenzt ist. Ziel ist es, einen
Punkt x in
P mit möglichst hohem Zielfunktionswert
G(x) zu finden. Anschaulich entspricht dies der
Verschiebung der Hyperebene
cTx=0 soweit wie möglich in Richtung des Vektors
c, so dass sie gerade noch das Polyeder berührt. Alle
Berührungspunkte sind dann optimal.
Für die
Menge der zulässigen Lösungen gibt es drei Möglichkeiten:
- das LP besitzt keine zulässigen Lösungen, d. h. das Polyeder ist leer (z. B. max{x∣x≤1,x≥2 }).
- das LP ist unbeschränkt, d. h. es gibt Lösungen mit beliebig hohem Zielfunktionswert (z. B. max{x∣x≥0}).
- es gibt genau eine oder unendliche viele Optimallösungen, die dann alle auf einer gemeinsamen Seitenfläche (Ecke, Kante,...) des Polyeders P liegen.
Man kann zeigen, dass es immer eine optimale Ecke gibt, falls das Optimierungsproblem überhaupt zulässige Lösungen besitzt und
beschränkt ist. Man kann sich also bei der Suche nach Optimallösungen auf die Ecken des Polyeders beschränken, von denen es allerdings sehr viele geben kann.
Die anschauliche Grundidee des Simplex-Verfahrens besteht nun darin, sich schrittweise von einer Ecke des Polyeders zur einer benachbarten Ecke mit besserem Zielfunktionswert zu hangeln, bis es keinen besseren Nachbarn mehr gibt. Da es sich bei der
linearen Optimierung um ein konvexes Optimierungsproblem handelt, ist die so gefundene lokal optimale Ecke dann auch global optimal, d. h. es gibt in ganz
P keine andere Ecke mit besserem Zielfunktionswert mehr.
Mathematische Beschreibung des Verfahrens
Das Simplex-Verfahren setzt sich aus zwei Phasen zusammen:
- Phase I bestimmt eine zulässige Startlösung oder stellt fest, dass das Problem keine Lösung besitzt,
- Phase II verbessert eine bestehende Lösung immer weiter, bis keine Verbesserung der Zielfunktion mehr möglich ist oder die Unbeschränktheit des Problems festgestellt wird.
Bestimmung einer Startlösung (Phase I)
Zunächst muss eine zulässige Startlösung berechnet werden, bevor man die Phase II starten kann. Eine Möglichkeit dafür ist, für jede Zeile
i eine künstliche Variable
zi einzuführen und dann folgendes
lineare Programm zu betrachten:
- (LP1) min{i=1∑mzi∣Ax+z=b,x,z≥0}.
In einer Optimallösung dieses Hilfsproblems sind die künstlichen Variablen so klein wie möglich, wobei sie immer nichtnegativ bleiben müssen. Das ursprüngliche Problem (LP) besitzt genau dann eine zulässige Lösung, wenn es eine Lösung des Hilfsproblems mit
z=0 gibt, bei der also keine künstlichen Variablen verwendet werden.
Das Hilfsproblem (LP1) besitzt für
b≥0 eine einfache zulässige Startlösung, nämlich
(x,z)=(0,b). Darüber hinaus gilt für jede zulässige Lösung des Hilfsproblems
z≤b, so dass die Zielfunktion nach oben durch
i=1∑mbi beschränkt ist. Dieses
lineare Programm besitzt also eine Optimallösung, die ausgehend von der Startlösung
(0,b) mit Phase II des Hilfsproblems bestimmt werden kann. Findet man dabei eine Optimallösung
(x∗,z∗) mit
z∗=0, ist
x∗ offensichtlich eine zulässige Startlösung für das Ausgangsproblem (LP), mit der dessen Phase II gestartet werden kann. Gelingt dies nicht, so ist das Ausgangsproblem nicht lösbar, und man kann aufhören.
Bestimmung einer Optimallösung (Phase II)
Phase II ist ein iteratives Verfahren, das in jedem Schritt versucht, aus einer zulässigen Lösung eine neue Lösung mit besserem Zielfunktionswert zu konstruieren, bis dies nicht mehr möglich ist. Dies entspricht im wesentlichen der wiederholten Lösung eines
linearen Gleichungssystems mit Hilfe des Gaußschen Eliminationsverfahrens. Dabei kann auch evtl. Unbeschränktheit des Optimierungsproblems festgestellt werden. Zur Erklärung dieser Phase ist die Definition einiger Begriffe notwendig.
Basen, Basislösungen und Ecken
In der Phase II des Simplex-Verfahrens spielt der Begriff der
Basis eine wesentliche Rolle. Eine
Basis B von
A ist eine
Teilmenge der Spalten von
A, die eine reguläre, also invertierbare Untermatrix
AB bilden. Die Variablen, die zu den Basisspalten gehören, heißen
Basisvariablen, die anderen
Nichtbasisvariablen. Die
Basislösung zu einer gegebenen
Basis B ist der eindeutige Vektor
x, dessen Basisvariablen sich als
AB−1b ergeben und dessen Nichtbasisvariablen alle den Wert 0 haben. Solch eine Basislösung ist also eine zulässige Lösung des Gleichungssystems
Ax=b mit höchstens
m Nicht-Null-Einträgen. In dem Fall, dass alle Komponenten von
x nichtnegativ sind, ist
x auch eine zulässige Lösung von (LP), also ein
Punkt des Polyeders
P.
Man kann zeigen, dass jede zulässige Basislösung einer Ecke des Polyeders entspricht und umgekehrt. Eine Basislösung heißt
nicht degeneriert, wenn sie genau
m Nicht-Null-Einträge besitzt. In diesem Fall gibt es eine eindeutige zugehörige
Basis. Sind alle Basislösungen nicht degeneriert, gibt es also eine
bijektive Abbildung zwischen
Basen der
Matrix A und Ecken des Polyeders
P.
Ist eine Basislösung dagegen
degeneriert, so hat sie weniger als
m Nicht-Null-Einträge und kann zu mehreren
Basen gehören. In diesem Fall definiert also jede
Basis der
Matrix A genau eine Ecke des Polyeders
P, aber nicht umgekehrt. Dieser Fall tritt auf, wenn eine Ecke von mehr als
n Ungleichungen definiert wird, was bei praktischen Planungsproblemen so gut wie immer der Fall ist.
Iterative Simplexschritte
Die Phase II versucht iterativ in jedem
Austauschschritt, aus einer bestehenden Basislösung, wie sie z. B. in Phase I bestimmt wurde, eine neue Basislösung mit mindestens genauso gutem Zielfunktionswert zu konstruieren, indem sie eine Basisvariable aus der
Basis entfernt und dafür eine bisherige Nichtbasisvariable in die
Basis aufnimmt. Dies wird so lange wiederholt, bis kein verbessernder Austausch mehr möglich ist. In dieser Phase gibt es zu Beginn jeder Iteration ein sogenanntes
Simplextableau zur aktuellen
Basis B, in dem die Berechnungen durchgeführt werden. Es entspricht im wesentlichen dem linearen Gleichungsystem
Ax=b,cTx=G, nach einer Basistransformation in die aktuelle
Basis.
Simplextableau
Für die Formulierung des Simplextableaus gibt es unterschiedliche Möglichkeiten. Jeder Simplexschritt geht von einer zulässigen
Basis B aus. Zu Beginn des Schrittes hat das zugehörige Simplextableau die folgende Form:
[cˉAˉ0I∣G∣bˉ].
Hierbei sind zur Vereinfachung der Darstellung die Spalten so umsortiert worden, dass alle Nichtbasisspalten links stehen und alle Basisspalten rechts. Der
(n−m)-dimensionale Vektor
cˉ und die
m x
(n−m)-dimensionale
Matrix Aˉ sind definiert durch
- cˉ=cNT−cBTAB−1AN,
- Aˉ=AB−1AN und
- bˉ=AB−1b.
Dabei ist
- AB die reguläre Untermatrix von A, die aus den Spalten der aktuellen Basis B besteht,
- AN die (meistens nicht quadratische) Untermatrix von A, die aus den Nichtbasisspalten besteht,
- cB bzw. cN die Teile des Zielfunktionsvektors c, die aus den Basis- bzw. Nichtbasisspalten bestehen,
- I die m-dimensionale Einheitsmatrix,
- G der Zielfunktionswert der aktuellen Basislösung.
Die rechte Seite
bˉ ist die aktuelle Basislösung, die zur
Basis B gehört. Zu Beginn der Phase I bilden die Variablen
zi eine zulässige
Basis mit der
Einheitsmatrix als Basismatrix und der zugehörigen Basislösung
(x,z)=(0,b). Daher steht am Anfang auf der rechten Seite einfach der Vektor
b.
Die Einträge des Vektors
cˉ heißen
reduzierte Kosten der Nichtbasisvariablen. Der Wert
cˉj gibt die Verbesserung der Zielfunktion an, wenn Variable
xj um eine Einheit erhöht wird. Sind zu Beginn eines Simplexschrittes alle reduzierten Kostenkoeffizienten negativ oder 0, sind daher die aktuelle
Basis und die zugehörige Basislösung optimal, da die Aufnahme einer bisherigen Nichtbasisvariable in die
Basis den Zielfunktionswert verschlechtern würde. Gibt es dagegen Nichtbasisvariablen mit positiven reduzierten Kosten, wird im nächsten Simplexschritt eine von ihnen in die
Basis aufgenommen und dafür eine andere Variable aus der
Basis entfernt. Wenn die neue Variable innerhalb der Nebenbedingungen
Ax=b erhöht werden kann, verbessert sich der Zielfunktionswert.
Ein einzelner Simplexschritt
Für den eigentlichen Simplexschritt wählt man nun eine Spalte
s der einzufügenden Nichtbasisvariable und eine Zeile
r der aus der
Basis zu entfernenden Basisvariablen. Seien
aˉij die (Matrix-) Elemente des aktuellen Simplextableaus. Dann heißt
aˉrs das
Pivotelement des Simplextableaus. Die Spalte
s heißt
Pivotspalte, die Zeile
r heißt
Pivotzeile. Ein Austauschschritt entspricht exakt einem Schritt beim Lösen eines
linearen Gleichungssystems, bei dem man die Pivotzeile
r nach der Variablen
xs auflöst und dann
xs in die restlichen Gleichungen einsetzt. Bei einem Austauschschritt berechnet sich das neue Simplextableau folgendermaßen:
Pivotelement:
- aˉrs:=aˉrs1 (Formel 1)
Pivotzeile für j ungleich s:
- aˉrj:=aˉrsaˉrj (2)
- bˉr:=aˉrsbˉr (3)
Pivotspalte für i ungleich r:
- aˉis:=−aˉrsaˉis (4)
Restliche Elemente der
Matrix und reduzierte Kosten:
- aˉij:=aˉij−aˉrsaˉisaˉrj (5a)
- cˉj:=cˉj−aˉrscˉscˉj (5b)
Rechte Seite:
- bˉj:=bˉj−aˉrsbˉraˉjs (6)
Diese Rechenschritte entsprechen der Anwendung des Gaußschen Eliminationsverfahrens, um die Pivotspalte s im Tableau in einen
Einheitsvektor zu transformieren. Dadurch wird die
inverse Matrix AB′−1 zur neuen
Basis B′ nicht komplett neu berechnet, sondern durch Modifikation der alten Basisinversen
AB−1 konstruiert.
Ein Simplexschritt, der von einer nicht degenerierten Basislösung ausgeht, führt auf jeden Fall zu einer neuen Basislösung und damit auch zu einer neuen Ecke des Polyeders mit besserem Zielfunktionswert. Ist dagegen die Basislösung degeneriert, kann es passieren, dass die neue
Basis nach dem Simplexschritt zur selben Basislösung und damit auch zur selben Ecke gehört, so dass der Zielfunktionswert sich nicht ändert. Bei unvorsichtiger Wahl der Pivotelemente kann es zu sogenannten
Zyklen kommen, bei der reihum immer wieder dieselben
Basen besucht werden, so dass der
Algorithmus in eine Endlosschleife läuft. Dies lässt sich aber beispielsweise durch eine geeignete Auswahl der Pivotzeile verhindern. In der Praxis ist eine weitere Methode, mit Zykeln umzugehen, eine absichtliche Perturbation (numerische Störung) der Daten, die nach einigen Iterationen wieder rausgerechnet wird, wenn der
Algorithmus die betreffende Ecke verlassen hat.
Für die Wahl des Pivotelements gibt es meist mehrere Möglichkeiten. Die ursprünglich von Dantzig vorgeschlagene Methode wählt eine der Spalten mit dem größten reduzierten Kostenwert und eine beliebige Zeile, bei der nach dem Simplexschritt wieder eine zulässige (insbesondere nichtnegative) Basislösung entsteht. Dazu muss bei gegebener Pivotspalte
s eine Pivotzeile gewählt werden, bei der das
Minimum
- λ:=min{aˉisbˉi∣i=1,…,m,aˉis>0}
angenommen wird. Sind alle Einträge in Spalte
s negativ, ist das Optimierungsproblem unbeschränkt, da man Lösungen mit beliebig gutem Zielfunktionswert konstruieren könnte. In diesem Fall kann man aufhören.
Im Normalfall gibt es sowohl mehrere Spalten mit positiven reduzierten Kosten als auch mehrere Zeilen, bei denen das
Minimum λ angenommen wird, so dass eine Wahlmöglichkeit besteht. Da die Wahl des Pivotelements einen großen Einfluss auf die Rechenzeit haben kann, sind innerhalb der letzten 60 Jahre zahlreiche verbesserte Pivotstrategien gegenüber der Lehrbuchvariante entwickelt worden (siehe unten).
Duale Information im Tableau
Aus dem Simplextableau lässt sich auch die Information zur Lösung des zu dem
linearen Programm (LP) gehörigen dualen
linearen Programms entnehmen. Zu einer gegebenen
Basis B kann man neben der zugehörigen
Primallösung x=bˉ=AB−1b, die in der rechten Spalte des Tableaus steht, auch eine
Duallösung π=cBTAB−1 berechnen. Diese beiden Vektoren
x und
π erfüllen immer die Bedingung
- πTb=cTx,
die für Optimallösungen notwendig ist. Der Vektor
x bleibt nach Konstruktion der einzelnen Simplexiterationen immer zulässig für das primale LP, während der Vektor
π Bedingungen des dualen LPs verletzen kann. Sind zu einer
Basis sowohl die zugehörige Primallösung
x als auch die entsprechende Duallösung
π zulässig (man spricht dann von einer
primal und dual zulässigen Basis), dann sind beide optimal für das primale bzw. duale
lineare Programm. Man kann zeigen, dass dies genau dann der Fall ist, wenn der reduzierte Kostenvektor
cˉ nichtpositiv ist. Obwohl das Ziel des Simplex-Verfahrens eigentlich nur die Berechnung einer optimalen Primallösung ist, fällt also am Ende auch eine optimale Duallösung nebenbei mit ab.
Literatur
- George B. Dantzig: Lineare Programmierung und Erweiterungen. Springer-Verlag 1966 (Originalausgabe: Linear Programming and Extensions, Princeton University Press, ISBN 0-691-05913-6.)
- V. Klee und G.J. Minty: How Good is the Simplex Algorithm? In: O. Shisha, editor, Inequalities III, Seiten 159-175. Academic Press, New York, 1972
- Vašek Chvátal: Linear Programming. W. H. Freeman and Company, New York, 1983, ISBN 0-716-71587-2.
- Alexander Schrijver: Theory of Linear and Integer Programming. John Wiley and Sons. 1998, ISBN 0-471-98232-6.
- Wolfgang Domschke, Andreas Drexl: Einführung in Operations Research. 6. Auflage. Springer, Berlin 2005, ISBN 3-540-23431-4
Manche Menschen haben einen Gesichtskreis vom Radius Null und nennen ihn ihren Standpunkt.
David Hilbert
Anbieterkеnnzeichnung: Mathеpеdιa von Тhοmas Stеιnfеld
• Dοrfplatz 25 • 17237 Blankеnsее
• Tel.: 01734332309 (Vodafone/D2) •
Email: cο@maτhepedιa.dе