aktuelle Version des Vorlesungsskripts - ZIB
aktuelle Version des Vorlesungsskripts - ZIB
aktuelle Version des Vorlesungsskripts - ZIB
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
9 Die Grundversion <strong>des</strong> Simplex-Algorithmus<br />
(4) Größter-Fortschritt-Regel: Berechne für je<strong>des</strong> j ∈ S zunächst<br />
λ j bi<br />
0 = min{<br />
aij<br />
Wähle s ∈ S, so dass gs = max{gj | j ∈ S}.<br />
| aij > 0, i = 1, . . . , m} und gj = cjλ j<br />
0 .<br />
(5) Varianten von (4): Es gibt unzählige Varianten von (4), einige davon sind beschrieben<br />
in:<br />
• D. Goldfarb, J. K. Reid: „A practicable steepest-edge simplex algorithm“, Mathematical<br />
Programming 12 (1977), 361–371.<br />
• P. M. S. Harris: „Pivot selection methods for the Devex LP code“, Mathematical<br />
Programming 5 (1973), 1–28.<br />
• H. Crowder, J. M. Hattingh: „Partially normalized pivot selection in linear programming“,<br />
Math. Progr. Study 4 (1975), 12–25. △<br />
Die Regel (9.27)(1) ist die rechentechnisch einfachste. Man durchläuft den Vektor c, sobald<br />
ein Index s mit cs > 0 gefunden ist, hört man auf und geht zum nächsten Schritt. Die<br />
reduzierten Kosten müssen also nicht alle berechnet werden. Dadurch wird viel Aufwand<br />
gespart, aber aufgrund der simplen Wahl von s ist die Gesamtzahl der Pivotoperationen<br />
im Vergleich zu anderen Regeln recht hoch.<br />
Ähnliches gilt für Regel (2). Hier müssen jedoch alle reduzierten Kostenkoeffizienten<br />
berechnet werden. Diese Regel ist jedoch aus einem theoretischen Grund, der noch diskutiert<br />
werden soll, interessant.<br />
Die Regel (3) ist die Regel, die bei einfachen Implementationen (keine ausgeklügelten<br />
Tricks) am häufigsten verwendet wird und bei Problemen bis zu mittleren Größenordnungen<br />
(jeweils bis zu 500 Variablen und Zeilen) recht gute Ergebnisse zeigt. Ihr liegt<br />
die Idee zu Grunde, dass diejenige Variable in die Basis genommen werden sollte, die pro<br />
Einheit den größten Zuwachs in der Zielfunktion bringt.<br />
Es kann natürlich sein, dass die Nichtbasisvariable mit dem größten Zuwachs pro Einheit<br />
nur um sehr wenige Einheiten erhöht werden kann und dass ein Wechsel zu einer<br />
anderen Basis einen wesentlich größeren Gesamtfortschritt bringt. Hierzu ist Regel (4)<br />
geschaffen. Bei ihr wird für jeden möglichen Basiswechsel der tatsächliche Zuwachs gj der<br />
Zielfunktion berechnet, und es wird der Basiswechsel vorgenommen, der den insgesamt<br />
größten Fortschritt bringt. Diese Verbesserung wird natürlich durch einen erheblichen<br />
rechnerischen Mehraufwand erkauft, bei dem es fraglich ist, ob er sich lohnt.<br />
Aufgrund von Erfahrungen in der Praxis kann gesagt werden, dass sich die trivialen<br />
Regeln (1), (2) und (3) für kleinere bis mittlere Problemgrößen bewährt haben, jedoch<br />
für große LPs, Modifizierungen von (9.27)(4), wie sie in den Literaturangaben beschrieben<br />
sind, benutzt werden. Die trivialen Regeln führen im allgemeinen zu insgesamt mehr<br />
Pivotoperationen. Die komplizierten Regeln versuchen die Anzahl der Pivotoperationen<br />
minimal zu gestalten. Hierbei ist ein wesentlich höherer Rechenaufwand erforderlich (viele<br />
Spalten von A sind zu generieren und für jede Spalte ist λ0 zu berechnen), der bei<br />
182