finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB

23.06.2013 Aufrufe

9.5 Die Phase I x ≥ 0. Wir müssen nun noch evtl. Zeilen von A streichen, um die Rangbedingung zu erfüllen. (I.3) Falls B ∩ {n + 1, . . . , n + m} = ∅, so befinden sich in der optimalen Basis keine künstlichen Variablen, d. h. es gilt DB = AB. Da DB = AB regulär ist, gilt rang(A) = m. Falls N ∩ {1, . . . , n} = ∅, so sind alle Basisvariablen Originalvariablen, und wir haben m = n. Dann gilt x = A −1 b und P = (A, b) = {x}. In diesem Falle können wir das Verfahren beenden mit Antwort (b), STOP! Der Vektor x ist die Optimallösung eines jeden LP über P = (A, b). Andernfalls ist m < n und AB ein zulässige Basis von A. Wir setzen I = {1, . . . , m} und schließen das Verfahren mit Antwort (c) ab, STOP! Die beiden abschließenden Schritte sind für den Fall vorgesehen, dass sich noch künstliche Variablen in der Basis befinden, d. h. falls B∩{n+1, . . . , n+m} = ∅. Wir versuchen zunächst, diese künstlichen Variablen aus der Basis zu entfernen. Da alle künstlichen Variablen yn+1, . . . , yn+m Null sind, ist die Basislösung z = (zB, zN), b degeneriert. Sei o. B. d. A. zB = D −1 B z T B = (yp1 , . . . , ypt, xpt+1 , . . . , xpm), d. h. B ∩ {n + 1, . . . , n + m} = {p1, . . . , pt}. Wenn wir also künstliche Variablen aus der Basis entfernen wollen, müssen wir prüfen, ob wir sie aus der Basis „hinauspivo- tisieren“ können, d. h. ob in den Zeilen Di· (i = 1, . . . , t) (D = (drs) = D −1 B DN) von Null verschiedene Pivotelemente vorhanden sind. Da wir ja nur Nichtbasisvariable gegen degenerierte Basisvariable austauschen, also Nullen gegen Nullen tauschen, können wir auch Pivotoperationen auf negativen Elementen zulassen. (I.4) Falls es r ∈ {1, . . . , t} und s ∈ {1, . . . , n} gibt, so dass zqs keine künstliche Variable ist und drs = 0 gilt, dann führe eine Pivotoperation mit dem Pivotelement drs entsprechend Satz (9.12) durch. Wir erhalten dadurch eine neue Basis DB ′, mit einer künstlichen Variablen weniger, setzen B := B ′ und gehen zu (I.3). (I.5) Falls dij = 0 ∀ i ∈ {1, . . . , t} ∀ s ∈ {1, . . . , n}, für die zqs keine künstliche Variable ist, dann hat das Gleichungssystem zB = D −1 B b − D−1 B DNzN bis auf Permutationen der Zeilen und Spalten folgende Form: ⎛ ⎞ ⎡ ⎤ ⎡ zp1 0 ⎜ ⎟ ⎢ ⎥ ⎝ . ⎠ = ⎣. ⎦ − ⎣ 0 0 ⎤ ∗⎦ xN yN zpt und ⎛ ⎞ ⎡ ⎤ ⎡ ⎤ zpt+1 ⎜ ⎟ ⎝ . ⎠ = ⎣∗⎦ − ⎣ ∗ ∗⎦ zpm xN yN 187

9 Die Grundversion des Simplex-Algorithmus (mit yB = (zp1 , . . . , zpt), xB = (zpt+1 , . . . , zpm), zN = (xN, yN)). Setzen wir also die künstlichen Variablen Null, so ist der obere Teil des Gleichungssystems yB = 0 − 0xN unabhängig von der Belegung von xN stets erfüllt, d. h. wir können alle Zeilen D1·, . . . , Dt· streichen. Ist I = {t+1, . . . , m} und J = {j ∈ {1, . . . , n} | zqj künstliche Variable} so gilt ist keine xB = (D −1 B b)I − DIJxN und B = (pt+1, . . . , pm) ist eine zulässige Basis von A ′ := AI· mit rang(A ′ ) = k := m − t. Ist k = n, so gilt wieder P = (A, b) = {x}, und wir enden mit Antwort (b). Andernfalls gilt k < n, und wir beenden das Verfahren mit Antwort (c), STOP! △ Die Korrektheit des Phase-I-Verfahrens (9.38) ist aufgrund der oben gemachten Bemerkungen offensichtlich. Algorithmus (9.38) zeigt auch, dass man bei der Lösung von linearen Programmen im wesentlichen mit der Grundversion des Simplexalgorithmus zur Lösung von Phase II auskommt. Es ist lediglich zusätzlich etwas Buchhaltung (Einführung künstlicher Variablen, Streichen von Spalten und Zeilen) zusätzlich durchzuführen. Außerdem sind u. U. im Schritt (I.4) Pivotoperationen auf negativen Pivotelementen erforderlich. Die Pivotformeln ändern sich dadurch aber nicht. (9.41) Bemerkung. Liegen Probleme mit nicht vorzeichenbeschränkten Variablen vor, so wendet man die Transformationsregeln (2.5) aus Kapitel 2 an, um das Problem in ein LP mit vorzeichenbeschränkten Variablen zu transformieren. △ Zur Auffindung einer Anfangslösung gibt es noch andere Varianten (z. B. die M- Methode), jedoch wird in kommerziellen Codes meist die Zweiphasenmethode verwendet. (9.42) Beispiel (für Phase I). Gegeben sei das folgende lineare Programm in Standardform max x1 − x2 + 2x3 2x1 − 3x2 + x3 = 3 −x1 + 2x2 + x3 = −1 3x1 − 5x2 = 4 x1, x2, x3 ≥ 0 Durch Multiplikation der zweiten Zeile mit −1 machen wir die rechten Seiten nichtnegativ. Es gilt dann 1 T A = (6, −10, 0), 1 T b = 8. Wir stellen nun unser Simplextableau auf, wobei wir künstliche Variablen s1, s2, s3 einführen. Wir fügen dem Simplextableau eine neue oberste Zeile für die künstliche Zielfunktion hinzu. 188

9.5 Die Phase I<br />

x ≥ 0. Wir müssen nun noch evtl. Zeilen von A streichen, um die Rangbedingung<br />

zu erfüllen.<br />

(I.3) Falls B ∩ {n + 1, . . . , n + m} = ∅, so befinden sich in der optimalen Basis keine<br />

künstlichen Variablen, d. h. es gilt DB = AB. Da DB = AB regulär ist, gilt<br />

rang(A) = m.<br />

Falls N ∩ {1, . . . , n} = ∅, so sind alle Basisvariablen Originalvariablen, und wir<br />

haben m = n. Dann gilt x = A −1 b und P = (A, b) = {x}. In diesem Falle können wir<br />

das Verfahren beenden mit Antwort (b), STOP! Der Vektor x ist die Optimallösung<br />

eines jeden LP über P = (A, b). Andernfalls ist m < n und AB ein zulässige Basis<br />

von A. Wir setzen I = {1, . . . , m} und schließen das Verfahren mit Antwort (c) ab,<br />

STOP!<br />

Die beiden abschließenden Schritte sind für den Fall vorgesehen, dass sich noch<br />

künstliche Variablen in der Basis befinden, d. h. falls B∩{n+1, . . . , n+m} = ∅. Wir<br />

versuchen zunächst, diese künstlichen Variablen aus der Basis zu entfernen. Da alle<br />

künstlichen Variablen yn+1, . . . , yn+m Null sind, ist die Basislösung z = (zB, zN),<br />

b degeneriert. Sei o. B. d. A.<br />

zB = D −1<br />

B<br />

z T B = (yp1 , . . . , ypt, xpt+1 , . . . , xpm),<br />

d. h. B ∩ {n + 1, . . . , n + m} = {p1, . . . , pt}. Wenn wir also künstliche Variablen aus<br />

der Basis entfernen wollen, müssen wir prüfen, ob wir sie aus der Basis „hinauspivo-<br />

tisieren“ können, d. h. ob in den Zeilen Di· (i = 1, . . . , t) (D = (drs) = D −1<br />

B DN) von<br />

Null verschiedene Pivotelemente vorhanden sind. Da wir ja nur Nichtbasisvariable<br />

gegen degenerierte Basisvariable austauschen, also Nullen gegen Nullen tauschen,<br />

können wir auch Pivotoperationen auf negativen Elementen zulassen.<br />

(I.4) Falls es r ∈ {1, . . . , t} und s ∈ {1, . . . , n} gibt, so dass zqs keine künstliche Variable<br />

ist und drs = 0 gilt, dann führe eine Pivotoperation mit dem Pivotelement drs<br />

entsprechend Satz (9.12) durch. Wir erhalten dadurch eine neue Basis DB ′, mit<br />

einer künstlichen Variablen weniger, setzen B := B ′ und gehen zu (I.3).<br />

(I.5) Falls dij = 0 ∀ i ∈ {1, . . . , t} ∀ s ∈ {1, . . . , n}, für die zqs keine künstliche Variable<br />

ist, dann hat das Gleichungssystem zB = D −1<br />

B b − D−1<br />

B DNzN bis auf Permutationen<br />

der Zeilen und Spalten folgende Form:<br />

⎛ ⎞ ⎡ ⎤ ⎡<br />

zp1 0<br />

⎜ ⎟ ⎢ ⎥<br />

⎝ . ⎠ = ⎣.<br />

⎦ − ⎣<br />

0<br />

0<br />

⎤<br />

∗⎦<br />

<br />

xN<br />

yN<br />

zpt<br />

und ⎛ ⎞ ⎡ ⎤ ⎡<br />

⎤<br />

zpt+1<br />

⎜ ⎟<br />

⎝ . ⎠ = ⎣∗⎦<br />

− ⎣ ∗ ∗⎦<br />

zpm<br />

xN<br />

yN<br />

<br />

187

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!