ZU DEN KURSEN!

Operations Research 2 - Verfahren von Gomory

Kursangebot | Operations Research 2 | Verfahren von Gomory

Operations Research 2

Verfahren von Gomory

In diesem Abschnitt soll der Primal-Ganzzahlige Algorithmus von Gomory aufgezeigt werden. Hierbei handelt es sich um ein Schnittebenenverfahren, bei welchem eine ganzzahlige Lösung des linearen Optimierungsproblems resultiert. In diesem Abschnitt soll aufgezeigt werden, wie ein lineares Maximierungsproblem mit Ganzzahligkeitsbedingung mittels primalen Simplexalgorithmus und dem Primal-Ganzzahligen Algorithmus von Gomory gelöst werden kann. Der primale Simplex-Algorithmus sollte bereits aus dem Kurs Operations-Research 1 bekannt sein. Im Kapitel Wiederhoung: Operations Research 1 wird der primale Simplexalgorithmus nochmals wiederholt und es wird ein Beispiel zur Anwendung des primalen Simplexalgorithmus aufgezeigt.

Voraussetzungen:

  1. Das lineare Opmtimierungsproblem muss in Standardform vorliegen (Maximierungsproblem, Kleiner/Gleich-Nebenbedingung, Nichtnegativitätsbedingung)

  2. Die Standardform muss dann in die Normalform überführt werden (Gleichheitsbedingung) mittels Einführung von Schlupfvariablen.

  3. Es müssen nicht-negative Koeffizienten auf der rechten Seite der Nebenbedingungen vorliegen ($b_i \ge 0$, für alle $i$).

  4. Alle Koeffizienten müssen ganzzahlig sein oder mittels Multiplikation von $10$, $100$ usw. ganzzahlig gemacht werden können, d.h. wenn Dezimalzahlen vorliegen, dann endliche und keine unendlichen (endlich = $2,5$ unendlich = $1/3$). Liegen unendliche Dezimalzahlen vor, so ist das Verfahren beendet.

Vorgehensweise

Nachdem das Maximierungsproblem in Normalform vorliegt (Gleichheitsbedingung) wird dieses als nächstes in das Ausgangstableau eingetragen.

Sind negative Werte auf der rechten Seite gegeben wird für das Problem zunächst mittels dualen Simplexalgorithmus eine zulässige Lösung ermittelt (bis rechte Seite nur positive Werte aufweist). Ist eine zulässige Lösung bestimt bzw. liegt bereits eine zulässige Lösung vor, erfolgt die Auswahl der Pivotspalte, der Pivotzeile und des Pivotelements nach dem primalen Simplexalgorithmus. Es wird aber noch kein Simplexschritt durchgeführt, sondern eine Zeile, die Gomory-Zeile, ausgewählt, um den Gomory-Schnitt durchführen zu können. 

Für die Gomory-Zeile sollte die Pivot-Zeile gewählt werden, um den Rechenaufwand zu minimieren. Es wird dann für diese Zeile der Gomory-Schnitt gebildet und in das Tableau eingefügt. 

Für den Gomory-Schnitt werden alle Elemente der Zeile durch das Pivotelement geteilt (außer die Basisvariable) und alle Quotienten abgerundet. Die Basisvariable wird zur Gomory-Variable. Danach wird die Gomory-Zeile als letzte Zeile ins Tableau eingefügt.

Es wird ein Simplexschritt durchgeführt (alle Gomory-Zeilen bleiben davon unberücksichtigt und werden sofort ins neue Tableau übernommen). Dabei wird die Gomory-Variable zur Nichtbasisvariablen und diejenige Nichtbasisvariable in dessen Spalte sich das Pivotelement befindet zur Basisvariablen.

Das Verfahren endet, wenn entweder keine unendliche Dezimalzahlen im Tableau vorliegen oder wenn alle Zielfunktionskoeffizienten positiv sind.

Beispiel: Primal-Ganzzahliger Algorithmus von Gomory

$f(x_1, x_2) = x_1 +  2x_2$    $\rightarrow$   max!

u.d.N.

(1) $6x_1 + 5x_2 \le 30$   

(2) $4x_1 + 9 x_2 \le 36$    


$x_1, x_2 \ge 0$    und ganzzahlig


Es werden als nächstes die Schlupfvariablen eingeführt um statt der Ungleichungen $\le$ Gleichungen $=$ zu erhalten:

$f(x_1, x_2) = x_1 +  2x_2$    $\rightarrow$   max!

u.d.N.

(1) $6x_1 + 5x_2  + y_1          = 30 $   

(2) $4x_1 + 9 x_2          + y_2 = 36$    


$x_1, x_2 \ge 0$    und ganzzahlig


Als nächstes wird das Simplex-Tableau aufgestellt:

Gomory-Verfahren Schnittebenenverfahren Gomory-Schnitt

Da die rechte Seite nur positive Werte aufweist, kann hier die Auswahl der Pivotspalte und -zeile nach dem primalen Simplexalgorithmus erfolgen. Zunächst wird die Pivotspalte bestimmt. Diese wird ausgewählt, indem der kleinste negative Wert der Zielfunktionszeile (unterste Zeile) gewählt wird (hier: $-2$). Danach folgt die Pivotzeile. Dazu werden die Werte der rechten Seite mit den Werte der Pivotspalte dividiert (diese müssen positiv sein). Es wird der kleinste Quotient ausgewählt, in dem obigen Beispiel $36:9 = 4$. Dort wo sich Pivotspalte und Pivotzeile treffen liegt das Pivotelement (hier: $9$). Es wird nun die Gomory-Zeile ausgewählt. Man verwendet hierfür am Besten die Pivotzeile:

$4x_1 + 9x_2 + y_2 = 36$

Es wird dann der Gomory-Schnitt gebildet, indem alle Koeffizienten der Gomory-Zeile durch das Pivotelement ($=8$) geteilt werden. Die Schlupvariable (Basisvariable) wird dabei nicht berücksichtigt und zu $y_2 = y_{g1}$:

$[4/9] x_1 + [9/9] x_2 + y_{g1} = [36/9] $

$[0,44] x_1 + [1] x_2 + y_{g1} = [4] $


Die Quotienten in den eckigen Klammern müssen auf ganze Zahlen abgerundet werden:

$[0] x_1 + [1] x_2 + y_{g1} = [4] $

Die Gomory-Zeile wird nun als letzte Zeile dem obigen Tableau hinzugefügt:

Gomory-Verfahren Schnittebenenverfahren Gomory-Schnitt

Es wird als nächstes der 1. Simplexschritt durchgeführt. Es resultiert das folgende Tableau:

Gomory-Verfahren Schnittebenenverfahren Gomory-Schnitt

Nach dem 1. Simplexschritt resultiert das obige Tableau. Die Gomory-Zeile wird beim Simplexschritt nicht berücksichtigt, sondern einfach in das neue Tableau übernommen. Die alte Nichtbasisvariable $x_2$ in dessen Spalte sich das Pivotelement befand wird dann mit der Gomory-Variable $y_{g1}$ getauscht.

Da in der Zielfunktionszeile noch negative Werte $-1/9$ vorhanden sind, liegt das Optimaltableau noch nicht vor, allerdings sind innerhalb des Tableaus nicht-ganzzahlige Werte, die auch nicht mittels Mulitiplikation ganzzahlig gemacht werden könnten (z.B. $34/9$). Das bedeutet, das Verfahren ist hier bereits beendet, da keine weitere Ganzzahlige Lösung für $x_1$ mehr ermittelt werden kann, ohne das die obere Schranke überschritten wird. Das ganzzahlige Ergebnis ist also:

$x_2 = 4$ und $x_1 = 0$ mit dem Zielfunktionswert:

$f(0,4) = 0 + 2 \cdot 4 = 8$