Kurs:Algorithmen und Datenstrukturen/Vorlesung/Simplex Verfahren Gewinnmaximierung: Unterschied zwischen den Versionen

Aus testwiki
Zur Navigation springen Zur Suche springen
imported>Mhombach
 
(kein Unterschied)

Aktuelle Version vom 29. Januar 2014, 12:38 Uhr

Vorlage:Navigationsleiste/Algorithmen und Datenstrukturen

Beispiel Gewinnmaximierung

Auf dieser Seite wird der Simplex Algorithmus anhand des Beispiels der Gewinnmaximierung Schritt für Schritt durchgegangen.

Zielfunktion: maxx1+6x2+13x3.

Nebenbedingungen:

x1200

x2300

x1+x2+x3400

x2+3x3600

x1,x2,x30

Das System lässt sich umschreiben zu:

x1+6x2+13x3=z

x1+s1=200

x2+s2=300

x1+x2+x3+s3=400

x2+3x3+s4=600

x1,x2,x3,s1,s2,s3,s40


A=(1001000010010011100100130001),b=(200300400600)

Initialisierung

Gestartet wird mit der Basislösung, die durch die Schlupfvariable gegeben ist.

AB=(s1,s2,s3,s4)=(1000010000100001)=aB1

AN=(x1,x2,x3)=(100010111013) b=(200300400600)

cT=(16130000)=(cNTcBT)

AB1AN=(100010111013) AB1b=(200300400600)

Starttableau

x1 x2 x3 b
z 1 6 13 0
s1 1 0 0 200
s2 0 1 0 300
s3 1 1 1 400
s4 0 1 3 600

x1,x2,x3 sind Nichtbasiselemente, Z ist die Zielfunktion und s1,s2,s3,s4 sind Basiselemente.

Optimierungsphase

x1 x2 x3 b
z 1 6 13 0
s1 1 0 0 200
s2 0 1 0 300
s3 1 1 1 400
s4 0 1 3 600

E={j|cxxj>0}={1,2,3}{x1,x2,x3}

L1={i|x1i>0}={1,3}{s1,s3}

L2={i|x2i>0}={2,3,4}{s2,s3,s4}

L3={i|x3i>0}={3,4}{s3,s4}

Erste Iteration

Heuristik: Ersetze einen Basisvektor durch den Nichtbasisvektor, der den größten Zugewinn für die Zielfunktion bringt.

x1

0s1=200x1

0s3=400x1

x1=min(200,400)=200z=200

Hier wird die Zeile von s1unds3 betrachtet und die Spalte von x1. Der alte Wert ist 0. Der Koeffizient von x in der Zielfunktion ist 1 und der Zugewinn durch x1 ist 200.

x2

0s2=300x2

0s3=400x2

0s4=600x2

x2=min(300,400,600)=300z=18000

Hier wird die Zeile von s2,s3unds4 betrachtet und die Spalte von x2. Der alte Wert ist 0. Der Koeffizient von x2 in der Zielfunktion ist 6 und der Zugewinn durch x2 ist 1800.

x3

0s3=400x3

0s4=6003x3

x3=min(400,200)=200z=26000

Hier wird die Zeile von s3unds4 betrachtet und die Spalte von x3. Der alte Wert ist 0. Der Koeffizient von x3 in der Zielfunktion ist 13 und der Zugewinn durch x3 ist 2600. Nun wird s4 durch x3 ersetzt.

Update des Tableaus

Der neue Wert von x3 wird nun berechnet.

s4=600x23x3x3=200x23s43.

Dieser Wert wird nun eingesetzt.

z=x1+6x2+13200x23s43=x1+53x2+133s4+2600

s3=400x1x2(200x23s43=200x123x2+s43

s4=200x23s43

Das neue Tableau sieht nun so aus:

x1 x2 s4 b
z 1 53 133 -2600
s1 1 0 0 200
s2 0 1 0 300
s3 1 23 13 200
x3 0 13 13 200

Was haben wir nun gemacht? Von der Basis B=(s1,s2,s3,s4) haben wir zu der Bais B=(s1,s2,s3,x3) gewechselt und zu der neuen Basis haben wir das entsprechende Tableau bestimmt.

TB=(cNTCBTAB1ANCBTAB1bAB1ANAB1b)


AB=(1000010000110003) AB1=(100001000011300013) AN=(100010110011) AB1AN=(1000101231301313) AB1=(200300200200)


cT=(16000013)=(cNTcBT)


cNTcBTAB1AN=(153133)


cBTAB1b=2600

Zweite Iteration

E={j|cxxj>0}={1,2}{x1,x2}

L1={i|x1i>0}={1,3}{s1,s3}

L2={i|x2i>0}={2,3,4}{s2,s3,x3}

Heuristik: Ersetze einen Basisvektor durch den Nichtbasisvektor, der den größten Zugewinn für die Zielfunktion bringt.

x1

0s1=200x1

0s3=200x1

x1=200z=2800

Hier wird die Zeile von s1unds3 betrachtet und die Spalte von x1. Der alte Wert ist 2600. Der Koeffizient von x1 in der Zielfunktion ist 1 und der Zugewinn durch x1 ist 200.

x2

0s2=300x2

0s2=20023x2

0x2=20013x2

x2=min(300,600)=300z=4400

Hier wird die Zeile von s2;s3undx3 betrachtet und die Spalte von x2. Der alte Wert ist 2600. Der Koeffizient von x2 in der Zielfunktion ist 6 und der Zugewinn durch x2 ist 1800. Nun wird s2 durch x2 ersetzt.

Update des Tableaus

Der neue Wert von x2 wird nun berechnet.

s2=300x2x2=300s2. Dieser Wert wird nun eingesetzt.

z=x1+53(300s2)133s4+2600=x1+53s2133s4+3100

s3=200x1+n23(300s2)+s43=x1+23s2+s43

x3=20013(300s2)s43=100+13s2s43

Das neue Tableau sieht nun so aus:

x1 s2 s4 b
z 1 53 133 -3100
s1 1 0 0 200
x2 0 1 0 300
s3 1 23 13 0
x3 0 13 13 100

Dritte Iteration

E={j|cxxj>0}={1}{x1}

L1={i|x1i>0}={1,3}{s1,s3}

Ersetze einen Basisvektor durch den Nichtbasisvektor, der den größten Zugewinn für die Zielfunktion bringt. Es müssen nur Terme aus z mit positivem Vorzeichen betrachtet werden, d.h. es bleibt nur noch x1 übrig.

x1

0s1=200x1

0s3=0x1

x1=min(200,0)z=3100

Update des Tableaus

Nun wird s3 durch x1 ersetzt.

s3=x1+23s2+s43x1=s3+23s2+s43. Dieser Wert wird nun eingesetzt.

z=s3+23s2+s4353s2133s4+3100=s3s24s4+3100

s1=200(s323s2s43=200+s3+23s2+s43

Das neue Tableau sieht nun so aus:

s3 s2 s4 b
z -1 -1 -4 -3100
s1 -1 23 13 200
x2 0 1 0 300
x1 1 23 13 0
x3 0 13 13 100

Die Zielfunktion kann nun nicht weiter verbessert werden. Unser x ist nun (0,300,100) und unser z ist 3100.


verweishttps://de.wikiversity.org/wiki/Kurs:Algorithmen_und_Datenstrukturen/Vorlesung/Simplex_Verfahren_Tableau Discussion