Moin, moin und herzlich willkommen zu den Grundlagen des Operations Research.
Mein Name ist Tobias Filczek und ich werde gemeinsam mit Ihnen
die ersten acht der zwölf Übungen dieser Vorlesung durchgehen.
Das Thema der heutigen Übung hier ist der duale simplexe Algorithmus.
Und da fangen wir auch gleich mal an mit Übungsaufgabe 1.
Gegeben ist hier eine Problemstellung,
bei der wir ein Maximierungsproblem mit drei Entscheidungsvariablen haben.
Und dieses Optimierungsproblem unterliegt hier vier Nebenbedingungen.
Zwei größer gleichen Nebenbedingungen und zwei kleiner gleichen Nebenbedingungen.
Und unsere Aufgabe ist es nun,
dieses Problem mit einem geeigneten Simplexverfahren
zu lösen
Und was für ein Lösungsverfahren es sich dabei handelt,
können Sie sich vermutlich ja schon anhand des Namens dieser Übung erschließen.
Ja, bevor wir jetzt hier mit der Lösung anfangen,
schauen wir uns noch mal ganz kurz an,
was denn eigentlich überhaupt nötig ist,
um so ein Optimierungsproblem mit dem Simplex einbauen auszulösen.
Wir müssen zuallererst einmal im ersten Schritt dafür sorgen,
dass wir unser Ausgangsproblem in ein Gleichungssystem transformieren.
Wenn das getan ist, können wir dieses Gleichungssystem ganz einfach
in unser Ausgangstableau überführen. Und nun ist es entscheidend,
ob dieses Ausgangsproblem bereits eine zulässige Lösung darstellt,
oder ob es eine unzulässige Lösung darstellt.
Wir können sich das auch grafisch vorstellen. Wenn wir eine unzulässige Lösung haben,
dann befinden wir uns mit diesem Ausgangstableau einfach in einem Punkt,
der außerhalb des zulässigen Lösungsraumes liegt.
Hinnern Sie sich zurück,
diesen zulässigen Lösungsraum haben wir ja bereits mehrfach jetzt eingezeichnet in
den letzten Übungen und Vorlesungen
Und mit dem dualen simplexen Algorithmus suchen wir jetzt einfach eine Ausgangslösung oder
eine Startlösung, die irgendwo in dem zulässigen Lösungsraum liegt.
Denn nur wenn wir im zulässigen Lösungsraum sind,
können wir dann auch den primaen Symplex-Algorithmus anwenden,
um die Ecken des zulässigen Lösungsraumes abzuschreiten und zur optimalen Lösung zu kommen.
Und das war es dann eigentlich auch schon.
Das ist so die grundlegende Idee dahinter
Fangen wir mal da an mit Schritt eins, der Transformation in ein Gleichungssystem.
Und nun müssen wir zuallererst im Unterschritt dafür sorgen,
dass wir hier die allgemeine Form des Linie-Anatomierungsproblems vorliegen haben.
Das heißt, wir schauen uns einmal unser Ausgangsproblem an und gucken,
ist das nicht vielleicht schon die allgemeine Form des linearen Optimierungsproblems?
Die Zielfunktion ist schon mal super. Das ist eine Maximierung
und das ist ja genau das, was wir hier benötigen.
Aber wenn wir uns die Nebenbedingungen anschauen, dann sehen wir
die erste Nebenbedingung, ist nicht größer gleich, neben Bedingung.
Dass wir hier brauchen, sind aber kleiner Gleichnebenbedingungen.
Und die haben wir in Nebenbedingungen zwei und in Nebenbedingungen der Reihen gegeben.
Die vierte Nebenbedingung ist ebenfalls wieder eine größergleichen Nebenbedingung.
Und die Variablen-Domäne hier sind ebenfalls ideal,
denn unsere drei Entscheidungsvariablen sollen größergleich neu sein. Heißt also,
wir haben hier noch nicht die allgemeine Form des linearen Optimierungsproblems,
wir müssen aber nicht mehr wirklich viel tun,
um die allgemeine Form des linearen Optimierungsproblems sehr herzustellen.
Dann ist nur aus der ersten und aus der vierten Nebenbedingung
eine kleinergleichen Nebenbedingung
Und wie machen wir das? Ja. Eigentlich ganz simpel.
Wir müssen diese erste und die vierte Nebenbedingung einfach mit mal minus eins multiplizieren.
Wenn wir das mit der Ernstnebenbedingung machen, ändern sich ja
die Vorzeichen auf beiden Seiten und es ändert sich die Richtung der Ungleichung.
Also eigentlich super simpel. Bei der vierten Nebenbedingung das Gleiche.
Und wenn Sie sich das jetzt hier rechts anschauen, dann sehen Sie schon,
wir haben jetzt hier die allgemeine Form des linearen Notimierungsproblems erreicht.
Wir haben eine Maximierung und wir haben nur noch kleiner gleich Nebenbedingungen.
Das heißt, wir können jetzt hier zu Schritt zwei
kommen und das Ganze in ein Gleichungssystem für den Siplex-Algorithmus überführen
Und wir gehen wir dabei vor, naja, erinnern sich zurück.
Wir machen zuallererst einmal aus unseren Nebenbedingungen Gleichung und
dann ändern wir noch ein bisschen was an der Zielfunktionsgleichung.
Fangen wir einmal an mit Nebenbedingung eins. Wir benehmen einfach
die Nebenbedingung eins und wir addieren auf der linken Seite der Ungleichung
die Schlupfvariable Y 1, um hier eine gleiche Landraus zu machen.
Denn diese Schlupfvariable, die übernennt ja nun die freien Restkapazitäten
der rechten Seite, wenn die Entscheidungsvariablen,
diese Kapazitäten nicht komplett auslasten
Und bei den Bedingungen 2 das Gleiche. Wir übernehmen Nebenbedingungen 2,
addieren auf der linken Seite eine Schlupfvariable und machen eine Gleichung aus der Ungleichung.
Nebenbedingungen 3, nochmal das Gleiche. Wir übernehmen die Nebenbedingungen 3
, addieren die Schlupfvariable Y3 und machen eine Gleichung draus.
Neben die Nummer 4, sie werden es wahrscheinlich schon erraten,
wir übernehmen die Nebenbedingungen 4,
addieren die Schlupfvariable Y4 und machen eine Gleichung draus.
Also hier wirklich kein Hexenwerk. Und nachdem wir jetzt die
vier Nebenbedingungen zu Gleichung gemacht haben, müssen wir nur noch die Zielfunktion überführen.
Und denken Sie nochmal zurück an die Vorlesungen und die letzten Übungen.
Was brauchen wir hier für eine Zielfunktion? Das Gleichung.
Wir brauchen eine Zielfunktionsgleichung, wo wir auf der rechten Seite an der Null stehen haben.
Und das können wir einfach erreichen, indem wir alles,
was wir auf der rechten Seite der Zielfunktion stehen haben,
auf beiden Seiten der Zielfunktion
ein paar Mal abziehen
Und dann kommen wir darauf, dass unsere Zielfunktionsgleichung minus 25x1,
minus 20x2, minus 15x3 plus F, gleich 0 ist.
Und unsere variablen Domänen hier sind alle ebenfalls größer,
gleich 0. Und damit haben wir hier auch gleich ein Gleichungssystem hergestellt.
Und dieses Gleichungssystem beführen wir jetzt im zweiten Schritt einfach in unser Ausgangstableau.
Und wie groß ist unser Ausgangstableau hier? Naja,
dann müssen wir uns einfach unser Gleichungssystem anschauen,
dass wir aus drei Entscheidungsvariablen und vier Schlüpfer-Hablen besteht.
Dementsprechend ist unser Simplex-Tableau jetzt neun Spalten und sechs Zeilen groß.
Denn jede Entscheidungsvariabl kriegt eine Spalte,
jede Schlupfvariabl, der kriegt eine Spalte,
ganz rechts brauchen wir eine Spalte für IB-Koeffizienten und ganz links brauchen wir eine Spalte,
die uns einfach anzeigt, was denn die aktuellen Basisvariablen sind.
Und sechs Zeilen war ja ganz oben erstmal eine Zeile haben,
die uns anzeigt,
um was für Variablen es sich darunter liegenden Spalte handelt und
dann brauchen wir noch fünf Zeilen für unsere fünf Gleichung hier
Und fangen wir mal an, indem wir hier Nebenbedingungen eins überführen. In Nebenbedingungen eins sagt ja,
wir haben minus einmal X1, minus einmal X2,
minus einmal X3, plus einmal Y1,
ist gleich minus 20. Ganz simpel,
minus eins, minus eins, minus eins, 1,
0,0 minus 20. Das heißt, der Koeffizient in der Spalte,
den wir da jetzt eingetragen haben, zeigt ihn einfach,
wie oft die jeweilige Variable,
die sie ganz oben in der ersten Zeile stehen sehen,
hier in dieser Nebenbedingung
drin steht
So. Mal weiter, mit denen bin ich noch zwei.
Neben Bedingung 3. Und Nebenbedingung 4. Mein Nebenbedingung 4 haben wir vielleicht noch eine ganz,
ganz kleine Schwierigkeit, obwohl es eigentlich auch keine Schwierigkeit ist.
Denn wir haben in Nebenbedingungen 4 jetzt hier keine X3 stehen.
Aber das bedeutet ganz einfach, wie ihr bei den Schlupfvariablen auch,
wenn sie hier in einer der Gleichung nicht vorkommen,
dass wir da einfach eine Null eintragen.
Weil die kommt ja null Mal in der Gleichung vor. Heißt also,
in der vierten Zeile hier, mit der Schlupfvariabel Öpsland 4,
in der Basis haben wir dann minus 1, minus 4,
0, 0, 0, 1 und minus 15 stehen.
Und bei der Zielfunktionszeile, sie erinnern sich zurück,
haben wir jetzt noch das F,
das wir hier nicht in der Simplex Terrier überführen.
Da liegt es aber einfach nur daran,
dass wir hier diese Spalte mit dem F einfach weglassen,
weil die uns
keinen Mehrwert bietet
Normalerweise könnten wir hier ja ein Sydplex Tableau einfach noch
eine weitere Spalte einfügen für unser F. Und dort hätten wir
dann ebenfalls eine Heizwerk da drin stehen.
Fangen wir mal an mit der ersten Phase des dualen Symplex
Algorithmus. Deswegen nehmen wir jetzt dieses Ausgangstableau,
das wir gerade eben bestimmt haben.
Und überlegen,
ob wir hier eine zulässige Ausgangslösung haben
Haben wir eine zulässige Ausgangslösung?
Jetzt müssen wir uns unsere B-Koeffizienten in Errichtenspalte einmal anschauen.
Und dort haben wir ja zwei negative Koeffizienten.
Einmal in der ersten Zeile und einmal in der vierten Zeile.
Das heißt, die aktuelle Lösung hier ist unzulässig.
Wir befinden uns außerhalb des zulässigen Lösungsraumes mit diesem Stadtpunkt.
Und es nimmt jetzt noch weitere Iterationen erforderlich,
um dann vielleicht irgendwann auf eine zulässige Auskunftslösung zu kommen,
mit der wir dann mit dem primalen Simplex Algorithmus die optimale Lösung finden können.
Gibt aber auch Fälle, wo wir schon Glück haben,
wo wir schon mit dem dualen Simplex Algorithmus auf die optimale Lösung kommen.
Aber das können wir uns immer einfach in der Zielfunktionszeile anschauen.
Solange wir in der Zielfunktionszeile unten noch negative Werte stehen haben,
ist die aktuelle Lösung noch nicht optimal
Und was ist hier jetzt das Problem mit den
negativen Koeffizienten in der B-Spalte? Das Problem ist,
dass aktuell die Schlupfvariable Y1 kleiner als 0 ist und die
Schlupfvariable Y4 ist kleiner als 0. Den Y1-1 ist aktuell
minus 20 und Y4 ist minus 15. Denn im Ausgangstableau sind ja unsere drei Entscheidungsvariablen, die hier alle gleich null.
Das heißt, die Schlupfvariable muss komplett die Restkapazitäten der rechten Seite übernehmen.
Und die sehen sie ja einfach in der Spalte mit den B-koeffizienten stehen.
Und da unsere Schlupfvariablen eigentlich größer gleich null sein müssen,
ist das Ganze hier jetzt unzulässig
Also, müssen wir jetzt mit dem dualen Simplex-Algorithmus hier mit
einer Iteration starten und schauen, wo die uns hinführt.
Und wie läuft der duale Simplex-Algorithmus ab? Eigentlich ziemlich ähnlich zum primaen Simplex-Algorithmus,
aber ich denke, sie werden gleich die Feinheit nachsehen.
Denn der Unterschied ist einfach, dass wir anstatt zuerst eine Pyro-Spalte zu bestimmen,
damit anfangen, dass wir eine Pyro-Zeile bestimmen.
Und die Pyro-Zeile ist die Zeile,
die den kleinsten Koeffizienten in der rechten Spalte stehen hat,
der kleiner als neu sein muss.
Macht ja auch keinen Sinn, im Koeffizienten größer als null
zu wählen, weil dann wäre das Ganze nicht unzulässig hier.
Rechts, wenn wir dann nur koeffizient mit größer als null
stehen hätten
Heißt also, hier unsere Pivot-Zeile ist die erste Zeile,
denn dort haben wir eine minus 20 stehen und die ist kleiner als minus 15.
Und nachdem jetzt die Pivot-Zeile hier bestimmt haben,
müssen wir die Pivot-Spalte bestimmen. Denn wir wissen zwar,
Y1 verlässt jetzt gleich die Basis, aber wir wissen noch nicht,
welche Variable gleich die Basis betreten wird.
Also, bei der Pivot-Spalte schauen wir uns jetzt einmal
unsere Zielfunktionszeile an und wir schauen uns die Pivot-Szeile an
Was wir hier benötigen, ist ein negativer Koeffizient in der Pivot-Seile.
Nur wenn wir da in einer Spalte einen negativen Koeffizienten stehen haben,
ist das Ganze auch eine potenzielle Pivot-Spalte.
Das heißt, hier kommt nur die erste,
zweite und dritte Spalte in Frage als neue Pivot-Spalte.
Und in diesen potenziellen Pivot-Spalten müssen wir jetzt einfach unseren aktuellen Zielfunktionskoeffizienten
durch den Koeffizienten in der Pero-Zeile teilen. Heißt also,
minus 25 durch minus eins ist gleich 25. Minus 20,
durch minus eins ist gleich 20 und minus 15 durch minus eins ist gleich 15.
Und nun müssen wir uns anschauen, wo da jetzt
gerade eben der größte Wert herausgekommen ist.
Und das ist ja hier in der ersten Spalte der Fall gewesen,
denn 25 ist größer als 20 und ist auch größer als 15. Das heißt,
wir wissen,
X1 betritt jetzt leicht die Basis und Y1
verlässt die Basis
Und damit haben wir auch unser Pivo-Element bestimmt.
Das ist jetzt aktuell die Minuse 1. Und nun ist
das Vorgehen genau das Gleiche wie im Primaren Symplex-Agromis auch.
Wir nehmen uns ein neues Tableau. Hier jetzt also das
Tableau 1. Und wir müssen jetzt zuallererst einmal dafür sorgen,
dass unser Pivo-Element in diesem neuen Tableau jetzt gleich 1 ist.
Und wie machen wir das? Naja, sie erinnern sich
zurück. Wir müssen jetzt einfach die erste Zeile des Auskonstablos
mit dem Kehrwert des Pivodemenz multiplizieren
Und nun müssen wir nur noch dafür sorgen,
dass alle anderen Koeffizienten der Pivot-Spalte gleich neu sind.
Wir nehmen also unsere neue bestimmte Zeile hier und addieren sie
auf die anderen Zahlen des Ausgangstables oder wir
ziehen diese neue Pivot-Zeile von den anderen Zahlen des Ausgangstables ab.
Und zwar so oft, bis wir überall eine Null als Koeffizient herausbekommen.
Die zweite Zeile des ersten Tables nehmen wir also die zweite Zeile
des Ausgangstables und ziehen zweimal die erste Zeile des ersten Tableaus ab,
sodass es der zweiten Null wird.
Für die dritte Zeile des ersten Tableaus nehmen wir die dritte Zeile
des Ausgangstableaus und ziehen dreimal die erste Zeile des ersten Tableaus ab.
Machst der drei eine Null zu machen
In der vierten Zeile des ersten Tableaus nehmen wir die vierte Zeile des Ausgangstableaus
und addieren dort einmal die erste Zeile des ersten Tableaus.
Um die minus eins zu einer Null zu machen.
Und in der Zielfunktionszeile müssen wir jetzt hier minus 25 zu einer Null machen.
Also was tun wir? Wir nehmen die fünfte Zeile des Ausgangstableaus,
die Zielfunktionszeile und addieren dort einfach 25 Mal die erste Zeile
des ersten Teils rauf
Und, was ist jetzt passiert? X-1 ist jetzt also
in der Basis drin und ansonsten haben wir noch übschlandsweit,
dann 3 und Y 4 und unseren Zielfunktionswerte in der Basis.
Und X-1 hat jetzt einen Wert von 20,
das sehen Sie ja ganz rechts in der Spalte mit den B-Goeffizienten.
Y 2 hat einen Wert von 5, Y 3,
einen Wert von minus 20,
Y 4 einen Wert von 5 und unser aktueller Zielfunktionswert ist 500.
Und ist die aktuelle Lösung jetzt hier zulässig? Also können wir
mit den primalen Symplexalgorithmus weitermachen? Nein. Denn wir haben
ja immer noch einen negativen Koeffizienten in der B-Spalte stehen,
und zwar die minus 20 in der dritten Zeile.
Heißt also, wir müssen noch mindestens einen weiteren Schritt mit
dem dualen Sinn vielleicht zu einfach was durchführen
Wir nehmen also jetzt unser neues Tableau, was wir hier bestimmt haben.
Und gehen wieder zu Schritt eins des dualen Symplex-Algorithmus.
Was ist jetzt hier unsere Pivot-Zeile? Naja, wir haben
jetzt nur noch eine potenzielle Pivot-Zeile. Und das ist die
dritte Zeile. Denn das ist die einzige Zeile,
die jetzt hier noch einen negativen Koeffizienten in der Bespalte hat.
Also, Öbstland bei Hai wird jetzt gleich die Basis verlassen.
Und wer betritt die Basis? Schauen wir uns mal an,
was denn hier unsere potenziellen Kandidaten sind für eine Pivot-Spalte.
Das ist die zweite und die dritte Spalte,
weil nur in der zweiten und in der dritten Spalte
haben wir in der Pivot-Zeile einen negativen Koeffizienten stehen
Wir teilen also 5 durch minus 1 und wir teilen 10
durch minus 2 und bekommen in beiden Fällen auf minus 5. Jetzt
können wir natürlich nicht sagen, welcher dieser beiden Werte größer ist,
dann minus 5 ist gleich minus 5.
Und was machen wir hier? Wir erinnern sich zurück an
die letzte Übung an die Vorlesung.
Wir wählen immer die Spalte oder Silent im kleinsten Index.
Wenn wir hier so einen Fall haben, Moritz 2,
mögliche Optionen haben. Und das ist hier natürlich die Spalte 2,
denn der Index von 2 ist kleiner als
Also, unser neuer Pivotspalte ist die zweite Spalte.
Unser Pivolement ist die minus eins. Und jetzt müssen wir
einfach wieder unser neues Tableau befüllen und zuallererst einmal dafür sorgen,
dass wir unser Pivolement zu einer Eins machen.
Heißt also, wir nehmen die dritte Zeit in des ersten
Tableaus und multiplizieren Sie einfach mit dem Käfer des Pivolements.
Nachdem wir das getan haben,
müssen wir ja nur noch wieder dafür sorgen,
dass alle anderen Koeffizienten in der Pivotspalte
gleich null sind
Und für die erste Zahl wäre es zweiten Tabellos,
bedeutet das, dass wir einfach nur die erste Zeile des
ersten Tabellos nehmen und dort die dritte Zeile des zweiten Tabellos abziehen.
Für die zweite Zeile des zweiten Tabellos bedeutet das,
wir nehmen die zweite Zeile des ersten Tabellos und ziehen dort
ebenfalls einmal die dritte Zeile des zweiten Tabellos ab.
Für die vierte Zeile nehmen wir einfach nur die vierte Zahl
des ersten Tabellos und addieren dort dreimal die dritte Zeile des zweiten Tabellos.
Also wird ja aus der Minusfrei dann null.
Und in der Zielfunktionszeile müssen wir eine 15er0 machen
Heißt also, wir nehmen einfach nur die Zielfunktionszeile des ersten Tablos
und ziehen dort fünfmal die dritte Zeile des zweiten Tablos ab.
Fertig. Und, was hat sich jetzt hier geändert?
Schauen wir mal auf der rechten Seite in die B-Koeffizienten und auf unserer Basisvariablen.
Wir haben jetzt hier X1 in der Basis,
wir haben Y 2 in der Basis,
wir haben X2 in der Basis und wir haben Y 4 in der Basis.
F ist natürlich ebenfalls immer noch eine Basisvariable.
X1 hat jetzt hier einen Wert von Null,
in Bissland 2 hat einen Wert von minus 15. X2 hatten
wir von 20 und Y 4 hat einen Wert von 65.
Der aktuelle Zielfunktionswert hier ist jetzt 400. Und ist das Ganze
jetzt hier bereits zulässig
Nein. Wir haben immer noch einen negativen Koeffizienten in der
B-Spalte stehen. Das ist die minus 15. Das heißt,
wir müssen noch mal einen weiteren Schritt mit dem dualen Symplex-Algorithmus gehen,
um dann vielleicht irgendwann auf eine zulässige Ausgangslösung zu kommen.
Wir nehmen jetzt also unser zweites Tableau hier und gehen wieder
zurück zu Schritt 1 des Dua ein simplexes Algorithmus.
Der Wahl der Pivot-Seite. Und hier haben wir ja wieder
nur noch eine Option. Das ist die zweite Zeile,
denn nur noch in der zweiten Zeile haben wir einen negativen Koeffizienten stehen.
Y2 wird jetzt also gleich die Masis verlassen.
Und was ist jetzt unser neues Element in der Basis?
Schauen wir uns das mal an, indem wir die Pivot-Spalte bestimmen.
Was sind ja potenzielle Kandidaten für eine Pivot-Spalte?
Der einzige potenzielle Kandidat hier ist die dritte Spalte.
Denn nur in der dritten Spalte haben wir einen negativen Koeffizienten
in der Pivot-Seite dran stehen. Das ist die minus 2.
Also hier super simpel, wir müssen gar nichts rechnen.
Wir schauen uns das einfach nur an und wir sehen,
unser neues Pivot-Element ist die minus 2,
X3 wird in die Basis aufgenommen und Y2 verlässt die Basis
Also schreiten wir wieder in diesem neuen Tableau,
in dem dann die Basisvariablen getauscht worden sind.
Und wir befüllen das. Und was machen wir zuallererst?
Zuallererst bringen wir unser Pivo-Element auf eine 1. Also,
wir multiplizieren hier die zweite Zeile des zweiten Tableaus.
Mit dem Kerve des Pivo-Elements. Um die neue zweite Zeile
des dritten Tableaus Zwischt. Und nun, wie immer,
müssen wir alle anderen poeffizient in der Pivo-Spalte
auf Null bringen
Wie die erste Zahl des dritten Tableaus bedeutet das,
dass wir einfach nur die erste Zahl des zweiten Tableaus
nehmen und dort die zweite Zahl des dritten Tableaus itieren.
Minus 1, plus 1 ist ja gleich null.
Die dritte Zahl des dritten Tableaus bedeutet,
dass wir die dritte Zeile des zweiten Tableaus nehmen und dort
zweimal die zweite Zeile des dritten Tableaus abziehen.
Also können wir ja auch seit 2-0 0 machen.
Und in der vierten Zeile nehmen wir einfach nur die vierte Zeile
des zweiten Tableaus und ziehen dort siebenmal die zweite Zahl des dritten Tableaus ab.
In der Zielfunktionszeile müssen wir nichts machen,
weil dort haben wir ja bereits
eine neue stehen
Und damit haben wir hier auch schon wieder ein neues Tableau.
Wir haben immer noch ein Zielfunktionswert von 400, aber wir
haben unsere Ecke geändert. Denn unsere Entscheidungsvariablen haben jetzt hier
andere Werte und auch unser Schlupfvariablen haben andere Werte als Feuer.
Und ist die aktuelle Lösung zulässig? Ja, endlich ist
die aktuelle Lösung zulässig. Und wir haben den dualen Simplex-Archorithmus abgeschlossen.
Ist die aktuelle Lösung länger als optimal? Schauen wir dafür
mal in die Zielfunktionszeile. Und ändern Sie sich zurück,
wenn wir in der Zielfunktionszeile noch negativen Koeffizienten stehen haben bei
einer zulässigen Lösung, ist das Ganze noch nicht optimal,
aber zulässig
Hier besteht also der Bedarf für einen weiteren Schritt im Simplex-Algorithmus
und dann vielleicht auf die optimale Lösung zu bauen.
Was wir hier machen, ist die Anwendung des primalen Simplex-Algorithmus.
Also gehen wir rüber zu Phase 2 und fangen damit an,
dass wir jetzt nicht die Pipo-Zeile zuerst bestimmen, sondern die Pipo-Spalte.
Primaler Simplex-Algorithmus zur Annajas Fettipipo-Spalte bestimmt. Und als Kandidat peu,
die Pipo-Spalte, haben wir ja wirklich nur eine Speise übrig.
Das ist die Spalte mit der Y1,
also der Schlüpfvariable 1. Denn das ist die einzigste Spalte,
in der wir in der Zielfunktionsteile an negativen Proeffizienten stehen haben.
Also haben wir unsere Piro-Spalte bestimmt und Y1 vergleichen die Basis aufgenommen.
Und welche der aktuellen Base-Variablen verlässt die Basis? Ganz einfach,
wir müssen hier jetzt hier die Pipo-Zeilebestimmung, um das herauszufinden.
Und potenzielle Kandidaten für eine Pipo-Zeile sind die dritte und die vierte Zeile.
Und in der ersten und in der zweiten Zeile
haben wir ja negative Koeffizienten in der Pipo-Spalte stehen
Wir teilen also fünf durch zwei und wir teilen 25 halbe durch 15 halbe.
Wir bekommen dann auf fünf halbe und fünf Drittel.
Und welcher dieser beiden Werte ist kleiner?
Natürlich der Wert fünf Drittel. Heißt also,
unsere neue Pivot-Zeile ist die vierte Zeile.
Unser Pivotlement ist 15 halbe.
Was machen wir jetzt
Wie immer, wir schreiben uns ein neues Tableau auf,
in dem wir die Basisvariablen getauscht haben.
Und wir sorgen zuallererst einmal dafür,
dass wir aus unserem Peivolement eine Eins machen.
Also nehmen wir die vierte Zeile des dritten Tableaus und multiplizieren
sie einmal mit dem Kervet des Peivolements.
Nun müssen wir alle anderen Koeffizienten in der Peivo-Spalte
auf null bringen
In der ersten Zeile des vierten Tablus bedeutet das,
dass wir die erste Zahl der des dritten Table losnehmen und hier einhalten,
mal die vierte Zahl des vierten Tablus addieren.
In der zweiten Zeile nehmen wir einfach nur die zweite Zeile des dritten Tablus
und addieren fünf halbemal die vierte Zeile des vierten Tablus.
In der dritten Zeile des vierten Tablus nehmen wir die dritte Zeile
des dritten Tablus und wir ziehen dort zweimal die vierte Zeile des vierten Tablus ab,
um aus der Zwei eine 0 zu machen.
Und in der Zielfunktionszeile müssen wir jetzt nur noch die
minus 10 entfernen
Mir ist aus der minus 10 eine Null zu machen,
müssen wir hier jetzt also einfach nur auf die Zielfunktionszahlen des
dritten Tablos zehnmal die vierte Zeile des vierten Tablos addieren.
Müssen wir uns jetzt noch die Frage stellen,
habt ihr aktuell die Lösung zulässig ist? Nein,
denn wir können ja aus einer zulässigen Lösung mit dem primaen Simplex-Algorithmus,
insofern wir dann keine Fehler machen, keine unzulässige Lösung mehr herstellen.
Heißt, wir schauen uns mal eine Zielfunktionszeile und gucken,
ob denn die aktuelle Lösung auch schon optimal ist.
Und sie sehen, wir haben dort nur noch koeffizienten,
größer gleich nur der Netzzielfunktionszeile. Das heißt,
wir haben jetzt tatsächlich schon die optimale Lösung herausgefunden.
Und diese optimale Lösung können wir jetzt hier einmal zusammen analysieren.
Da verschauen wir, was sind unsere aktuellen Basisvariablen?
Denn in diesen aktuellen Basisvariablen kommen wir ja dann ganz einfach sehen,
in der Spalte mit den B-Koeffizienten,
was denn die aktuellen Werte der Basisvariablen sind
Und die aktuellen Werte der Basisvariablen sind nichts anderes als
25 Drittel für X-1, 5 Drittel 4X-2,
35 Drittel 4X-3 und 5 Drittel für die Schlüpfvariabel Y1.
Und wir sehen das ja auch immer anhand dieses Einheitslektors,
dass es sich hier um Bass variablen handelt.
Und wir könnten jetzt hier einfach noch diesen zusätzlichen Einheitsvektor für F
als Spalte einfügen und hören dann natürlich da auch sehen,
dass unsere aktuelle Zielfunktionswert unten rechts in der Zielfunktionsteile irgendwo dann auch seine Rechtfertigung hat,
wenn man so möchte.
Das heißt, da sehen wir der Zielfunktionswert,
ist 1250 Drittel oder aber
auch ungefähr
Nicht-Basisvariablen sind ja alle gleich null. Das heißt, Y2 ist gleich 0,
Y3 ist gleich 0 in Y, 4 ist gleich noch.
Und das bedeutet ja eigentlich nichts anderes, als dass
die zweite, dritte und vierte Nebenbedingung komplett ausgelastet ist.
Das heißt, dabei sind wir wirklich bei der kompletten Auslastung
der Nebenbedingungen und nur Y1 ist nicht komplett ausgelastet.
Denn da haben wir noch freie Restkapazitäten von fünf Dritteln übrig.
Und damit haben wir hier das Ausgangsproblem auch schon gelöst mit
dem geeigneten Simplexverfahren. Das war ja in dem Fall hier
zu Adrias der Duana Simplex Algorithmus gefolgt von
dem primalen Simplex Algorithmus
Damit kommen wir auch schon zu Burgens Aufgabe 1.2.
Geben Sie die Simplex-Multiplikatoren der einzelnen Iterationen an.
Und das haben wir bereits ausführlich in der letzten Übung gemeinsam gemacht.
Und das haben sie auch schon in der Vorlesung gesehen.
Wir müssen uns einfach die Zielfunktionszeit in jedem Tableau anschauen und
können dort unter den Schlupfvariablen dann die Sumplex-Multiplikatoren der jeweiligen Iteration herauslesen.
Und diese Simplex-Multiplikatoren, die geben wir uns ja dann an,
wie oft einen der Nebenbedingungen auf die Zielfunktion andiert wurde
Und mithilfe der folgenden Gleichung, die Sie hier jetzt sehen,
können Sie dann einfach herausfinden, was denn der aktuelle Zielfunktionswert ist,
selbst wenn Sie die Werte der Entscheidungsvariablen nicht kennen.
Also, was sind hier unsere Simplex-Multiplikatoren für das Ausgangstableau 0,
0, 0, 0. Viel Schlupfvariablen,
vier Simplex Multiplikatoren in der Iteration.
Im ersten Tableau haben wir ja dann 25 Mal die
erste Nebenbedingung von der Zielfunktionszeile abgezogen.
Das heißt, da haben wir dann eine minus 25 als
Simplex-Multiplikator 1 der ersten Iteration stehen
Und in der zweiten Iteration haben wir dann die Simplex-Multiplikatoren,
minus 10-0, 5-0. Denn wir haben
ja hier jetzt fünfmal die dritte Nebenbedingung auf die Zielfunktion erklärt.
Und in der dritten Iteration sehen Sie die Simplex-Multiplikatoren haben sich
gar nicht geändert. Denn da haben wir ja nichts auf
die Zielfunktionen agiert, wenn sie sich zurückerinnern.
Da war ja bereits in der Pivot-Spalte unten in der Zielfunktionszeit in den 0.
Und in der vierten Iteration haben wir dann nur noch
die Simplex-Multiplikatoren 0-14 Drittel 17 Drittel und 4 Drittel
Und damit sind wir dann hier auch
schon am Ende angelangt und haben die Simplex-Multiplikatoren bestimmt.
Die kennen wir ja wieder hier in einer kleinen Tabelle zusammenfassen.
Jetzt fragen Sie sich vielleicht, wieso reiten wir hier so
auf den Simplex-Multiplikatoren rum? Wir werden später noch wichtig.
Diese Simplex-Multiplikatoren, die können wir auch als Dualvariablen bezeichnen.
Und mit diesen Simplex-Multiplikatoren können wir ja auch immer den Zielfunktionswert
einer Iteration berechnen, wenn wir denn die aktuellen Werte
der Entscheidungsvariablen
nicht wissen
Und bei der Berechnung des Zielfunktionswertes ist es halt nur noch wichtig,
dass sie sich vor Augen führen, dieses BI,
also die Koeffizienten auf der rechten Seite,
mit denen sie immer die aktuellen Implexmultiplikatoren multiplizieren,
das sind die Beschränkungen der rechten Seite im Ausgangstableau.
Das ist im Prinzip das,
was sie auch schon auf der rechten Seite der Nebenbedingungen sehen,
wenn sie sich die allgemeine Form des linearen Optimierungsproblems anschauen.
Das sind einfach die freien Ressourcen,
die wir jetzt hier je in Nebenbedingungen haben
Wenn es hier noch irgendwelche Unklarheiten gibt und sie das nicht ganz verstanden haben,
dann schauen sie nochmal neben um zwei nach,
wo wir das Ganze ja ausführlich gemacht haben.
Und damit sind wir auch schon bei Übungsaufgabe
1.3. Welches separaten Zielfunktionsänderungen sind die zu erwarten,
wenn sie die rechte Seite um jeweils eine Einheit erhöhen?
Mit der rechten Seite meinen wir hier nichts anderes als die Kapazität der Nebenbedingungen.
Also was passiert, wenn ich die Kapazität der ersten Nebenbedingungen
zum Beispiel um eine Einheit erhöhen würde?
Und das Ganze können wir hier ganz einfach anhand der aktuellen Simple Ex-Multiplikatoren bewerten.
Und wenn wir uns jetzt als Optimaltableau der vierten Iteration anschauen,
also das vierte Tableau hier,
dann müssen wir uns einfach die Simplex-Multiplikatoren im vierten Tableau angucken
Schauen wir uns da zuallererst mal an, was passiert,
wenn wir die Kapazität der ersten Nebenbedingungen um eine Einheit erhöhen.
Es passiert nichts. Das kann ich am ersten Semplex-Multiplikator der vierten Iteration sehen.
Das ist eine Null. Und das ist ja auch klar irgendwo,
weil wenn Sie an das Optimaltableau zurückdenken,
hat Y1 ja einen Wert von fünf Drittel gehabt.
Das heißt, wir haben noch freie Restkapazität in der
ersten Nebenbedingung gehabt. Und deswegen ist es da egal,
ob wir noch zusätzliche Kapazität obendrauf geben.
Die optimale Lösung wird sich da nicht verändern.
Anders sieht es aus, wenn eine Nebenbedingung komplett ausgelastet ist.
Und das ist der Fall bei der zweiten Nebenbedingung
Und was passiert dort, wenn ich die Kapazität auf der rechten Seite um eine Einheit erhöhe,
naja, EC-Funktionswert wird im 14 Drittel steigen.
Einfach ablesbar am zweiten simplex Multiplikator der vierten Iteration.
Was passiert mit der dritten Nebenbedingung, die ja auch ausgelastet ist,
wenn ich die Kapazität der rechten Seite um eine Einheit Höhe,
naja, der ist hier funktionswert, wird um 17 Drittel erhöht.
Ja. Ablesbar, einen dritten simplex Multiplikator der vierten Iteration.
Und die vierte Nebenbedingung ist ebenfalls komplett ausgelastet, das heißt,
hier wird nun der Zielfunktionswert und vier Drittel steigen,
wenn ich eine zusätzliche Kapazität auf der rechten Seite hinzugehe
Kann also mehr oder weniger hier auch so ein bisschen bewerten,
ob es sich lohnt, Kapazität hinzuzugeben auf der rechten Seite.
Ja. Immer davon abhängig, was mich dann zum Beispiel
eine Einheit einer Ressource kostet. Und ich kann nicht nur sehen,
was mit dem Zielfunktionswert passiert, ich kann auch sehen,
was mit den aktuellen Basisvariablen passiert,
wenn ich die Ressourcen auf der rechten Seite um eine Einheit erhöhe.
Und schauen wir uns das mal an für die zweite Nebenbedingung.
Wenn ich in der zweiten Nebenbedingung die Kapazität der rechten Seite
um eine Einheit erhöhe, dann wird X1 und 4,
5 Cent kleiner.
Das sehe ich einfach in der Spalte der zweiten Schlupfvariable,
die ja stellvertretend für die zweite Nebenbedingung steht
Was passiert mit X3? Naja, X3 wird um zwei Drittel größer.
Was passiert mit X2? Ja, X2 wird um einen
15. größer. Und was passiert mit der ersten Schlüpfvariable,
die ja vorher jetzt hier den Wert von fünf Drittel hatte,
naja, hier wird sich der Wert noch um sieben,
15. erhöhen.
Das heißt, wenn ich die Kapazität der zweiten Nebenbedingung
ein wenig erhöhe, habe ich am Ende auch ein bisschen
mehr von der ersten Ressource übrig
Was passiert jetzt, wenn ich die Kapazität der rechten Seite um eine Einheit verringere?
Ja, eigentlich kann ich das wieder in der gleichen Spalte ablesen.
Ich muss nur einmal die Vorzeichen ändern. X1 wird sich
also im 4-15 erhöhen, X3 um zwei Drittel verringern,
X2 um 115 Till verringern und die erste Stückvariable wird um 7.15 Uhr kleiner.
Der FC-Funktionswert sinkt im 14. Drittel. Und ich muss mal ein bisschen vorsichtig sein,
in den ganzen Änderungen gelten nur innerhalb gewisser Grenzen,
die wir theoretisch hier auch im Tableau ablesen könnten,
aber das ist jetzt hier über dem Umfang dieser aktuellen Vorlesung.
Einzige, was wir uns hier nochmal ganz kurz vor Augen
führen könnten, wäre ja die erste Nebenbedingung.
Denn wir haben da ja eine Kapazität von fünf Dritteln
auch übrig
Aber wenn ich da jetzt die Kapazität verringern würde,
und zwar auch mehr als fünf Drittel,
dann würde diese erste Nebenbedingung anfangen, dafür zu sorgen,
dass unser aktueller Punkt, den wir im zulässigen Lösungsraum gefunden haben,
ja nicht mehr zulässig ist,
weil er dann unterhalb dieser ersten Nebenbedingung liegen würde.
Und dann würde sich dementsprechend auch aus dem Tableau ändern.
Bei einer Erhöhung würde sich hier ja nichts ändern
Das soll es jetzt aber hier erst mal zur Sensitätsanalyse sein.
Machen wir mal weiter mit der nächsten Aufgabe. Das ist
die Übungsaufgabe 1.4. Bestimmen Sie iterativ eine ganz zahlige Lösung.
In jeder Iteration ist eine obere Schranke für eine Variable
festzulegen und das resultierende Problem durch Reoptimierung zu lösen.
Und was heißt jetzt eine ganzzahlige Lösung?
Eine ganzzahlige Lösung heißt eigentlich nichts anderes, dass die Entscheidungsvariablen,
die am Ende hier rauskommen, ganz zahlig sein müssen.
Das heißt, in der optimalen Lösung möchte ich ganzzahlige Entscheidungsvariablen haben.
Und schauen wir uns jetzt mal das finale Ausgangstableau von nebenan.
Unsere Entscheidungsvariablen sind hier alles andere als ganz zahlig. 25,
Drittel ist nicht ganz zahlig, 35 Drittel ist nicht ganz teilig.
Und 5 Drittel ist nicht ganz zahlig. Das heißt,
wir haben ja theoretisch noch ziemlich viel Arbeit vor uns.
Und diese Ganzzahligkeit können wir jetzt erreichen,
indem wir hier zusätzliche Nebenbedingungen einfügen
Machen wir das mal mit der Variable,
mit der Entscheidungsvariable X1. Die ist ja aktuell 25 Drittel,
und das ist nichts anderes als acht Eindrittel.
Und die nächstgelegenen, ganzteilig Zahlen hier, sind entweder
acht oder neun. Und was ich jetzt machen würde,
wäre dieses Problem in zwei Teilprobleme aufzuteilen.
Und in dem einen Teilproblem füge ich eine neue Nebenbedingung ein,
in der X1 kleiner gleich acht sein muss,
und in dem zweiten Teilproblem füge ich eine neue Nebenbedingung ein,
in der X1 größer
gleich neun sein muss
Und da werden sie sich jetzt vielleicht denken,
oh Mann, das ist ja ganz schön viel Arbeit,
denn ich muss jetzt zuallererst einmal wieder ein neues Gleichungssystem aufstellen,
dann muss ich dieses gleiche System, nein,
simple Extable rüberführen,
dann muss ich mehrere Reterationen mit dem Simplex-Algorithmus durchgehen,
um dann irgendwann endlich auf das neue Optimaltableau zu kommen und zu wissen,
was ihn das eigentlich gebracht hat.
Und da kann ich sie beruhigen, so viel Arbeit ist es nicht,
denn wir können diese neue Nebenbedingung, die wir jetzt hier einfügen,
einfach in das aktuelle Simplex-Tableau einfügen.
Wir müssen allerdings diese neue Nebenbedingung erstmal ein wenig transformieren.
Und das machen wir mal gemeinsam jetzt hier,
4XL1 ist kleiner, gleich 8. XL1 ist kleiner,
gleich 8, erfüllt ja bereits die Anforderung eines allgemeinen linearen Optimierungsproblems.
Das heißt, ich kann da jetzt problemlos eine Gleichung daraus machen,
indem ich da einfach die Schlupfvariable Y5 auf der linken Seite dazu hatte.
Seid ihr noch ziemlich einfach. Und jetzt muss ich einmal in meinem Simplex-Tableau schauen,
was ich denn aktuell für Basisvariablen habe und was ich jetzt
hier einsetzen könnte in diese neuen Nebenbedingungen,
um die Entscheidungsvariablex 1 zu entfernen
Ja. Denn ich muss ja jetzt in dieser Zeile,
wenn ich das hier einfüge, dafür sorgen,
dass in allen Spalten, in denen wir hier Basisvariablen stehen haben,
eine Null bei dieser Nebenbedingungsgleiche gleich steht.
Da nehme ich mir jetzt einfach mal die erste Zeile hier
raus, bei einer ersten Zeile ist X1 ja gleich 1.
Und diese erste Zeile steht ja stellvertretend für eine Gleichung.
Denn das Ganze, was wir im Simplex Tableau machen,
ist ja eigentlich nichts anderes als an einem großen gleichen System zu arbeiten.
Und in dieser Gleichung isoliere ich jetzt das X1 und
dann setzt sich das einfach in diese fünfte neue Nebenbedingung ein
Und wenn ich das tue, komme ich auf die folgende Gleichung.
4, 15. Y, 2, minus 8,
15. Y, 3, minus 51. Y, 4,
plus Y, 5, ist gleich minus ein Drittel.
Dann schauen Sie sich mal die aktuellen Basisvariablen an,
das sind ja X1, X-3, X2 und Y1.
Und die kommen ja hier in dieser Gleichung jetzt hier nicht mehr vor.
Das heißt, wir können das hier jetzt auch in der Simplex-Tableau einfügen.
Und da müssen wir uns jetzt natürlich eine neue Zeile oder
neue Spalte denken. Gibt es hier in diesem Simplex-Tableau einmal
noch eine Spalte für den Zielfunktionswert F eingeführt,
die ersetze ich jetzt mal durch die Spalte für die 5.
Schlupfvariable Y5 und ich füge noch eine neue Zeile hier anzu
Und in dieser neuen Zeile habe ich jetzt natürlich auch eine
neue Basisvariable. Und das ist die fünfte Schlupfvariable.
Denn sie sehen ja unten schon in der Gleichung,
wir werden jetzt hier gleich einen Einheitsvektor in der Spalte stehen haben.
Und damit haben wir diese neue Nebenbedingung auch schon in unser
aktuelles Tableau übernommen. War ja eigentlich gar nicht so schwierig.
Und jetzt müssen wir natürlich wieder einmal gucken, okay,
ist denn die aktuelle Lösung hier aktuell zulässig
Nö. Dann werden sie mal eine rechte Spalte mit der Dekoeffizienz schauen.
Wir haben ja jetzt hier minus ein Drittel da in der fünften Zeile
drin stehen. Das heißt, das müssen wir machen.
Wir müssen gemeinsam nochmal eine Iteration im Dual simplexer Algorithmus gehen.
Also, und wie lief der Duale simplex Algorithmus ab
? Wir fangen zuallererst einmal damit an, es wird die Pivot-Zeile bestimmen.
Das ist ja hier ziemlich simpel. Es gibt ja
nur noch einen Koeffizienten in der B-Spalterin, negativ ist.
Das heißt, unsere neue Pivot-Zeile ist die Zeile mit der Y5.
Das heißt, die fünfte Schlupfvariable verlässt jetzt gleich
die Bahns und eine andere Variable wird die Basis betreten.
Und welche das sein wird, bestimmen wir jetzt mit
der Auswahl der Pivot-Spalte
Was sind ja unsere potenziellen Kandidaten für eine Pivot-Spalte?
Das ist einmal die Spalte der dritten Schlupfvariable und die Spalte der vierten Schlupfvariable.
Weil nur in diesen beiden Spalten haben wir in der Pivot-Zeile
einen negativen Koeffizienten stehen. Das heißt,
wir teilen jetzt hier einmal 17 Drittel durch minus 8,
15 Tel, was minus 29,75 ergibt und wir teilen einmal
vier Drittel durch minus 1, 15.
Es ergibt minus 68. Und welche dieser beiden Werte ist größer? Naja,
natürlich die minus 29,75. Das heißt,
wir haben unsere neue Pivot-Spalte hier gefunden und wir müssen jetzt
mal wieder dafür sorgen,
dass unser Pivolement gleich eine 1 ist
Also, neues Tableau her und wir multiplizieren jetzt hier die
fünfte Zeile des vierten Tableaus mit dem Kehrrett des Piroldemens.
Und dann müssen wir wiederum dafür sorgen,
dass alle anderen Koeffizienten in der Pivot-Spalte gleich neu sind.
Ja, und wie mache ich das? Klar,
in der ersten Zeile muss ich ja jetzt einfach nur die
erste Zeile des vierten Tableaus nehmen und dort acht,
fünfzehntel Mal die fünfte Zeile des fünften Tableaus abziehen.
In der zweiten Zeile des fünften Tableaus nehme ich einfach
die zweite Zeile des vierten Tableaus und ihre ein Drittel
mal die fünfte Zeile des fünften Tableaus
In der dritten Zeile des fünften Tableaus nehme ich
die dritte Zeit des vierten Tableaus und addiere dort 2,
15. Mal die fünfte Zeile des fünften Tableaus.
In der vierten Zeile des fünften Tableaus nehme ich die
vierte Zeile des vierten Tableaus und ich ziehe einmal 1,
15. Mai die fünfte Zeile des fünften Tableaus ab.
Und in der Zielfunktionszeile muss ich ja jetzt 17 Drittel zu
einer Null machen. Das heißt,
ich nehme jetzt hier die Zielfunktionszeile des vierten Tableaus und
ich ziehe dort 17 Drittel mal die fünfte Zeile des fünften
Tableaus ab
Dass sie ja eigentlich das Gleiche,
was wir jetzt hier schon seit geraumer Zeit immer wieder machen.
Und das ist ja eigentlich auch nicht schwer,
weil wenn man einmal die Logik dahinter verstanden hat.
Und das führt uns dann zu einem neuen Tableau hier.
Und wir sehen schon hier auf der rechten Seite,
das Ganze ist jetzt hier bereits zulässig.
Und sie sehen in der Zielfunktionszeile auch, dass das Ganze optimal ist.
Wir haben in der B-Sparte keine negativen Koeffizienten, also zulässig.
Und wir haben in der Zielfunktionszeile ebenfalls keine negativen Koeffizienten,
also optimal
Und die aktuellen Werte unserer Basisvariablen und unserer Nicht-Basisvariablen,
können wir hier auch ganz einfach ablesen.
Bei den Basisvariablen sind das ja einfach die Werte,
die wir ganz rechts in der B-Spalte stehen haben.
Und Sie sehen, X1 ist ganz zahnig durch diese Nebenbedingung geworden.
Und der Zielfunktionswert ist jetzt hier 413,125. Das heißt,
der Zielfunktionswert ist jetzt hier geringe für dich kleiner,
dadurch, dass wir hier eine Variable eingeschränkt haben.
Und das macht ja auch Sinn. Wenn Sie eine zusätzliche Nebenbedingung in ein Optimierungsproblem einfügen,
in dem Sie bereits eine optimale Lösung gefunden haben,
dann kann die Lösung nur noch entweder genauso gut oder schlechter sein.
Entweder die Nebenbedingung sorgt nicht dafür, dass er zulässige Lösungsraum eingeschränkt wird.
Das heißt, das Ganze bleibt genauso gut wie vorher auch.
Oder aber diese zusätzliche Nebenbedingung schränkt den zulässigen Lösungsraum ein.
Und deswegen wird unser Zielfunktionswert kleiner.
Bei der Minimierung müssen Sie das dementsprechend
andersrum denken
Wir haben jetzt hier aber noch ein ganz kleines Problem,
denn X1 2 ist ganz zahlig,
aber wir haben die Aufgabe ja eigentlich noch nicht ganz bearbeitet.
Denn wir wissen nicht, ob es nicht vielleicht besser gewesen wäre,
das zweite Teilproblem zu betrachten und X1 auf größer gleich neun
zu zwingen mit einer anderen Nebenbedingung.
Und die anderen Entscheidungsvariablen sind ebenfalls noch nicht ganz zeitig.
Das heißt, hier ist noch ziemlich viel Rechnerei erforderlich,
um am Ende auf eine ganz zahlige Lösung zu kommen.
Deswegen pausieren wir hier erstmal und schauen uns zuallererst einmal
in Aufgabe 1.5 an
Wie ich hoch, ist der sogenannte Solution Gap zwischen der LP-Lösung und ihrer ganz zahligen Lösung.
In diesem Solution Gap können Sie ganz einfach berechnen,
indem Sie eins, minus, die ganz teilige Lösung,
durch die beste Lösung, die möglich wäre,
wenn wir keine Ganzzahligkeit erzwingen, rechnen.
Ganz simpel die Formel. Und wie gesagt,
die aktuelle Lösung ist nicht ganz zahlig.
Wir können jetzt aber diese ganzzahlige Lösung in Games bestimmen.
Denn in Games müssen wir durch das Einfügen einer neuen Nebenbedingung
nicht noch viele Rechnungen durchführen, sondern das Einzige,
was wir machen müssen,
ist einmal aufs Souls zu klicken und uns anzuschauen,
was da herauskommt
Wenn man ganz ehrlich ist,
wenn man ein riesiges Optimierungsproblem mit tausenden von Entscheidungsvariablen und tausenden von Nebenbedingungen haben,
dann würde niemand auf die Idee kommen,
da Schritt für Schritt neue Nebenbedingungen einzufügen,
bis man dann irgendwann auf eine ganz leilige Lösung kommt.
In dem Fall würden sie das Entscheidungsproblem einfach als ganz zeitiges Entscheidungsproblem in Games
deklarieren und Games würden ihnen dann am Ende eine ganz teilige Lösung ausspucken.
Aber die zugrunde liegenden Lösungsverfahren in dem Fall,
allein voran das Branch-and-Bound-Verfahren, die machen dann nichts anderes als im Hintergrund,
diese zusätzlichen Nebenbedingungen einzufügen.
Das Branch-and-Bound-Verfahren, das werden wir uns dann später
auch nochmal in Übung und Vorlesung 8
genauer anschauen
Und wenn man das Branch im Bound-Verfahren hier jetzt anwenden würden,
hören wir am Ende auf eine Lösung kommen von 405,
wenn alle Entscheidungswache haben, dann ganz zeitig sein müssen.
Das heißt, um das Solution-Gap in dem Pop-Fall liegt bei 2,8 Prozent.
Die einzige Aufgabe, die Sie jetzt noch haben,
ist, einmal in Games das Ganze nachzuvollziehen,
was wir in dieser Übung heute hier gemacht haben.
Ich habe dazu wieder ein Open-O-Lad,
ein kommentiertes Skript hochgeladen, in dem Sie ausführlich sehen,
was man an welcher Stelle machen kann.
Wenn Sie sonst noch weitere Fragen haben,
stellen Sie sie dann gerne in der nächsten Besprechung
Und damit sind wir heute auch schon durch für
die Übung 3 und den Dualen simplexer Algorithmus.
Und sie sehen und hören mich dann wieder in der nächsten Übung.
Bis dahin