Management Science: Simplexverfahren
Im betriebswirtschaftlichen Kontext müssen in aller Regel Zielfunktionen optimiert werden. So werden etwa ein Gewinn oder ein Umsatz maximiert und Kosten minimiert. Das Anhängsel "-wirtschaft" weist daraufhin, dass mit knappen Ressourcen ein optimales Ergebnis erzielt werden soll. Die Zielfunktion soll also maximiert werden, obwohl ein ganzer Zoo von gemeinen Beschränkungen darauf wartet, dem Optimierer die Zunge zu zeigen.
Betrachten wir ein einfaches Beispiel:
Eine Produktionsstätte für biologischen Heimwerkerbedarf hat noch Kapazität übrig, und zwar 140 Liter Hartwachs und 40 Liter Leinöl. Es sollen damit Poliermittel produziert werden, nämlich Möbelpolitur und Bodenpolitur. Eine Dose Möbelpolitur benötigt unter anderem 4 Liter Hartwachs und 2 Liter Leinöl, und eine Dose Bodenpolitur entsprechend 5 Liter Hartwachs und 1 Liter Leinöl. Vom Bodenpflegemittel sollen vorerst nur maximal 25 Dosen angeboten werden. Für eine Dose Möbelpolitur werden ein Preis von 5 €, für die Bodenpolitur 4 € erzielt. Wir bezeichnen als die Menge des produzierten Möbelpflegemittels und als die Menge des produzierten Bodenpflegemittels.
Möbelpflegemittel (Dose) | Bodenpflegemittel (Dose) | Beschränkung | |
---|---|---|---|
x1 | x2 | ||
Hartwachs (l) | 4 | 5 | 140 |
Leinöl (l) | 2 | 1 | 40 |
Max. Angebot | - | 25 | 25 für x2 |
Preis (€) | 5 | 4 |
Wir fassen nun die Gegebenheiten formal zusammen. Unser Ziel ist es, den Umsatz zu maximieren. Wir erhalten die also die Zielfunktion und die Beschränkungen oder Restriktionen oder Nebenbedingungen:
Zielfunktion:Z =
Restriktionen:
- H:
- L:
- A:
Nichtnegativitätsbedingungen:
Wir haben noch die so genannten Nichtnegativitätsbedingungen dazugefügt, denn wir wollen ja keine negativen Produktionsmengen.
Man nennt diese Art der Konstellation das Standard-Maximum-Problem.
Grafische Lösung
[Bearbeiten]Wir wollen zunächst einmal das Problem grafisch lösen. Dazu tragen wir die Ziefunktion und die Ungleichungen in ein Koordinatensystem ein. soll als Abszisse ("x-Achse") und als Ordinate ("y-Achse") abgetragen werden. Wir lösen die Ungleichungen nach auf:
Restriktionen:
- H:
- L:
- A: . Hier ergibt sich eine waagerechte Gerade an der Stelle .
Die Zielfunktion ist der Umsatz U. Wir haben also
und
Da die Zielfunktion maximiert werden soll, ist natürlich U zunächst nicht bekannt. Man kann aber aus der obigen Gleichung ersehen, dass die Steigung für alle Umsätze ist. Zur Veranschaulichung können wir einen bestimmten Umsatz festlegen und dann eine Gerade skizzieren. Hier wurde ein Umsatz von 160 € vorgegeben. Wir erhalten so eine Funktion
Die Restriktionsungleichungen werden zunächst als Gleichungen eingetragen. ist so aufzufassen, dass die Fläche unter der jeweiligen Geraden die Lösungsmenge der Ungleichung darstellt.
Wie sieht nun das gesamte realisierbare Produktionsprogramm aus? Überlegen wir:
Wollen wir das Wertepaar produzieren, werden die Restriktionen L und H erfüllt, aber es können nur maximal 25 Einheiten von verkauft werden. Also kommt diese Kombination nicht in Frage. Ebenso kann nicht realisiert werden, weil hier nicht genügend Leinöl zur Verfügung steht. Also können nur die Schnittmengen der Restriktionen realisiert werden. Die Nichtnegativitätsbedingen begrenzen die Lösungsmenge von unten. In der zweiten Grafik ist die zulässige Lösungsmenge durch ein Polygon dargestellt.
Wie ermittelt man nun das Optimum? In der dritten Grafik sind alternative Umsatzgeraden dargestellt. Betrachten wir die Gerade des Umsatzes 100. Alle Punkte auf der Geraden entsprechen einem Umsatz von 100 €. Wählen wir beispielsweise den Punkt Innerhalb der zulässigen Lösungen können wir und noch erhöhen, also den Umsatz steigern. Das Optimum liegt auf der Umsatzgerade, die gerade noch das Polygon berührt. Die optimale Produktionsmenge liegt also im Punkt und entspricht einem Umsatz von .
Simplexalgorithmus
[Bearbeiten]Das obige Beispiel ist klein und überschaubar, allerdings leider wenig realitätsnah. Zwei zu produzierende Güter ermöglichen eine grafische Lösung. Bei mehr als zwei Gütern versagt diese einfache Methode. Wir wollen nun eine analytische Lösungsmöglichkeit ins Visier nehmen, den Simplexalgorithmus. Um das System verarbeitbar zu machen, müssen zunächst die Ungleichungen der Restriktionen in Gleichungen überführt werden. Zu diesem Zweck führen wir so genannte Schlupfvariablen y ein:
Restriktionen:
- H:
- L:
- A:
gibt beispielsweise an, wieviel Hartwachs bei vorgegebenem und noch verfügbar ist.
Für die konkrete Berechnung des Standardmaximierungsproblem müssen wir noch bei der Zielfunktion alle Variablen auf die linke Seite bringen, so dass sich ergibt
Nun sieht unser Optimierungsproblem so aus:
Zielfunktion: mit
Restriktionen:
- H:
- L:
- A:
Nichtnegativitätsbedingungen:
bzw. genauer
Zielfunktion: mit
Restriktionen:
- H:
- L:
- A:
Nichtnegativitätsbedingungen:
Im Wesentlichen reduziert sich das Problem auf ein lineares Gleichungssystem. Wir benötigen hier die Kenntnisse aus dem Kapitel Matrizen. Also wollen wir uns zunächst mal um eine formale Darstellung des obigen Simplexproblems bemühen:
Zielfunktion: mit .
Restriktionen:
- .
Nichtnegativitätsbedingungen:
Wir haben m = 3 Restriktionen und n+m Variablen und . Wir fassen nun die und zu einem Spaltenvektor mit (n+m) = 5 Elementen, die Restriktionen zum Vektor mit m=3 Elementen und die zur m×(n+m)-Koeffizienten-Matrix zusammen. Zusätzlich werden noch die Koeffizienten der Zielfunktion zum Vektor zusammengefasst.
Wir erhalten nun das Simplexproblem in Matrizenschreibweise als
Zielfunktion:
Restriktionsgleichungen:
Nichtnegativitätsbedingungen:
- ,
Wir werden in aller Regel eine große Koeffizientenmatrix haben und sie wird meistens singulär sein, d.h. man kann sie nicht invertieren.
Wir haben gesehen, dass in dem Beispiel mit zwei Gütern die Restriktionen, die ja lineare Gleichungen darstellen, ein Vieleck darstellen. Im höherdimensionalen Fall, wenn also mehr als zwei Güter im Optimierungsmodell sind, erhält man ein mehrdimensionales Vieleck, also ein so genanntes Polytop oder auch Simplex genannt. Die recht gelungene Grafik stellt einen Simplex in der dritten Dimension dar.
Wir werden nun anhand unseres Beispiels den Simplexalgorithmus durchrechnen. Die Schritte werden kommentiert. Die Vorgehensweise ist folgende: Ausgehend von einer Anfangslösung werden die Ecken des Polygons in Bezug auf ihr Optimierungspotenzial untersucht. Es werden zuerst die Ecken untersucht, die den größten Beitrag zur Zielfunktion leisten und deren Restriktionen am schärfsten sind.
Simplexalgorithmus
[Bearbeiten]Die Ausgangslösung entspricht dem Gleichungssystem mit der Koeffizientenmatrix wie oben angegeben. Für die praktische Berechnung - etwa mit Hilfe des Tableaus - wird nun noch die Zielfunktion mit zur Matrix zusammengefasst, und zwar folgendermaßen:
,
mit als Spaltenvektor der Ordnung m, und den Restriktionen fügen wir entsprechend noch die Null als aktuellem Wert der Zielfunktion bei,
.
Mit unserem Beispiel sieht das so aus:
Das entspricht dem Gleichungssystem
Restriktionen:
- H:
- L:
- A:
- Z:
Was bedeutet das nun? Wir haben 6 Variablen und 4 Gleichungen. Erinnern wir uns an die Basislösungen im kanonischen System: Wenn es mehr Variablen als Gleichungen gibt, können wir einen Teil der Variablen mit Hilfe der anderen ausdrücken. Wir erhalten eine Basislösung. Die spezielle Basislösung ergibt sich, wenn man letztere Variablen Null setzt. Wir stellen die Gleichungen um,
- ,
und setzen Null:
- : Es wird noch nichts produziert.
- : Es sind noch 140 l Hartwachs vorhanden.
- : Es sind noch 40 l Leinöl vorhanden.
- : Es ist noch nichts verkauft worden.
- . Der Umsatz ist noch Null.
Im Polygon entspricht das dem Koordinatenursprung. Das System ist ohne Zweifel verbesserungsfähig. Wir wollen händisch weiterrechnen. Hier empfiehlt sich die Verwendung eines Tableaus:
Wir starten mit der Anfangslösung:
x1 x2 y1 y2 y3 Z | b H |y1| 4 5 1 0 0 0 | 140 L |y2| 2 1 0 1 0 0 | 40 A |y3| 0 1 0 0 1 0 | 25 ---------------------------------------- Z | -5 -4 0 0 0 1 | 0
Wir erkennen in der Mitte die Matrix . Ganz links ist die Legende der Zeile. Es folgt dann der Name der Variable, die in der Basislösung ist, hier die drei y-Variablen. In der Zeile sind zur Information die Bezeichnungen der Spalten angegeben.
Wie können wir das System verbessern? Betrachten wir die Zeile Z. Als Gleichung ausgedrückt ergibt sich . Das Gut 1 trägt mit einem Preis von 5 € am meisten zum Umsatz bei, ist also am attraktivsten.
Wieviel können wir maximal davon herstellen? Für eine Dose Möbelpolitur brauchen wir 4 l Hartwachs und 2 l Leinöl. Bei 140 l Hartwachs können also maximal 140/4 = 35 Dosen hergestellt werden. Bei 40 l Leinöl sind es maximal 40/2 = 20 Dosen. Also ist Leinöl die strengere Restriktion, wir visieren zunächst 20 Dosen Möbelpolitur an. Man ermittelt im Tableau die Engpässe so, dass ganz rechts in der Spalte q die Elemente der Spalte b zeilenweise durch die Elemente der Spalte dividiert werden.
x1 x2 y1 y2 y3 Z | b | q H |y1| 4 5 1 0 0 0 | 140 | 140/4=35 L |y2| 2 1 0 1 0 0 | 40 | 40/2=20 A |y3| 0 1 0 0 1 0 | 25 | - ---------------------------------------- Z | -5 -4 0 0 0 1 | 0 |
Wir befassen uns also mit der Spalte , der Pivotspalte, mit der zweiten Zeile L, der Pivotzeile. Das Element im Schnittpunkt, also 2, ist das Pivotelement. Nun suchen wir die entsprechende Ecke des Polygons auf. Wir bringen die Produktion von in das System ein, d.h. die Variable wird in die Basislösung eingebracht, also auf Eins gesetzt. Dafür wird aus der Basislösung entfernt, d.h. diese Variable wird 0 gesetzt. Die restlichen Elemente der Pivotspalte sollen Null werden. Im Matrizenkalkül wird das mit Hilfe der elementaren Zeilentransformationen erreicht. Wir wandeln also die Pivotspalte in einen Einheitsvektor um und erhalten:
x1 x2 y1 y2 y3 Z | b H |y1| 0 3 1 -2 0 0 | 60 L |x1| 1 0,5 0 0,5 0 0 | 20 A |y3| 0 1 0 0 1 0 | 25 --------------------------------------------- Z | 0 -1,5 0 2,5 0 1 | 100
Wir analysieren das Zwischenergebnis: Die Nichtbasisvariablen sind Null:
- Von wird noch nichts produziert.
- Es ist kein Leinöl mehr übrig.
Die Einheitsvektoren repräsentieren die Variablen in der Basislösung:
- Es werden 20 Dosen Möbelpolitur hergestellt.
- Es sind noch 60 l Hartwachs übrig
- Das Verkaufskontingent für Bodenpolitur ist noch nicht angetastet.
- Es wird ein Umsatz von 100 € erzielt.
Grafisch befinden wir uns in dem Punkt (20; 0).
Ist das System verbesserungsfähig? Die Gleichung Z ergibt
Gut 2 trägt noch positiv zur Zielfunktion bei. wird also neue Basisvarible. ist unproduktiv und bleibt daher Nichtbasisvariable. Wir ermitteln die Engpässe für . Es stellt sich heraus, dass der Engpass bei 20 l Hartwachs liegt.
x1 x2 y1 y2 y3 Z | b | q H |y1| 0 3 1 -2 0 0 | 60 | 60/3 = 20 L |x1| 1 0,5 0 0,5 0 0 | 20 | 20/0,5 = 40 A |y3| 0 1 0 0 1 0 | 25 | 25/1 = 25 --------------------------------------------- Z | 0 -1,5 0 2,5 0 1 | 100
Es wird also Pivotspalte und das neue Pivotelement. wird mit elementaren Zeilenumformungen zu einem Einheitsvektor umgeformt:
x1 x2 y1 y2 y3 Z | b H |x2| 0 1 1/3 -2/3 0 0 | 20 L |x1| 1 0 -1/6 5/6 0 0 | 10 A |y3| 0 0 -1/3 2/3 1 0 | 5 ---------------------------------------- Z | 0 0 1/2 3/2 0 1 | 130
Wir analysieren das Ergebnis:
Die Nichtbasisvariablen sind Null:
- Vom Leinöl und Hartwachs ist nichts mehr übrig.
Variablen in der Basislösung:
- Es werden nun 10 Dosen Möbelpolitur hergestellt.
- Es werden 20 Dosen Bodenpolitur hergestellt.
- Im Verkaufskontingent sind noch 5 Dosen von Gut 2 nicht ausgeschöpft.
Grafisch befinden wir uns in dem Punkt (10; 20).
Ist das System verbesserungsfähig? Die Gleichung Z ergibt
- .
Da die y-Werte positiv sind, würde jede weitere Änderung die Zielfunktion verringern. Also ist das Optimum erreicht.
Interpretation der Koeffizienten in der Lösung
[Bearbeiten]x1 x2 y1 y2 y3 Z | r H |x2| 0 1 1/3 -2/3 0 0 | 20 L |x1| 1 0 -1/6 5/6 0 0 | 10 A |y3| 0 0 -1/3 2/3 1 0 | 5 ---------------------------------------- Z | 0 0 1/2 3/2 0 1 | 130
Wir analysieren das Ergebnis: Die Nichtbasisvariablen sind Null:
Vom Leinöl und Hartwachs ist nichts mehr übrig.
Variablen in der Basislösung:
Es werden nun 10 l Möbelpolitur hergestellt. Es werden 20 l Bodenpolitur hergestellt. Im Verkaufskontingent sind noch 5 l von Gut 2 nicht ausgeschöpft.
Grafisch befinden wir uns in dem Punkt (10; 20).
Setzen wir . Was passiert jetzt? Es wird ein Liter Hartwachs weniger verbraucht. Wir haben nun . Bei unverändertem sinkt um 1/3, es kann dann also 1/3 l weniger Bodenpflegemittel hergestellt werden. Stattdessen kann aber 1/6 l Möbelpflegemittel mehr hergestellt werden. Man nennt diese Koeffizienten Substitutionskoeffizienten. Sie geben an, wie sich das Produktionsprogramm ändert, wenn man eine Nichtbasisvariable ceteris paribus verändert (ceteris paribus bedeutet: Alle anderen Variablen bleiben in der Analyse unverändert).
Wenn die Produktion von um 1/3 zurückgeht, wird natürlich die nichtausgenutzte Absatzkapazität um 1/3 erhöht.
Diese Substitutionskoeffizienten können direkt im fertigen Simplextableau abgelesen werden: In der Spalte von finden sich in der entsprechenden Zeile die Auswirkungen auf die betreffende Basisvariable.
Auf die Zielfunktion wirkt sich bei einem Literpreis von 5€ für das erste Gut und 4 € für das zweite Gut die Änderung so aus: .
Das findet sich in der Gleichung
Also bezeichnen die Koeffizienten in der Zielfunktionszeile die Änderung der Zielfunktion, wenn eine Nichtbasisvariable um eine Einheit erhöht wird. Wird also ein Liter Hartwachs weniger verwendet, sinkt Umsatz um 50 Cents, wird ein Liter Leinöl weniger verwendet, sinkt der Umsatz um 1,50 €. Man nennt diese Koeffizienten Schattenpreise oder Opportunitätskosten, denn sie zeigen an, wieviel man verliert, wenn eine Einheit der Nichtbasisvariablen anderweitig investiert wird.
Sensibilitätsanalyse
[Bearbeiten]Als Sensibilitätsanalyse bezeichnet man im Zusammenhang mit dem Simplexalgorithmus die Auswirkung einer Zielfunktionsänderung auf die optimale Lösung.
Wir wollen nun den Preis des Gutes 2 mal ordentlich anheben, und zwar auf 8 Euros. Die Grafik zeigt uns nun, was passiert. Die alte Zielfunktion betrug
- , was umgeformt ergab
Die Steigung der Umsatzgeraden betrug , wie man der Geraden unmittelbar ansieht. Die Umsatzgerade berührte die Ecke (10; 20) als optimale Lösung. Die neue Zielfunktion beträgt nach der Preiserhöhung
und .
Wir sehen, dass sich die Gerade nach oben gedreht hat, ihre Steigung ist gewachsen, sie beträgt jetzt . Sie berührt jetzt die Menge der zulässigen Lösungen im Punkt (3,75 und 25). Wir erhalten einen Umsatz von
Hätten wir das alte Produktionsprogramm aufrechterhalten, würden wir lediglich
Euros verdienen.
Wir wollen nun die Gerade etwas absenken, etwa mit einem Preis von Gut 2 von 7,5. Als Steigung der Geraden ergibt sich nun . Diese Gerade berührt immer noch den Punkt (3,75; 25).
Wir senken weiter bis zu einem Preis p2 von 6,25 Euro. Die Steigung ist nun . Wir sehen, dass jetzt die Gerade mit der ersten Restrikionsgeraden
zusammenfällt. Wir können also speziell bei diesem Preis alle Kombinationen auf dem zulässigen Abschnitt der Geraden
realisieren. Wenn wir den Preis weiter senken, dreht sich die Gerade noch mehr nach unten und berührt nun wieder den Punkt (10; 20). Das aktuelle optimale Produktionsprogramm ist also abhängig von den Steigungen der Umsatzgeraden und Restriktionsgeraden.
Ablauf des Simplexalgorithmus im Simplextableau
[Bearbeiten]Ausgangsposition
1. Schritt:
- Es wird zunächst der negative Wert in der Zielfunktionszeile gesucht, für den maximal wird. Diese Spalte k ist die Pivotspalte.
- Es werden die Engpässe ermittelt als . Die Zeile r, für die der Quotient minimal wird, ist die neue Pivotzeile. Das Element ist Pivotelement.
- Die Pivotspalte j wird mit Hilfe der elementaren Zeilenoperationen, die neben allen auch tangieren, in einen Einheitsvektor mit der Eins im Pivotelement umgeformt.
- Sind keine negativen Koeffizienten der Zielfunktion mehr vorhanden, ist keine weitere Verbesserung des Systems möglich. Falls doch, geht man zum nächsten Schritt über.
Nächster Schritt:
- Es wird der negative Wert in der Zielfunktionszeile gesucht, für den maximal wird. Diese Spalte k ist die Pivotspalte.
- Es werden die Engpässe ermittelt als . Die Zeile r, für die der Quotient minimal wird, ist die neue Pivotzeile. Das Element ist Pivotelement.
- Die Pivotspalte j wird mit Hilfe der elementaren Zeilenoperationen, die neben allen auch tangieren, in einen Einheitsvektor mit der Eins im Pivotelement umgeformt.
- Sind keine negativen Koeffizienten der Zielfunktion mehr vorhanden, ist keine weitere Verbesserung des Systems möglich. Falls doch, geht man zum nächsten Schritt über.
Bemerkungen:
- Eine Variable, deren Spalte k Einheitsvektor ist, befindet sich in der Basislösung. Hier kann das Ergebnis in der Zeile r des Pivotelements direkt abgelesen werden: .
- Für Variablen, deren Spalten keine Einheitsvektoren sind, gilt: .
- Bei der Berechnung des Engpasses werden Ergebnisse, die negativ oder Null geworden sind, außer acht gelassen.