Pivotverfahren

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel bezieht sich auf Pivotverfahren in der mathematischen Optimierung. Zur Pivotauswahl beim gaußschen Eliminationsverfahren siehe dort.

Pivotverfahren (auch Basisaustauschverfahren) sind Algorithmen der mathematischen Optimierung. Für ein vorgegebenes System linearer Gleichungen in nichtnegativen Variablen (im Wesentlichen dasselbe wie ein System linearer Ungleichungen) wird nach der bestmöglichen von vielen Alternativlösungen (einer sogenannten Optimallösung) gesucht, und auf dieser Suche das Gleichungssystem Schritt für Schritt umgewandelt ohne dabei die Lösungsmenge zu verändern. Wichtige Pivotverfahren sind die Simplexverfahren und die Criss-Cross-Verfahren.

Pivotverfahren spielen für die Behandlung von linearen Ungleichungen eine analoge und ähnlich wichtige Rolle wie das Gaußsche Eliminationsverfahren für die Lösung linearer Gleichungen; Hauptanwendungsgebiet ist die lineare Optimierung. Sie gehören zu den meistverwendeten Lösungsmethoden in der Unternehmensforschung, der Wirtschaftswissenschaft, dem Gütertransport, und sie werden auch in vielen anderen Gebieten wie im Ingenieurbau (Strukturoptimierung), in der Statistik (Regressionsanalyse) und in der Spieltheorie zunehmend eingesetzt.[1] Aufgaben mit zehntausenden Variablen und Ungleichungen sind an der Tagesordnung.[2]

Pivotansatz[Bearbeiten]

Problemstellung[Bearbeiten]

Ein Pivotverfahren geht immer von einem besonders gearteten linearen Gleichungssystem aus, in dem alle Variablen, außer vielleicht einer, nichtnegative Werte annehmen sollen. Jedes System linearer Ungleichungen oder Gleichungen, und auch jede lineare Optimierungsaufgabe, lässt sich nämlich in folgende (englisch dictionary genannte [3]) Buchform bringen:

\begin{matrix}
z       & = & f     & + & ~~~~~d_1\,x_1 & + & \cdots & + &  ~~~~~d_n\,x_n
\\[3pt]
x_{n+1} & = & b_{n+1}     & + & G_{n+1,1}\,x_1 & + & \cdots & + & G_{n+1,n}\,x_n
\\
\vdots  &   & \vdots  &   &  \vdots   &   &        &   &  \vdots
\\
x_{n+m} & = & b_{n+m}     & + & G_{n+m,1}\,x_1 & + & \cdots & + & G_{n+m,n}\,x_n
\end{matrix}

\begin{matrix}
x_1\ge0,\; \ldots,\; x_{n+m}\ge0,\quad  \max~z
\end{matrix}

Hier sind f,\;d_j,\;b_i,\;G_{i,j} reelle (in der Praxis meist rationale) Zahlen. Die obige Notation soll aussagen, dass eine Lösung in den Unbekannten x_1,\;\ldots,\;x_{n+m},\;z gesucht wird, welche die entsprechenden Gleichungen und Ungleichungen erfüllt und dabei die sogenannte Zielvariable z so groß wie möglich wählt. Mit Hilfe der Indexmengen

D = \{1,\ldots,n\},\quad B = \{n+1,\ldots,n+m\}

lässt sich diese Aufgabe auch wie folgt in kompakter Form ausdrücken:

\begin{matrix}
& & z    & = &  f    & + &  \sum_{j\in D}\, d_j\, x_j
\\[6pt] \forall~ i\in B
& & x_i  & = &  b_i  & + &  \sum_{j\in D}\, G_{i,j}\, x_j
\end{matrix}

\begin{matrix}
x_1\ge0,\; \ldots,\; x_{n+m}\ge0,\quad  \max~z
\end{matrix}

In jedem Schritt eines Pivotverfahrens ist wie oben eine Teilmenge der Variablen als unabhängig hervorgehoben, während die restlichen Variablen, Basisvariablen genannt, als linear-affine Funktionen der unabhängigen Variablen ausgedrückt werden. In aufeinanderfolgenden Schritten wechselt immer eine der Variablen von unabhängig auf Basisvariable und eine zweite in die umgekehrte Richtung; solche Variablenpaare werden Pivots genannt.

Optimumbedingungen[Bearbeiten]

Falls im oben aufgestellten linearen Gleichungssystem die beiden folgenden Optimumbedingungen erfüllt sind,

  • b_i\ge0   für alle  i\in B    (Zulässigkeit)   und
  • d_j\le0   für alle  j\in D    (Zielbeschränkung),

dann kann man eine Lösung für die obige Aufgabe erhalten, indem man die unabhängigen Variablen auf die Werte x_1=0, \ldots, x_n=0 setzt. Zum einen sind die Werte der freigelegten Variablen x_{n+1}=b_{n+1}, \ldots, x_{n+m}=b_{n+m} dann nichtnegativ, wie gefordert. Zum anderen dürfen sonstige mögliche Lösungen nur unabhängige Variable mit ebenfalls nichtnegativen Werten enthalten, so dass für jede dieser Lösungen die Ungleichung z\le f gilt.

Im folgenden Beispielsystem,

\begin{matrix}
z   & = &~~ ~0 &- ~3x_1 &+ ~~\mathbf{x_2}
\\[2pt]
x_3 & = &~~ ~3 &- ~~x_1 &- ~~x_2
\\[2pt]
x_4 & = &~~ ~8 &+ ~2x_1 &- ~4x_2
\\[2pt]
x_5 & = &- ~\mathbf{1} &+ ~3x_1 &+ ~~x_2 \,,
\end{matrix}

werden die Optimumbedingungen an zwei Stellen verletzt, da b_5=-1<0 und d_2=+1>0 ist. Zum ersten würde die Versuchslösung x_1=x_2=0 den negativen Wert x_5=-1 enthalten, und zum zweiten könnte dessen Zielvariablenwert z=-3x_1+x_2 bei Lösungen mit x_2>0 unter Umständen erhöht werden.

Austausch der Basisvariablen[Bearbeiten]

Falls die Optimumbedingungen nicht erfüllt sind, was in der Regel der Fall sein wird, lässt sich das obige lineare Gleichungssystem aber auch andersartig ausdrücken, indem man an Stelle von \{x_{n+1},\ldots,x_{n+m}\} eine andere, gleich große Teilmenge der n+m Unbekannten auswählt und diese freilegt. Es sei \omega eine Umstellung der Unbekannten, also eine Indexfunktion, die

\{\omega(1),\ldots,\omega(n+m)\} = \{1,\ldots,n+m\}

erfüllt, und es sei \pi = \bigl(D(\pi),~B(\pi)\bigr) eine Aufteilung der Variablen

D(\pi) = \{\omega(1),\ldots,\omega(n)\},\quad B(\pi) = \{\omega(n+1),\ldots,\omega(n+m)\}

in neue unabhängige Variablen x_j mit j\in D(\pi) und neue Basisvariablen x_i mit i\in B(\pi). Anhand dieser Aufteilung wird das Gleichungssystem nun umgewandelt zu

\begin{matrix}
& & z    & = &  f^\pi    & + &  \sum_{j\in D(\pi)}\, d^\pi_j\, x_j
\\[6pt] \forall~ i\in B(\pi)
& & x_i  & = &  b^\pi_i  & + &  \sum_{j\in D(\pi)}\, G^\pi_{i,j}\, x_j 
\end{matrix}

\begin{matrix}
x_1\ge0,\; \ldots,\; x_{n+m}\ge0,\quad  \max~z \,,
\end{matrix}

wobei zu beachten ist, dass Einträge wie G^\pi_{i,j} nur für Indexpaare mit i\in B(\pi) und j\in D(\pi) definiert sind. Die Einträge des so umgewandelten Gleichungssystems lassen sich nun erneut auf die Optimumbedingungen überprüfen,

  • b^\pi_i\ge0   für alle   i\in B(\pi)    (Zulässigkeit)   und
  • d^\pi_j\le0   für alle   j\in D(\pi)    (Zielbeschränkung),

was wiederum unter Umständen zu einer Lösung der Aufgabe führt.

Ein Standardergebnis der linearen Optimierung sagt aus, dass für jede lösbare Aufgabe ein Satz Basisvariablen existiert, der zu einer Lösung führt. Bei erfüllten Optimumbedingungen bilden die Basisvariablen eine sogenannte Optimalbasis des Systems.

Pivots und Pivotelemente[Bearbeiten]

Jedes nichtverschwindende G^\pi_{r,s}\ne0 des obigen Gleichungssystems, dem Pivotsystem, nennt sich Pivotelement und erlaubt es, die unabhängige Variable x_s an Stelle der Basisvariablen x_r freizulegen, um so weiter nach einer Lösung zu suchen. Das ist die Vorgehensweise eines allgemeinen Pivotverfahrens, wobei aber nicht irgendwelche Pivotelemente gewählt werden, sondern nur sogenannte zulässige Pivots (x_r,\,x_s), die Folgendes erfüllen müssen:

  • Entweder gilt gleichzeitig b^\pi_r<0 und G^\pi_{r,s}>0    (Zulässigkeitspivot),
  • oder es gilt gleichzeitig d^\pi_s>0 und G^\pi_{r,s}<0    (Zielfortschrittspivot).

Im obigen Beispielsystem,

\begin{matrix}
z   & = &~~ ~0 &- ~3x_1 &+ ~~~\mathbf{x_2}
\\[2pt]
x_3 & = &~~ ~3 &- ~~x_1 &- ~~~\underline{\mathbf{x_2}}
\\[2pt]
x_4 & = &~~ ~8 &+ ~2x_1 &- ~\underline{\mathbf{4x_2}}
\\[2pt]
x_5 & = &- ~\mathbf{1} &+ ~\underline{\mathbf{3x_1}} &+ ~~~\underline{\mathbf{x_2}} \,,
\end{matrix}

sind wegen der Optimalitätsverletzung b_5<0 Pivotelement G_{5,1}=+3>0 mit Pivot (x_5,\,x_1), und Pivotelement G_{5,2}=+1>0 mit Pivot (x_5,\,x_2) zulässig. Wegen der Optimalitätsverletzung d_2>0 sind aber ebenfalls Pivotelement G_{3,2}=-1<0 mit Pivot (x_3,\,x_2), und Pivotelement G_{4,2}=-4<0 mit Pivot (x_4,\,x_2) zulässig.

Die Beschränkung auf zulässige Pivots verhindert, dass derselbe Pivot zweimal hintereinander ausgewählt wird. Die Regeln, nach denen in jedem Schritt eines dieser zulässigen Pivotelemente ausgewählt wird, hängen vom jeweiligen Verfahren ab; ein Mindestanspruch ist dabei natürlich, dass das Verfahren nach endlich vielen Schritten anhält, was bei ungeeigneter Auswahl von zulässigen Pivots nicht der Fall ist. Fukuda & Terlaky haben 1999 bewiesen, dass für jede lösbare Aufgabe und für jede Ausgangsbasis eine Folge von maximal n+m zulässigen Pivots existiert, die zu einer Optimalbasis führt.[4] Leider liefert ihr Beweis keine Vorgehensweise, um diese Pivots in jedem Optimierungsschritt auch zu finden.

Wie aus der Definition zu ersehen ist, haben Optimalbasen keine zulässigen Pivots, das Verfahren kann in so einem Fall gar nicht fortgeführt werden. Anderseits kann anhand von Argumenten wie im obigen Abschnitt leicht gezeigt werden, dass eine nichtoptimale Basis ohne zulässige Pivots immer zu einer Aufgabe gehört, die keine Lösung hat; entweder, weil das System der Gleichungen und Ungleichungen überhaupt keine Lösung hat (unzulässige Aufgabe), oder, weil sich Lösungen mit beliebig großem z finden lassen (unbeschränkte Aufgabe).

Beispiele[Bearbeiten]

Eine direkte Umsetzung[Bearbeiten]

Um Rundungsfehler zu vermeiden, arbeiten wir im Folgenden mit Bruchzahlen und wählen einen gemeinsamen Nenner für sämtliche Einträge. Um in jedem Schritt einen gemeinsamen Nenner für das Gesamtsystem zu finden, müssen wir die Einträge nicht zusätzlich untersuchen. Falls das Startsystem ganzzahlig ist (was sich normalerweise durch Erweiterung erreichen lässt), gilt die Regel:

  • Der Zähler des gewählten Pivotelements ist ein gemeinsamer Nenner für das darauffolgende System.

Wenn die Einträge des Folgesystems mit diesem gemeinsamen Nenner multipliziert werden, erhält man ganzzahlige Werte. Bei der Aufstellung des Folgesystems veraltet der gemeinsame Nenner des Vorgängersystems, weshalb sämtliche Einträge des Folgesystems ungeprüft durch diesen veralteten Nenner gekürzt werden können.

Eine Tabelle mit den Einträgen eines Pivotsystems wird oftmals Tableau genannt. Das folgende Schema zeigt an, wie sich die Einträge der Pivotsysteme von einem Schritt auf den nächsten verändern:

\begin{matrix}
\delta\,x_i &\!=\!& (~~\alpha) &\!\!\!x_j &\!+\!& (~~\sigma)          &\!\!\!x_s      \\[6pt]
\delta\,x_r &\!=\!& (~~\zeta)  &\!\!\!x_j &\!+\!& (~~p)               &\!\!\!x_s
\end{matrix}

  {x_r\leftrightarrow x_s}  

\begin{matrix}
p\,x_i &\!=\!& (\textstyle\frac{\alpha p\,-\,\zeta\sigma}{\delta}) &\!\!\!x_j   &\!+\!\!& (~\sigma) &\!\!\!x_r \\[6pt]
p\,x_s &\!=\!   & (~ -\zeta~) &\!\!\!x_j &\!+\!\!   & (~\delta) &\!\!\!x_r \\
\end{matrix}

Das Zeichen \delta\, steht hier für den gemeinsamen Nenner des Gleichungssystems, das Zeichen p\, für den Zähler des Pivotelements, \zeta\, für einen sonstigen Eintrag der Pivotzeile, \sigma\, für einen sonstigen Eintrag der Pivotspalte, und \alpha\, für einen beliebigen Eintrag abseits von Pivotzeile und Pivotspalte. Einträge der Zielbeitragszeile (x_i\!=\!z\,) und der Basiswertspalte (x_j\!=\!1\,) werden nach denselben Regeln umgewandelt.

Die Bilder zu den Schritten in den folgenden Beispielen zeigen alle dasselbe Gleichungssystem in verschiedenen orthogonalen Koordinaten; dabei gilt:

  • Die grün umrandete Fläche ist der zulässige Bereich, in dem alle Variablen nichtnegative Werte haben.
  • Koordinatenachsen entsprechen den Gleichungen x_k=0 von unabhängigen Variablen; sonstige Geraden beschreiben freigelegte Variablen.
  • Schnittpunkte zulässiger Pivots sind rot markiert; der schwarzumrandete Schnittpunkt zeigt den ausgewählten Pivot.
  • Die gelbe Fläche wird im nächsten Schritt zum nichtnegativen Quadranten.

Eine erfolgssichere Pivotauswahlregel[Bearbeiten]

Wir wählen vorerst ein Beispiel ohne Zielvariable, das heißt, mit z = 0 + 0\,x_1 + 0\,x_2. In so einem Fall wird keine der Variablen maximiert; es werden nur beliebige (nichtnegative) Werte für die Unbekannten x_1\ge0,\ldots,x_{n+m}\ge0 gesucht, die ein vorgegebenes Gleichungssystem erfüllen. In jedem Schritt wollen wir dann den zulässigen Pivot (x_r,\,x_s) nach folgender Regel wählen:

  1. Wähle r=\min\{i\in B(\pi)~|~b^\pi_i<0\},
  2. danach wähle s=\min\{j\in D(\pi)~|~G^\pi_{r,j}>0\}.

Diese (nicht besonders effiziente) Auswahlregel fällt wegen z=0 mit der weiter unten angegebenen Kleinster-Index-Pivotauswahl zusammen; es lässt sich beweisen, dass diese Auswahl bei jeder lösbaren Aufgabe mit z=0 zu einer Optimalbasis führt.[5]

Wir suchen nun Werte für die Unbekannten x_1\ge0,\ldots,x_5\ge0, die das Gleichungssystem

\begin{matrix}
x_3 & = &( &-  ~\mathbf{2} &- ~7x_1 &+ ~\underline{\mathbf{2x_2}} &)~/~1
\\[2pt]
x_4 & = &( &-  ~4 &- ~5x_1 &+ ~2x_2 &)~/~1
\\[2pt]
x_5 & = &( &~~ ~9 &+ ~2x_1 &- ~3x_2 &)~/~1
\end{matrix}

erfüllen. Die zulässigen Pivots im obigen Gleichungssystem sind (x_3,\,x_2) und (x_4,\,x_2); aufgrund der obigen Auswahlregel legen wir die unabhängige Variable x_2 an Stelle der Basisvariablen x_3 frei:

(Skalierbare animierte Darstellung eines Pivotverfahren-Schrittes)
Basis 0 zu Basis 1   (skalierbar und von Firefox animiert bei 2-mal anklicken und gedrückt halten)

Wir erhalten nun das folgende, umgewandelte Gleichungssystem:

\begin{matrix}
x_2 & = &( &~~ ~2 &+ ~~7x_1 &+ ~~~~x_3 &)~/~2
\\[2pt]
x_4 & = &( &-  ~\mathbf{4} &+ ~~\underline{\mathbf{4x_1}} &+ ~~~2x_3 &)~/~2
\\[2pt]
x_5 & = &( &~~ 12 &- ~17x_1 &- ~~~3x_3 &)~/~2
\end{matrix}

Im neuen System sind die zulässigen Pivots (x_4,\,x_1) und (x_4,\,x_3); dieses Mal legen wir legen wir x_1 an Stelle von x_4 frei:

(Skalierbare animierte Darstellung eines Pivotverfahren-Schrittes)
Basis 1 zu Basis 2

Wir erhalten nun das folgende System:

\begin{matrix}
x_2 & = &( &~~ 18 &+ ~~7x_4 &- ~~5x_3 &)~/~4
\\[2pt]
x_1 & = &( &~~ ~4 &+ ~~2x_4 &- ~~2x_3 &)~/~4
\\[2pt]
x_5 & = &( &-  \mathbf{10} &- ~17x_4 &+ ~\underline{\mathbf{11x_3}} &)~/~4
\end{matrix}

Der einzige zulässige Pivot hier ist (x_5,\,x_3); deshalb können wir nur x_3 an Stelle von x_5 freilegen:

(Skalierbare animierte Darstellung eines Pivotverfahren-Schrittes)
Basis 2 zu Basis 3

Nun erhalten wir

\begin{matrix}
x_2 & = &( &~~ 37 &- ~~2x_4 &- ~~~5x_5 &)~/~11
\\[2pt]
x_1 & = &( &~~ ~6 &- ~~3x_4 &- ~~~2x_5 &)~/~11
\\[2pt]
x_3 & = &( &~~ 10 &+ ~17x_4 &+ ~~~4x_5 &)~/~11
\end{matrix}

Dieses System erfüllt die Optimalitätsbedingungen und hat dem entsprechend auch keine zulässigen Pivots. Indem wir sämtliche unabhängige Variablen auf Null setzen, erhalten wir die folgende Lösung:

x_1=6/11=0.55, x_2=37/11=3.36, x_3=10/11=0.91, x_4=0, x_5=0 \,.

Eine kreislaufanfällige Pivotauswahlregel[Bearbeiten]

Die Reihenfolge, in der Variable und Gleichungen eines Pivotsystems aufgelistet werden, ist grundsätzlich willkürlich. Dennoch wurden die ersten Pivotauswahl-Strategien, die Variablen und Gleichungen unabhängig von deren Darstellung im Pivotsystem behandeln (und dazu noch leicht umsetzbar waren), erst 1977 von Bland vorgestellt.[6] In der Anfangszeit der Pivotverfahren (1950-1970), als noch nicht streng zwischen Algorithmen und Datenstrukturen unterschieden wurde, hat man Pivotauswahl-Strategien eher anhand von Datenstrukturen (sogenannten Tableaus) beschrieben, und bei dieser Art Strategien konnte die Endlichkeit des Verfahrens ohne Zusatzberechnungen meist nicht gewährleistet werden. Es folgt ein Beispiel einer solchen ungeeigneten Pivotauswahl.

Es sei wieder z = 0 + 0\,x_1 + 0\,x_2. Bei ungeeigneter Pivotwahl kann ein Pivotverfahren in einen unendlichen Kreislauf (eine Endlosschleife) geraten, so wie bei folgender Regel, die dem weitverwendeten dualen Simplexverfahren nachempfunden ist:

  1. Wähle das kleinste k\!\in\!\{n+1,\ldots,n+m\} mit b^\pi_{\omega(k)}=\min^\,_i\{b^\pi_{\omega(i)}\}<0,
  2. danach wähle das kleinste l\!\in\!\{1,\ldots,n\} mit G^\pi_{\omega(k),\omega(l)}>0.

Der Pivot soll dann (x_r,\,x_s) = (x_{\omega(k)},\,x_{\omega(l)}) sein.

Wir starten mit dem System:

\begin{matrix}
x_3 & = &(&-  ~3 &-~ 3x_1 &+~ ~x_2 &)~/~1
\\[2pt]
x_4 & = &(&-  ~\mathbf{4} &-~ 7x_1 &+~ \underline{\mathbf{2x_2}} &)~/~1
\\[2pt]
x_5 & = &(&~~ ~2 &+~ 2x_1 &-~ ~x_2 &)~/~1
\\[2pt]
x_6 & = &(&~~ ~9 &+~ 7x_1 &-~ 3x_2 &)~/~1
\end{matrix}

Wir wählen x_4 und legen an Stelle dessen x_2 frei (nach der kreissicheren Regel im vorherigen Beispiel hätten wir x_3 und x_2 gewählt). Wir erhalten das System:

\begin{matrix}
x_3 & = &(&-  ~\mathbf{2} &+~ ~\underline{\mathbf{x_1}} &+~ ~x_4 &)~/~2
\\[2pt]
x_2 & = &(&~~ ~4 &+~ 7x_1 &+~ ~x_4 &)~/~2
\\[2pt]
x_5 & = &(&~~ ~0 &-~ 3x_1 &-~ ~x_4 &)~/~2
\\[2pt]
x_6 & = &(&~~ ~6 &-~ 7x_1 &-~ 3x_4 &)~/~2
\end{matrix}

Wir wählen x_3, legen an Stelle dessen x_1 frei, und erhalten:

\begin{matrix}
x_1 & = &(&~~ ~2 &+~ 2x_3 &-~ ~x_4 &)~/~1
\\[2pt]
x_2 & = &(&~~ ~9 &+~ 7x_3 &-~ 3x_4 &)~/~1
\\[2pt]
x_5 & = &(&-  ~3 &-~ 3x_3 &+~ ~x_4 &)~/~1
\\[2pt]
x_6 & = &(&-  ~\mathbf{4} &-~ 7x_3 &+~ \underline{\mathbf{2x_4}} &)~/~1
\end{matrix}

Aber dieses Gleichungssystem ist – abgesehen von der Benennung der Veränderlichen – identisch mit dem Startsystem. Die Zahleneinträge des Systems wiederholen sich alle 2 Schritte, nach 6 Schritten wiederholen sich die Gleichungen des Systems in umgestellter Form, und nach insgesamt 12 Schritten wiederholt sich das Startsystem genau, mit den Gleichungen und Unbekannten am ursprünglichen Ort. Das Gesamtsystem von Gleichungen und Ungleichungen hat in Wirklichkeit gar keine Lösung, doch kann das Pivotverfahren mit der oberen Pivotwahl das nicht herausfinden.

Dualität[Bearbeiten]

Duale Aufgabe[Bearbeiten]

Jeder linearen Optimierungsaufgabe, welche in diesem Zusammenhang auch Primalaufgabe genannt wird, lässt sich, von der obigen Buchform abhängig, eine zweite Optimierungsaufgabe zuordnen; die Koeffizientenmatrix dieser sogenannten dualen Aufgabe ist die negative Transponierte der Koeffizientenmatrix der ursprünglichen Aufgabe:

\begin{matrix}
w       & = & -\;f       & - & b_1\,y_{n+1}     & - & \cdots & - &  b_m\,y_{n+m}
\\[3pt]
y_1     & = & -\;d_1     & - & G_{n+1,1}\,y_{n+1} & - & \cdots & - & G_{n+m,1}\,y_{n+m}
\\
\vdots  &   & \vdots   &   &  \vdots          &   &        &   &  \vdots
\\
y_n     & = & -\;d_n     & - & G_{n+1,n}\,y_{n+1} & - & \cdots & - & G_{n+m,n}\,y_{n+m}
\end{matrix}

\begin{matrix}
y_1\ge0,\; \ldots,\; y_{m+n}\ge0,\quad \max~w
\end{matrix}

In kompakter Form wird das zu:

\begin{matrix}
& & w    & = &  (-f)    & + &  \sum_{i\in B}\, (-b_i)\, y_i
\\[6pt] \forall~ j\in D
& & y_j  & = &  (-d_j)  & + &  \sum_{i\in B}\, (-G_{i,j})\, y_i
\end{matrix}

\begin{matrix}
y_1\ge0,\; \ldots,\; y_{m+n}\ge0,\quad \max~w
\end{matrix}

(Vorsicht: Bei der Herleitung über diese Formulierung dürfen \max\,z,\;\max\,w nicht durch \min\,z,\;\min\,w ersetzt werden!)

Offenbar führt die duale Umwandlung einer dualen Aufgabe wieder zur ursprünglichen Aufgabe; das ist aber nur dann so leicht ersichtlich, wenn die Aufgabe in der hier verwendeten Form ist.

Schrittweise Umwandlung[Bearbeiten]

Die obige Beziehung der Koeffizienten zwischen Primalaufgabe und Dualaufgabe gilt nicht etwa nur für die Ausgangsbasis, sondern bleibt erhalten, solange die Basisvariablen nach denselben Pivots umgewandelt werden. Es gilt

\begin{matrix}
& & w    & = &  (-f^\pi)    & + &  \sum_{i\in B(\pi)}\, (-b^\pi_i)\, y_i
\\[6pt] \forall~ j\in D(\pi)
& & y_j  & = &  (-d^\pi_j)  & + &  \sum_{i\in B(\pi)}\, (-G^\pi_{i,j})\, y_i
\end{matrix}

\begin{matrix}
y_1\ge0, \ldots ,y_{n+m}\ge0,\quad  \max~w \,.
\end{matrix}

Diese Dualitätsbeziehung lässt sich am leichtesten an einem Pivotsystem betrachten, das ausschließlich zwei unabhängige Unbekannte und zwei freigelegte Unbekannte enthält. Wir erhalten dasselbe System, wenn wir zuerst zwei der Unbekannten austauschen und danach die duale Aufgabe herleiten, oder wenn wir diese Schritte in umgekehrter Reihenfolge tun; das folgende kommutative Diagramm stellt diesen Zusammenhang dar:

\begin{matrix}
\delta\,x_i &\!=\!& (~~\alpha) &\!\!\!x_j &\!+\!& (~~\sigma)          &\!\!\!x_s      \\[6pt]
\delta\,x_r &\!=\!& (~~\zeta)  &\!\!\!x_j &\!+\!& (~~p)               &\!\!\!x_s
\end{matrix}

  {x_r\leftrightarrow x_s}  

\begin{matrix}
p\,x_i &\!=\!& (\textstyle\frac{\alpha p\,-\,\zeta\sigma}{\delta}) &\!\!\!x_j   &\!+\!\!& (~\sigma) &\!\!\!x_r \\[6pt]
p\,x_s &\!=\!   & (~ -\zeta~) &\!\!\!x_j &\!+\!\!   & (~\delta) &\!\!\!x_r \\
\end{matrix}

-\,[\cdots]^{\,T} -\,[\cdots]^{\,T}

\begin{matrix}
\delta\,y_j &\!=\!& (-\alpha) &\!\!\!y_i &\!+\!& (-\zeta) &\!\!\!y_r  \\[6pt]
\delta\,y_s &\!=\!& (-\sigma) &\!\!\!y_i &\!+\!& (-p)     &\!\!\!y_r  \\
\end{matrix}

{y_s\leftrightarrow y_r}

\begin{matrix}
p\,y_j &\!=\!& (\textstyle\frac{\zeta\sigma\,-\,\alpha p}{\delta}) &\!\!\!y_i &\!+\!\!& (~~\zeta) &\!\!\!y_s \\[6pt]
p\,y_r &\!=\!   & (~-\sigma~) &\!\!\!y_i   &\!+\!\!& (-\delta) &\!\!\!y_s \\
\end{matrix}

Aus der Dualbeziehung folgt, dass ein Optimalsystem für die Primalaufgabe auch ein Optimalsystem für die duale Aufgabe liefert.

Zur Aufgabe im ersten Rechenbeispiel gehört folgende duale Aufgabe (die Nullen stammen von z=0+0x_1+0x_2\,):

\begin{matrix}
~w~ & = &( & 0 &+ ~~\mathbf{2y_3} &+ ~~4y_4 &- ~~9y_5 &)~/~1
\\[2pt]
y_1 & = &( & 0 &+ ~~7y_3 &+ ~~5y_4 &- ~~2y_5 &)~/~1
\\[2pt]
y_2 & = &( & 0 &- ~~\underline{\mathbf{2y_3}} &- ~~2y_4 &+ ~~3y_5 &)~/~1
\end{matrix}

\begin{matrix}
y_1\ge0,\ y_2\ge0,\ y_3\ge0,\ y_4\ge0,\ y_5\ge0,\ \max~w
\end{matrix}

Die Primalaufgabe hatte eine implizite Zielfunktion z=0; sämtliche Lösungen dieser Aufgabe, und unter anderen auch die Optimallösung, haben dann Zielwert Null. Der Optimalwert der dualen Aufgabe ist nun das Negative dieses Wertes: der größtmögliche Wert für deren Zielvariable ist also w=-z=0. Das ist derselbe Wert, den auch schon die Anfangslösung der dualen Aufgabe hatte, doch war das aus dem ersten Gleichungssystem nicht ersichtlich und ist selbstverständlich nicht immer der Fall.

Lösungspaare[Bearbeiten]

Eine theoretisch bedeutsame Folge der Dualitätstheorie ist: Wir brauchen nicht unbedingt einen Maximierungs-Algorithmus, um lineare Optimierungsprobleme zu lösen; es genügt dazu jeder Algorithmus, der Systeme linearer Ungleichungen löst. Aus der Dualitätsbeziehung folgt nämlich, dass jede Optimalbasis der ursprünglichen Aufgabe auch unmittelbar eine Optimalbasis für die duale Aufgabe liefert; der optimale Wert der Zielvariable w ist das Negative des Optimalwerts von z. Für optimale Lösungspaare beider Aufgaben gilt also

z+w = (\max z)\!+\!(\max w) = (\max z)\!+\!(-\max z) = 0 \,,

für zulässige, aber nicht optimale Lösungspaare, gilt dagegen

z+w < (\max z)\!+\!(\max w) = 0 \,.

Daraus folgt, dass die optimalen Lösungen beider Aufgaben genau die Lösungen des folgenden Ungleichungssystems sind,

x_1\ge0, \ldots ,x_{n+m}\ge0, \quad y_1\ge0, \ldots ,y_{m+n}\ge0, \quad z+w\ge0 \,,

wobei die x_{n+1}, \ldots ,x_{n+m}, y_1, \ldots ,y_n, z, w natürlich durch die entsprechenden linearen Ausdrücke ersetzt werden müssen. In der Praxis ist so ein Vorgehen allerdings nicht zu empfehlen.

Spezielle Pivotverfahren[Bearbeiten]

Die einfachsten aller Pivotverfahren gehören zu den Criss-Cross-Verfahren[5], die in den 80er Jahren für Aufgabenstellungen im Kontext orientierter Matroide entwickelt wurden. Die wesentlich komplexeren Simplexverfahren[3][1] wurden aber bereits 1947 von George Dantzig für die Lösung linearer Optimierungsprobleme veröffentlicht und haben danach dank ihrer weiten Verbreitung die Suche nach Criss-Cross-Verfahren maßgeblich motiviert. Weitere Pivotverfahren wurden für das lineare Komplementaritätsproblem mit suffizienten Matrizen (einschließlich quadratischer Programmierung) und für linear-fraktionale Optimierungsprobleme entwickelt.

Bei der Ausarbeitung verschiedener Pivotverfahren geht es in der Hauptsache darum, die Anzahl der Pivotschritte und damit auch die Laufzeit des Verfahrens gering zu halten. Während die derzeit bekannten Simplexverfahren alle eine überpolynomial beschränkte Laufzeit beanspruchen – das ist eine Laufzeit, die sich nicht durch ein Polynom in der Datenspeichergröße beschränken lässt – sind Laufzeitschranken für die Criss-Cross-Verfahren ein (bis 2010) noch offenes Forschungsthema.[7] Zusammenfassend lässt sich darüber sagen, dass Criss-Cross-Verfahren mehr Freiheitsgrade aufweisen als Simplexverfahren, und dass ein Criss-Cross-Verfahren genau aus diesem Grund bei einer guten Pivotauswahl schneller[4] und bei einer schlechten Pivotauswahl langsamer[8] als Simplexverfahren sein kann.

Primale Simplexverfahren[Bearbeiten]

Hauptartikel: Simplex-Verfahren

Primale Simplexverfahren (meist nur Simplexverfahren genannt) gehen von einer sogenannten zulässigen Basis mit b^\pi_i\ge0 für alle i\in B(\pi) aus und untersuchen ausschließlich zulässige Basen, bis eine Optimalbasis gefunden wird. Eine wichtige Eigenschaft der primalen Simplexverfahren ist, dass der Wert der Zielvariablen, also f^\pi, mit jedem Schritt monoton anwächst; würde er streng monoton anwachsen, wäre die Endlichkeit des Verfahrens gesichert. Ein primales Simplexverfahren muss seine Pivots wie folgt wählen:

  1. Wähle ein beliebiges s\in D(\pi), das d^\pi_s>0 erfüllt. Zum Beispiel, suche das kleinste s\in D(\pi) mit dieser Eigenschaft (Bland-Regel[6]).
  2. Wähle ein beliebiges r\in B(\pi), das b^\pi_r/(-G^\pi_{r,s})=\min{}_{i\in B(\pi)}\{b^\pi_i/(-G^\pi_{i,s})~|~G^\pi_{i,s}<0\} erfüllt. Zum Beispiel, suche das kleinste r\in B(\pi) mit dieser Eigenschaft (Bland-Regel).

Um eine zulässige Ausgangsbasis zu erhalten, muss in einer sogenannten Phase 1 eine Hilfsaufgabe gelöst werden.

Ein Standardergebnis der linearen Optimierung besagt, dass für jede lösbare Aufgabe und für jede zulässige Basis eine Folge zulässiger Pivots existiert, die über ausschließlich zulässige Basen zu einer Optimalbasis führt; unbekannt ist dagegen, ob es eine Folge dieser Art gibt, deren Länge sich polynomial in der Speichergröße der Daten beschränken lässt.

Duale Simplexverfahren[Bearbeiten]

Duale Simplexverfahren sind Pivotverfahren, die von einer sogenannten dual-zulässigen Basis mit d^\pi_j\le0 für alle j\in D(\pi) ausgehen und in ihrer Suche nach einer Optimalbasis ausschließlich dual-zulässige Basen untersuchen; der Wert der Zielvariablen nimmt dabei monoton ab. Ein duales Simplexverfahren wählt seine Pivots (x_r,\,x_s) wie folgt:

  1. Wähle ein beliebiges r\in B(\pi), das b^\pi_r<0 erfüllt.  Zum Beispiel, suche das kleinste r\in B(\pi) mit dieser Eigenschaft (Bland-Regel [6]).
  2. Wähle ein beliebiges s\in D(\pi), das (-d^\pi_s)/G^\pi_{r,s}=\min{}_{j\in D(\pi)}\{(-d^\pi_j)/G^\pi_{r,j}~|~G^\pi_{r,j}>0\} erfüllt.  Zum Beispiel, suche das kleinste s\in D(\pi) mit dieser Eigenschaft (Bland-Regel).

Duale Simplexverfahren erzeugen die gleichen Pivotfolgen wie die auf die duale Aufgabe angewandten primalen Simplexverfahren und haben deshalb auch grundsätzlich die gleichen Eigenschaften wie die primalen Verfahren. Dass sie für die Lösung vieler angewandter Aufgaben trotzdem den Primalverfahren vorgezogen werden, liegt daran, dass es für viele angewandte Aufgaben leichter ist, eine dual-zulässige Ausgangsbasis zu finden.

Criss-Cross-Verfahren[Bearbeiten]

Criss-Cross-Verfahren (englisch: kreuz und quer) sind allgemeine Pivotverfahren, die von einer beliebigen Basis ausgehen[5]; in der Regel wird dieser Name für kombinatorische Pivotverfahren verwendet, das heißt, für Pivotverfahren, welche nur die Vorzeichen der Systemkoeffizienten und nicht die Koeffizienten selbst für die Pivotauswahl in Betracht ziehen.

Das bekannteste aller Criss-Cross-Verfahren erweitert die Kleinster-Index-Pivotauswahl aus dem ersten Beispiel.[5] Dafür werden die Unbekannten in einer mehr oder weniger festen Reihenfolge angeordnet und die Pivots wie folgt ausgewählt (wie üblich sei das Minimum der leeren Menge unendlich groß):

  1. Suche die Indices r=\min\{i\in B(\pi) ~|~ b^\pi_i<0\} und s=\min\{j\in D(\pi) ~|~ d^\pi_j>0\}.
  2. Falls r<s, ist, wähle Pivot (x_r,\,x_l) mit l=\min\{j\in D(\pi) ~|~ G^\pi_{r,j}>0\}.
  3. Falls s<r, ist, wähle Pivot (x_k,\,x_s) mit k=\min\{i\in B(\pi) ~|~ G^\pi_{i,s}<0\}.

Das lässt natürlich die Frage offen, wie genau die Variablen angeordnet werden sollen.

Beispiel eines Criss-Cross-Verfahrens[Bearbeiten]

Im folgenden Beispiel benutzen wir die obige Kleinster-Index-Pivotauswahl. Es sollen Werte für die Variablen x_1\ge0,\ldots ,x_5\ge0 gefunden werden, die das Gleichungssystem

\begin{matrix}
z   & = &( &~~ ~0 &+ ~\mathbf{3x_1} &+ ~2x_2 &)~/~1
\\[2pt]
x_3 & = &( &~~ ~3 &- ~\underline{\mathbf{2x_1}} &- ~~x_2 &)~/~1
\\[2pt]
x_4 & = &( &~~ ~7 &- ~2x_1 &- ~3x_2 &)~/~1
\\[2pt]
x_5 & = &( &~~ ~4 &- ~3x_1 &- ~~x_2 &)~/~1
\end{matrix}

erfüllen und dabei die zusätzliche Zielvariable z auf ein Maximum bringen. Wir benutzen dazu die oben angeführte Pivotauswahl des kleinsten Index.

In unserem Ausgangssystem sind sämtliche Pivots zulässig; die Auswahlregel schreibt aber vor, dass wir x_1 freilegen und gegen x_3 austauschen:

(Skalierbare animierte Darstellung eines Pivotverfahren-Schrittes)
Basis 0 zu Basis 1   (skalierbar und von Firefox animiert bei 2-mal anklicken und gedrückt halten)

Das führt zum neuen Gleichungssystem:

\begin{matrix}
z   & = &( &~~ ~9 &- ~3x_3 &+ ~~\mathbf{x_2} &)~/~2
\\[2pt]
x_1 & = &( &~~ ~3 &- ~~x_3 &- ~~\underline{\mathbf{x_2}} &)~/~2
\\[2pt]
x_4 & = &( &~~ ~8 &+ ~2x_3 &- ~4x_2 &)~/~2
\\[2pt]
x_5 & = &( &-  ~1 &+ ~3x_3 &+ ~~x_2 &)~/~2
\end{matrix}

Hier sind die Pivots (x_2,\,x_1), (x_2,\,x_4) und (x_5,\,x_2), (x_5,\,x_3) zulässig; anhand der Auswahlregel legen wir x_2 an Stelle von x_1 frei:

(Skalierbare animierte Darstellung eines Pivotverfahren-Schrittes)
Basis 1 zu Basis 2

Wir erhalten das System:

\begin{matrix}
z   & = &( &~~ ~6 &- ~2x_3 &- ~~x_1 &)~/~1
\\[2pt]
x_2 & = &( &~~ ~3 &- ~~x_3 &- ~2x_1 &)~/~1
\\[2pt]
x_4 & = &( &-  ~\mathbf{2} &+ ~3x_3 &+ ~\underline{\mathbf{4x_1}} &)~/~1
\\[2pt]
x_5 & = &( &~~ ~1 &+ ~~x_3 &- ~~x_1 &)~/~1
\end{matrix}

Die zulässigen Pivots dieses Gleichungssystems sind (x_4,\,x_1) und (x_4,\,x_3); wir legen darum x_1 an Stelle von x_4 frei:

(Skalierbare animierte Darstellung eines Pivotverfahren-Schrittes)
Basis 2 zu Basis 3

Nun erhalten wir das System:

\begin{matrix}
z   & = &( &~~ 22 &- ~5x_3 &- ~~x_4 &)~/~4
\\[2pt]
x_2 & = &( &~~ ~8 &+ ~2x_3 &- ~2x_4 &)~/~4
\\[2pt]
x_1 & = &( &~~ ~2 &- ~3x_3 &+ ~~x_4 &)~/~4
\\[2pt]
x_5 & = &( &~~ ~2 &+ ~7x_3 &- ~~x_4 &)~/~4
\end{matrix}

Dieses Gleichungssystem ist optimal; die Werte der Unbekannten für die dazugehörige Lösung sind

z=22/4=5.5, x_1=2/4=0.5, x_2=8/4=2.0, x_3=0, x_4=0, x_5=2/4=0.5 \,.

Große Aufgaben[Bearbeiten]

Eine Implementierung der Pivotverfahren für praktische Aufgaben ist oft weit von trivial entfernt.[9] Die Einträge großer Gleichungssysteme – mit zehntausenden von Variablen – weisen so gut wie immer irgendeine Struktur auf, die es auszunutzen gilt, um die Berechnung derselben schnell und rundungsfehlerarm durchzuführen:

  • Im Startsystem großer Aufgaben (nicht in den umgewandelten Gleichungssystemen) ist die überwältigende Mehrheit der Einträge Null (das System ist dünnbesetzt), was es ermöglicht, einen Großteil der Rechnungen einzusparen, wenn man auch in späteren Umwandlungen teilweise vom Startsystem ausgeht.
  • Bei den Vorgehensweisen mit verzögerter Auswertung (über Umstellung der Startmatrix, teilweise LR-Zerlegung der Koeffizientenmatrix, Produktform inverser Matrizen und anderem mehr) berechnet man einen Eintrag nur und erst dann, wenn man ihn wirklich braucht, um den Pivot zu finden. Dabei muss man aber oft auf Einträge aus älteren Gleichungssystemen zurückgreifen, so dass die Formeln zur Berechnung komplizierter und vielfältiger werden.
  • Für manche Sonderstrukturen, wie zum Beispiel dem Netzflussproblem,[3][10] wurden besonders effiziente Umsetzungen entwickelt, und diese Sonderstrukturen sind oft eingebettet in größere Systeme.

Nichtdestominder kommen auch in der Praxis auch kleinere Aufgaben vor, für welche die oben beschriebene Direktumsetzung durchaus sinnvoll ist.

Literatur[Bearbeiten]

  •  George B. Dantzig: Lineare Programmierung und Erweiterungen (= Ökonometrie und Unternehmensforschung. Bd. 2). Springer, Berlin u. a. 1966 (Originalausgabe: Linear Programming and Extensions. Princeton University Press, Princeton NJ 1963, (PDF; 9,1 MB)).
  •  Vašek Chvátal: Linear Programming. Freeman and Company, New York NY 1983, ISBN 0-7167-1587-2.
  •  Robert J. Vanderbei: Linear Programming. Foundations and Extensions (= International Series in Operations Research & Management Science. Bd. 114). 3. Auflage. Springer, New York NY 2007, ISBN 978-0-387-74387-5 ((PDF; 2,3 MB), Alternativausgabe: Linear Programming; Foundations and Extensions, Kluwer, ISBN 978-0-7923-9804-2).

Einzelnachweise[Bearbeiten]

  1. a b Robert Vanderbei: Linear Programming. Foundations and Extensions (= International Series in Operations Research & Management Science. Bd. 114). 3rd edition. Springer, New York NY 2007, ISBN 978-0-387-74387-5.
  2. Robert Vanderbei: Linear Programming. Foundations and Extensions (= International Series in Operations Research & Management Science. Bd. 114). 3rd edition. Springer, New York NY 2007, ISBN 978-0-387-74387-5, Kapitel 21.4: Simplex Method vs Interior-Point Methods.
  3. a b c Vašek Chvátal: Linear Programming. Freeman and Company, New York NY 1983, ISBN 0-7167-1587-2.
  4. a b Komei Fukuda, Tamás Terlaky: On the Existence of a Short Admissible Pivot Sequences for Feasibility and Linear Optimization Problems. In: Pure Mathematics and Applications. Bd. 10, 1999, ISSN 1218-4586, S. 431–447, ps-Datei.
  5. a b c d Komei Fukuda, Tamás Terlaky: Criss-cross methods: A fresh view on pivot algorithms. In: Mathematical Programming. Bd. 79, Nr. 1/3, 1997, ISSN 0025-5610, S. 369–395, doi:10.1007/BF02614325, ps-Datei.
  6. a b c Robert G. Bland: New finite pivoting rules for the simplex method. In: Mathematics of Operations Research. Bd. 2, Nr. 2, S. 103–107, doi:10.1287/moor.2.2.103.
  7. Shuzhong Zhang: New variants of finite criss-cross pivot algorithms for linear programming. In: European Journal of Operations Research. Bd. 116, Nr. 3, 1999, ISSN 0377-2217, S. 607–614, doi:10.1016/S0377-2217(98)00026-5, (PDF; 164,4 KB).
  8. Komei Fukuda & Bohdan Kaluzny: The criss-cross method can take Ω(nd) pivots. In: Proceedings of the Twentieth Annual Symposium on Computational Geometry (SCG '04). June 9 – 11, 2004, Brooklyn, New York, USA. ACM Press, New York NY 2004, ISBN 1-581-13885-7, S. 401–408, doi:10.1145/997817.997877, ps-Datei.
  9. Robert Vanderbei: Linear Programming. Foundations and Extensions (= International Series in Operations Research & Management Science. Bd. 114). 3rd edition. Springer, New York NY 2007, ISBN 978-0-387-74387-5, Kapitel 8: Implementation Issues.
  10. Robert Vanderbei: Linear Programming. Foundations and Extensions (= International Series in Operations Research & Management Science. Bd. 114). 3rd edition. Springer, New York NY 2007, ISBN 978-0-387-74387-5, Kapitel 13: Network Flow Problems.

Weblinks[Bearbeiten]

  • Interaktives Pivotverfahren-Applet von Robert Vanderbei aus dem Jahr 1997. Das Applet erlaubt dem Benutzer, ein lineares Gleichungssystem mit freigelegten Basisvariablen aufzustellen und anschließend beliebige Variablen dieses Gleichungssystems umzustellen. Obwohl sich das Applet „Simplex Pivot Tool“ nennt, ist es auf ganz allgemeine Pivotverfahren ausgerichtet. Die Koeffizienten können auch rundungsfrei als Bruchzahlen eingesehen werden, werden aber nicht auf einen gemeinsamen Nenner gebracht.
  • Zusatzinfo (Englisch) zum Criss-Cross-Verfahren.