3 Produkte werden auf 3 Maschinen M1, M2 und M3 hergestellt. [br]Die Belegungszeiten der Produkte auf der Maschine M1 betragen 2 Minuten für P1, 4 Minuten für P2 und 3 Minuten für P3; M1 besitzt eine freie Kapazität von 1.050 Minuten. [br]Alle Produkte belegen die Maschine M2 mit je einer Minute; die Kapazität dieser Maschine beträgt noch 450 Minuten. [br]Auf der dritten Maschine M3 kann nur P2 gefertigt werden; sie besitzt noch eine Kapazität von 150 Minuten. Die Belegungszeit von P2 auf M3 beträgt 1 Minute. [br]Der Deckungsbeitrag je Stück der 3 Produkte beträgt 50 € , 80 € bzw. 60 €. [br]a) Welche Stückzahlen sind jeweils herzustellen, damit der Gesamtdeckungsbeitrag maximal wird? [br]b) Wie groß ist der optimale Gesamtdeckungsbeitrag und wie hoch sind die freien Kapazitäten der drei Maschinen im Optimum? "[br][br][icon]/images/ggb/toolbar/mode_viewinfrontof.png[/icon][url=https://ggbm.at/fP8cnZbb]Simplex-Applet (Simplex-Rechner)[math]\nearrow[/math][/url]
1. 0 LP Max Ungleichungen[br][math]\begin{array}{rrr}2 \; p1 + 4 \; p2 + 3 \; p3&<=&1050\\p1 + p2 + p3&<=&450\\p2&<=&150\\50 \; p1 + 80 \; p2 + 60 \; p3&->&max\\\end{array}[/math][br][br]1.1 LP Max Gleichungen mit Schlupfvariablen [br][math]\begin{array}{rrr}2 \; p1 + 4 \; p2 + 3 \; p3 + s1&=&1050\\p1 + p2 + p3 + s2&=&450\\p2 + s3&=&150\\-50 \; p1 - 80 \; p2 - 60 \; p3&=&max\\\end{array}[/math][br]Die Zielfunktion trage ich negativ ein. [br]Der Algorithmus endet dann, wenn alle Koeffizienten der Zielfunktion positiv sind![br][br]1.2 LP Max Matrixgleichung A x = b aus [i]1.1[/i][br][math]\left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\-50&-80&-60&0&0&0\\\end{array}\right) \; \left(\begin{array}{r}p1\\p2\\p3\\s1\\s2\\s3\\\end{array}\right) = \left(\begin{array}{r}1050\\450\\150\\0\\\end{array}\right)[/math][br]Aus der Matrixgleichung [i]1.2[/i] entwickle ich das Starttableau [i]1.4[/i].[br][br]1.3 LP Überlegungen zur Matrixgleichung [i]1.2[/i][br][br]Als Versuch betrachte ich das [i]LP[/i] mit [i]p1=160, p2=150, p3=50[/i] und erhalte mit [i]1.2[/i]:[br][math]\left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\-50&-80&-60&-20&0&0\\\end{array}\right) \; \left(\begin{array}{r}160\\150\\50\\0\\0\\0\\\end{array}\right) = \left(\begin{array}{r}1070\\360\\150\\-23000\\\end{array}\right)[br][/math][br][br]Der Vektor x=(160,150,50,0,0,0)^T ist keine Lösung des GLS [i]1.2[/i], weil der Ergebnisvektor b=(1050,450,150,0) nicht erreicht wird. Mit den passenden Schlupfvaribalen kann eine Lösung konstruiert werden:[br] [i]p1=160, p2=150, p3=50[/i] ===> 1.1 ===> [i]s1=..., s2=..., s2=...[/i] ===>[br][math]\small \left(\begin{array}{r}s1\\s2\\s3\\\end{array}\right) = \left(\begin{array}{r}1050\\450\\150\\\end{array}\right) - \left(\begin{array}{rrr}2&4&3\\1&1&1\\0&1&0\\\end{array}\right) \; \left(\begin{array}{r}160\\150\\50\\\end{array}\right) =\left(\begin{array}{r}-20\\90\\0\\\end{array}\right) [/math][br][br][math]\left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\-50&-80&-60&-20&0&0\\\end{array}\right) \; \left(\begin{array}{r}160\\150\\50\\-20\\90\\0\\\end{array}\right) = \left(\begin{array}{r}1050\\450\\150\\-22600\\\end{array}\right)[/math][br]Die Lösung x=(160,150,50,-20,90,0)^T erfüllt zwar das GLS [i]1.2[/i] ist aber ungültig, d.h. erfüllt nicht die Ungleichungen [i]1.0[/i], weil eine Schlupfvariable negativ wird (Kapazitätsüberschreitung von M1). Nicht Negativitätsbedingung verletzt! Sie Schlupfvariablen stehen für die Ressourcen, die das LP übrig läßt![br][br]Übertragen wir die Matrixgleichung in ein Tableau.[br]
1.4 LP Max Starttableau[br][br][math]\left(\begin{array}{rrrrrrrr}BV&p1&p2&p3&s1&s2&s3&b\\s1&2&4&3&1&0&0&1050\\s2&1&1&1&0&1&0&450\\s3&0&1&0&0&0&1&150\\Z&-50&-80&-60&0&0&0&0\\\end{array}\right)[/math][br]In jeder Zeile gibt es nur eine Variable, die ungleich Null ist. [br]Diese werden als Basisvariablen des Programms bezeichnet und in Spalte [i]BV[/i] notiert.[br]Das Starttableau [i]1.4[/i] beschreibt den Zustand des [i]LP[/i], wenn nicht produziert wird [i][br]p1=p2=p3=0, s1=1050, s2=450, s3=150 (keine Ressourcen [/i]verbraucht):[br][br][math]\left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\-50&-80&-60&0&0&0\\\end{array}\right) \; \left(\begin{array}{r}0\\0\\0\\1050\\450\\150\\\end{array}\right) = \left(\begin{array}{r}1050\\450\\150\\0\\\end{array}\right)[/math][br][br]Konstruieren wir eine gültige Lösung des GLS [i]1.2[/i].[br]Die Gleichungen [i]1.1[/i] kann ich als Ebenen im Raum interpretieren (bei 2 Maschinen p1,p2 würden wir Geraden betrachten). Wo sich zwei der Ebenen (Geraden) schneiden sind die betreffenden Schlupfvariablen verschwunden (=0), d.h. die Maschinenkapazitäten werden voll ausgenutzt. [br]Ich konstruiere eine Lösung für s1=0 und s3=0 mit GLS [i]1.1[/i]:[br][br][math]\begin{array}{rrr}[br]2 \; p1 + 4 \; p2 + 3 \; p3 + 0&=&1050\\[br]p1 + p2 + p3 + s2&=&450\\[br]p2 + 0&=&150[br]\\\end{array}[/math][br][br]Wegen[b] s3=0[/b] folgt [b]p2=150[/b] [br]Eingesetzt in die beiden ersten Gleichungen erhalte ich [br]2 p1 + 3 p3 = 450, p1 + p3 + s2 = 300 => p1 = -3 s2 + 450, [b]p3 = 2 * s2 - 150[/b]}[br]Für [b]s2=75[/b] wäre[b] p3=0[/b] und [b]p1=225[/b] und das GLS 1.2 lautet dann[br][math]\left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\-50&-80&-60&0&0&0\\\end{array}\right) \; \left(\begin{array}{r}\textcolor{red}{225}\\\textcolor{red}{150}\\0\\0\\\textcolor{red}{75}\\0\\\end{array}\right) = \left(\begin{array}{r}1050\\450\\150\\-23250\\\end{array}\right)[/math][br]Was eine gültige Lösung des GLS [i]1.2[/i] darstellt![br][br]Um diese Schritte s3=0 p2=150 auf dem Starttableau anzuwenden würde ich als Pivotzeile=3 und Pivotspalte=2 wählen und damit einen Gaussschritt auf Starttableau [i]1.4[/i] anwenden - Zeile s3 so zu allen anderen Zeilen addieren damit in Spalte 2 0en entstehen. Pivotelement Zeile 3,Spalte 2 auf 1 setzen (ohne Rechnung da das der Startwert ist). [b]Basiswechsel s3<<>>p2[/b]:[br][br][math]\left(\begin{array}{rrrrrrrr}&p1&s3&p3&s1&s2&s3&b\\s1&2&0&3&1&0&-4&450\\s2&1&0&1&0&1&-1&300\\p2&0&1&0&0&0&1&150\\Z&-50&0&-60&0&0&80&12000\\\end{array}\right)[/math][br][br]Der Schritt s1=0 legt Pivotzeile 1 fest und wenn p1 berechnet werden soll ist die Pivotspalte 1 zu nehmen. Pivotelement Zeile 1,Spalte1 auf 1 setzen (Zeile s1' = Zeile s1/2). Zeile s1' so zu allen anderen Zeile addieren damit in Spalte 1 0en entstehen. [b]Basiswechsel s1<<>>p1[/b]:[br][br][math]\left(\begin{array}{rrrrrrrr}&s1&s3&p3&s1&s2&s3&b\\p1&1&0&\frac{3}{2}&\frac{1}{2}&0&-2&\textcolor{red}{225}\\s2&0&0&-\frac{1}{2}&-\frac{1}{2}&1&1&\textcolor{red}{75}\\p2&0&1&0&0&0&1&\textcolor{red}{150}\\Z&0&0&15&25&0&-20&23250\\\end{array}\right)[/math][br][br]Eine LP Varaible (p1,p2,p3) in der Basis (d.h. alle anderen Variablen in der Zeile sind 0) gibt im b-Vektor den Wert für die LP Variable (p1=225, p2=150) an. [br]Eine Schlupfvariable in der Basis gibt den Kapazitätsrest (s2=75 Restkapazität für M2) im b-Vektor an! [br]Der Deckungsbeitrag beläuft sich für diesen Fall auf 23250. [br]Was aber noch keine maximale Lösung ist, da in der Zeile der Zielfunktion noch ein negativer Wert steht, der einen Basiswechsel von s2<<>>s3 verlangt.
Es wird Zeit systematischer Vorzugehen.[br]Zur Festlegung des Pivotelements nehmen wir die Pivot-Spalte mit dem kleinsten negativen Wert (das ist der größte positive Koeffizient der Zielfunktion [i]1.0[/i] der den größten Effekt auf die Maximierung verspricht). [br][table][tr][td][br][math]\left(\begin{array}{rrrrrrrr}BV&p1&p2&p3&s1&s2&s3&b\\s1&2&4&3&1&0&0&1050\\s2&1&1&1&0&1&0&450\\s3&0&\textcolor{red}{1}&0&0&0&1&150\\Z&-50&-80&-60&0&0&0&0\\\end{array}\right)[/math][br][/td][td][br][math]\frac{b}{p2} = \left(\begin{array}{r}1050\\450\\150\\\end{array}\right) \; \left(\begin{array}{r}\frac{1}{4}\\1\\1\\\end{array}\right) = \left(\begin{array}{r}262.5\\450\\150\\\end{array}\right)[/math][br][/td][/tr][/table] [math] \left\{ s1=s1 - 4 \; s3, s2=s2 - s3, p2=s3/1, Z=Z + 80 \; s3 \right\} [/math] [math]X=\left(0,0,0,1050,450,150\right)[/math][br][br]Im Starttableau ist das Spalte p2 - Pivot-Spalte. Die Pivot-Zeile bestimmen wir durch den kleinsten positiven Quotienten der Werte aus b dividiert durch p2 (komponetenweise) - Zeile s3 ist Pivotzeile, weil 150 der kleinste positive Wert ist. Das Pivotelement ZS(3,2)=(s3,p2) = 1 muss ggf. durch Division der Zeile durch ZS(3,2) auf 1 gebracht werden (hier nicht notwendig) weil wir p2 als neue Basisvariable festlegen, sie damit berechnen (alle anderen Variablen in der Zeile sind dann 0). In einem Gaussschritt addieren wir Zeile s3 so, dass in der Pivot-Spalte 0en erzeugt werden :[br][br][table][tr][td][math]\left(\begin{array}{rrrrrrrr}BV&p1&s3&p3&s1&s2&s3&b\\s1&2&0&\textcolor{red}{3}&1&0&-4&450\\s2&1&0&1&0&1&-1&300\\p2&0&1&0&0&0&1&150\\Z&-50&0&-60&0&0&80&12000\\\end{array}\right)[/math][br][/td][td][math]\frac{b}{p3}=\left(\begin{array}{r}450\\300\\150\\\end{array}\right) \; \left(\begin{array}{r}\frac{1}{3}\\1\\0\\\end{array}\right) = \left(\begin{array}{r}150\\300\\?\\\end{array}\right)[/math][/td][/tr][/table] [math] \left\{p3= \frac{1}{3} \; s1, s2= s2-\frac{1}{3} \; s1 , p2, Z=Z + 20 \; s1 \right\} [/math] [math]X=\left(0,150,0,450,300,0\right)[/math][br][br][table][tr][td][math]\left(\begin{array}{rrrrrrrr}BV&p1&s3&s1&s1&s2&s3&b\\p3&\textcolor{red}{\frac{2}{3}}&0&1&\frac{1}{3}&0&-\frac{4}{3}&150\\s2&\frac{1}{3}&0&0&-\frac{1}{3}&1&\frac{1}{3}&150\\p2&0&1&0&0&0&1&150\\Z&-10&0&0&20&0&0&21000\\\end{array}\right)[/math][/td][td][math]\frac{b}{p1}=\left(\begin{array}{r}150\\150\\150\\\end{array}\right) \; \left(\begin{array}{r}\frac{3}{2}\\3\\0\\\end{array}\right) = \left(\begin{array}{r}225\\450\\?\\\end{array}\right)[/math][/td][/tr][/table] [math] \left\{ p1 = \frac{3}{2} \; p3, s2 = s2 - \frac{1}{2} \; p3, p2, Z = Z + 15 \; p3 \right\} [/math][math]X=\left(0,150,150,0,150,0\right)[/math][br][br][table] [tr][br] [td][math]\left(\begin{array}{rrrrrrrr}BV&p3&s3&s1&s1&s2&s3&b\\p1&1&0&\frac{3}{2}&\frac{1}{2}&0&-2&225\\s2&0&0&-\frac{1}{2}&-\frac{1}{2}&1&\textcolor{red}{1}&75\\p2&0&1&0&0&0&1&150\\Z&0&0&15&25&0&-20&23250\\\end{array}\right)[/math][br][/td][br] [td][math]\frac{b}{s3}=\left(\begin{array}{r}225\\75\\150\\\end{array}\right) \; \left(\begin{array}{r}-\frac{1}{2}\\1\\1\\\end{array}\right) = \left(\begin{array}{r}?\\75\\150\\\end{array}\right)[/math][br][/td][br][/tr][br][/table] [math] \left\{ p1 = p1 + 2 \; s2, s3 = s2, p2 = p2 - s2, Z = Z + 20 \; s2 \right\} [/math] [math]X=\left(225,150,0,0,75,0\right)[/math][br][br][table][tr][td][math]\left(\begin{array}{rrrrrrrr}BV&p3&s3&s1&s1&s2&s2&b\\p1&1&0&\frac{1}{2}&-\frac{1}{2}&2&0&375\\s3&0&0&-\frac{1}{2}&-\frac{1}{2}&1&1&75\\p2&0&1&\frac{1}{2}&\frac{1}{2}&-1&0&75\\Z&0&0&5&15&20&0&24750\\\end{array}\right)[/math][/td][td]A x = b[br][br][math]\left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\-50&-80&-60&0&0&0\\\end{array}\right) \; \left(\begin{array}{r}375\\75\\0\\0\\0\\75\\\end{array}\right) = \left(\begin{array}{r}1050\\450\\150\\-24750\\\end{array}\right)[/math][/td][/tr][/table][br]Alle Koeffizienten der Zielfunktion Z positiv - Stopp Simplex - Maximum bei [br]p1=375, p2=75, p3=0 - Restkapazität M3 mit s3=75.
[list][*]X[sub]0[/sub]:={x1,x2,x3} Variablen festlegen[br][/*][*]Übertrage NB mit Schlupfvariablen nach A[/*][*]Rechte Seite der NB nach b[/*][*]Zielfunktion nach Z[/*][*](7) X[sub]i[/sub] Liste der Schlupfvariablen (nicht Basisvariablen): setze 2 Schlupfvariablen=0 - die anderen=1[br][/*][*](9) Eckensuche A X[sub]0[/sub] - b=0: LS die betroffenen NB. [br][/*][*](10) ggf. abhängige Variable = 0 setzen: x3=0 ==> x[sub]i[/sub] Lösungsvektor für Basisvariablen[br]Um ein bestimmtes Programm zu rechnen überschreibe Basisvariablen in x[sub]i[/sub]:={365,80,5} [br][math]\small Tableau \, := \, \left\{ \left(\begin{array}{rrrrrr}2&4&3&1&0&0\\1&1&1&0&1&0\\0&1&0&0&0&1\\\end{array}\right), \left(\begin{array}{r}365\\80\\5\\-15\\0\\70\\\end{array}\right), \left(\begin{array}{r}1050\\450\\150\\\end{array}\right), 24950 \right\} [/math][br]Ressourcen s[sub]1[/sub] nicht ausreichend - Nichtnegativitätsbedigung nicht erfüllt[br][/*][*](11) ergänzen mit den berechneten Schlupfvariablen: Basisvektor X >= 0 ==> gültige Lösung [br][/*][*](12) Tableau und Zielfunktion berechnen [br][/*][/list]