3.2 Verallgemeinerungen und Varianten des Simplex-Algorithmus
4.1.1 Input- und Output-Argumente
wobei y und w wieder wie oben definiert sind. F¨ugt man nun noch einen Vektor z ≥ 0 mit Schlupfvariablen ein, so erh¨alt man die Behauptung.
Um entartete L¨osungen zu vermeiden, baut MATLAB gleich zu Beginn und wenn n¨otig auch w¨ahrend des Algorithmus eine St¨orung ein - da wir uns im dualen Problem befinden aber in der Zielfunktionf. Phase I verl¨auft genau wie oben mit der Suche nach einem zul¨assigen Basispunkt des dualen Problems. Zu den Pivotstrategien wird so viel gesagt, dass f¨ur die Wahl der Pivot-spalte der sogenannteHarris‘ ratio test2 verwendet wird. F¨ur die Pivotzeile hingegen wird das Verfahren desdual steepest-edge pricing angewandt3. Phase II funktioniert auf dieselbe Weise.
Mit den zul¨assigen Basispunkten des dualen Problems, wird versucht, f¨ur das primale Problem ebenfalls eine zul¨assige L¨osung zu erhalten, sodass beide Probleme zul¨assig werden. Wurde eine L¨osung gefunden, werden die St¨orungen und die zu Beginn vorgenommenen Ver¨anderungen an der Problemstellung vom Solver r¨uckg¨angig gemacht, um eine L¨osung f¨ur das Ausgangsproblem zu erhalten.
4.1.1 Input- und Output-Argumente
Um die Problemstellung an MATLAB zu ¨ubergeben, gibt es zum einen die M¨oglichkeit, die Toolbox mit dem Befehl‘optimtool’selbst aufzurufen und dort die Vektoren und Einstellungen einzugeben. Zum anderen kann die Aufgabe auch gel¨ost werden, indem man die Vektoren und Parameter vordefiniert und diese ¨ubergibt:
[x,fval,exitflag,output,lambda]=linprog(f,Aineq,bineq,Aeq,beq,lb,ub,[],options) Zur ¨Ubersicht sind hier die Input- und Output-Argumente der Funktionlinprog zusammenge-fasst:
2Laut [9] 4. nach Koberstein.
3Laut [9] 4. nach Forrest and Goldfarb.
4.1 linprog 89
f Vektor mit den Koeffizienten der Zielfunktion
Aineq Matrix mit Koeffizienten der Ungleichungsnebenbedingungen
bineq Vektor mit Koeffizienten der rechten Seite f¨ur die Ungleichungsnebenbedingungen Aeq Matrix mit Koeffizienten der Gleichungsnebenbedingungen
beq Vektor mit Koeffizienten der rechten Seite f¨ur die Gleichungsnebenbedingungen lbbzw.ub Vektor mit unterer bzw. oberer Schranke f¨ur die Variablen
[] F¨ur den Simplex-Algorithmus wird kein manuell eingegebener Startpunkt verwendet.
options options k¨onnen mitoptimoptionsfestgelegt werden. Es gibt folgende M¨oglichkeiten:
‘Algorithm’ Hier ist die Voreinstellung ‘interior point’.
F¨ur den Simplex-Algorithmus muss‘simplex’ gew¨ahlt werden.
Weiter M¨oglichkeiten sind‘dual-simplex’ oder ‘active-set’.
‘Diagnostics’ Enth¨alt Informationen ¨uber das Minimierungsproblem.
Einstellung ‘on’ oder‘off’.
‘Display’ M¨oglichkeiten:‘off’, ‘iter’, ‘final’, je nach dem wie oft einoutputerw¨unscht ist.
‘MaxIter’ Maximale Anzahl an Iterationen des Algorithmus.
F¨ursimplexist die Voreinstellung: 10∗ Anzahl an Variablen.
‘TolFun’ Abbruchkriterium f¨ur den Funktionswert.
F¨ursimplexist die Voreinstellung 10−6.
Die Einstellungen sind nat¨urlich optional und nicht gew¨unschte Ausgabewerte k¨onnen weggelassen werden.
90 4 Lineare Programmierung mit MATLAB
x L¨osungsvektor.
Falls ein unbeschr¨anktes Problem bzw. keine L¨osung vorliegt, gibt es eine leere Ausgabe.
Wurde‘MaxIter’ uberschritten, wird der aktuelle Wert ausgegeben.¨ fval Optimaler Funktionswert der Minimierungsaufgabe.
Falls ein unbeschr¨anktes Problem bzw. keine L¨osung vorliegt, gibt es eine leere Ausgabe.
Wurde‘MaxIter’ uberschritten, wird der aktuelle Wert ausgegeben.¨ exitflag Liefert Information ¨uber den Grund f¨ur den Abbruch.
1 Es wurde eine L¨osung xermittelt.
0 Die maximale Anzahl an Iterationen wurde ¨uberschritten.
-2 Es konnte kein zul¨assiger Punkt gefunden werden.
-3 Es liegt ein unbeschr¨anktes Problem vor.
-4 Bei der Berechnung wurde ein undefinierter Wert (NaN) ermittelt.
-5 Sowohl primales, als auch duales Problem sind nicht durchf¨uhrbar.
-7 Der Suchprozess ist stagniert, da die Suchrichtung zu klein wurde.
output Liefert speziellere Informationen ¨uber die Optimierung.
iterations Anzahl an ben¨otigten Iterationen algorithm verwendeter Algorithmus
message Information ¨uber die Beendigung
constrviolation Misst, wie sehr die Nebenbedingungen verletzt werden.
firstorderopt Misst, wie nah der gefundene Punkt am Optimum ist (notwendige Bedingung erster Ordnung f¨ur Optimalit¨at).
lambda Enth¨alt die nach der Art der Nebenbedingungen getrennten Lagrangemultiplikatoren an der L¨osungx:
lower Lagrangemultiplikatoren f¨ur die untere Schranke upper Lagrangemultiplikatoren f¨ur die obere Schranke
ineqlin Lagrangemultiplikatoren f¨ur die Ungleichungsbedingungen eqlin Lagrangemultiplikatoren f¨ur die Gleichungsbedingungen
Bem.: Ist ein Eintrag von lambdavon Null verschieden, so ist die zugeh¨orige Bedingung an der L¨osungxaktiv!
Diagnostic Information gibt genauere Auskunft und Warnungen bei Nichtl¨osbarkeit, Unbe-schr¨anktheit oder wenn die Nebenbedingungen widerspr¨uchlich sind.
Bei der Verwendung des‘dual-simplex’gibt es noch weitere M¨oglichkeiten, die Berechnungen
4.2 Beispiel 91
von MATLAB mithilfe der‘options’ zu beeinflussen:
‘MaxTime’ In der Voreinstellung l¨auft die Berechnung unendlich lange.
Man kann die Zeit aber auch in Sekundenangabe begrenzen.
‘preprocess’ Die Voreinstellung lautet hier‘basic’.
Es gibt die M¨oglichkeit diese mit‘none’auszuschalten.
‘TolCon’ Eine Toleranzgrenze f¨ur die Zul¨assigkeit des primalen Problems (Voreinstellung 10−4).
4.2 Beispiel
Anhand unseres Beispiels 3.1.1 soll aufgezeigt werden, wie die L¨osung der linearen Optimie-rungsaufgabe mitlinprog gefunden werden kann und welche weiteren Informationen man ¨uber die Berechnung erh¨alt:
• Die erste M¨oglichkeit ist die Verwendung der Optimierungs-Toolbox:
Abbildung 4.1: Optimierungs-Toolbox, Solver: linprogund Algorithmus ‘simplex’
92 4 Lineare Programmierung mit MATLAB
Das zugeh¨orige Ergebnis lautet dazu:
1 The d e f a u l t s t a r t i n g p o i n t i s f e a s i b l e , s k i p p i n g Phase 1 .
2 Phase 2 : Minimize u s i n g s i m p l e x .
3 I t e r O b j e c t i v e Dual I n f e a s i b i l i t y
4 f ’∗x A’∗y+z−w−f
5 0 0 4 . 6 9 0 4 2
6 1 −5.33333 1 . 2 0 1 8 5
7 2 −5.75 0 . 7 5
8 3 −6.5 0
9 O p t i m i z a t i o n t e r m i n a t e d .
• Als zweite M¨oglichkeit ergibt sich folgender, eigener Code:
1 %% INPUT ARGUMENTS
2 % f : v e c t o r w i t h c o e f f i c i e n t s o f t h e l i n e a r o b j e c t i v e f u n c t i o n
3 f = [−2 ; −4; −1; −1 ] ;
4 % Aineq : m a t r i x w i t h c o e f f i c i e n t s o f t h e l i n e a r i n e q u a l i t y c o n s t r a i n t s
5 Aineq = [ 1 3 0 1 ; 2 1 0 0 ; 0 1 4 1 ] ;
6 % b i n e q : v e c t o r f o r l i n e a r i n e q u a l i t y c o n s t r a i n t s
7 b i n e q = [ 4 ; 3 ; 3 ] ;
8 % Aineq t o g e t h e r w i t h b i n e q form t h e i n e q u a l i t y c o n s t r a i n t s
9 % Aineq∗x=b i n e q .
10 % S i n c e t h e r e a r e no e q u a l i t y c o n s t r a i n t s Aeq∗x=beq , Aeq and beq do no t have t o be u s e d .
11 % l b : l o w e r bound c o n s t r a i n t s ( no upper bound c o n s t r a i n t s −>
s e t ub = [ ]
12 l b = z e r o s ( 4 , 1 ) ;
13 % x0 i s unused i f ’ Algorithm ’ i s ’ s i m p l e x ’ .
14 % O p t i o n s can be c h o s e n manually :
15 o p t i o n s = o p t i m o p t i o n s ( @ l i n p r o g , ’ A l g o r i t h m ’,’ s i m p l e x ’ , . . .
16 ’ D i a g n o s t i c s ’ ,’ on ’ ,’ D i s p l a y ’,’ f i n a l ’,’ MaxIter ’ , 4 0 ) ;
17
18 %% OUTPUT ARGUMENTS
19 % x : s o l u t i o n x
20 % f v a l : v a l u e o f t h e o b j e c t i v e f u n c t i o n a t t h e s o l u t i o n x
21 % e x i t f l a g : i n f o r m s about t h e r e a s o n f o r t e r m i n a t i o n
22 % o u t p u t : G i v e s i n f o r m a t i o n about t h e o p t i m i z a t i o n p r o c e s s e . g . t h e number o f i t e r a t i o n s , t h e u s e d a l g o r i t h m o r an e x i t message .
23 % lambda : t h e Lagrange m u l t i p l i e r a t t h e s o l u t i o n x .
24
25 %% DIFINING THE SOLVER:
26 % Simplex−A l g o r i t h m
27 [ x , f v a l , e x i t f l a g , output , lambda ] = . . .
28 l i n p r o g ( f , Aineq , b i n e q , [ ] , [ ] , l b , [ ] , [ ] , o p t i o n s )
4.2 Beispiel 93
Mit dieser Variante erh¨alt man folgendes Ergebnis:
1 D i a g n o s t i c I n f o r m a t i o n
2
3 Number o f v a r i a b l e s : 4
4 Number o f l i n e a r i n e q u a l i t y c o n s t r a i n t s : 3
5 Number o f l i n e a r e q u a l i t y c o n s t r a i n t s : 0
6 Number o f l o w e r bound c o n s t r a i n t s : 4
7 Number o f upper bound c o n s t r a i n t s : 0
8
9 A l g o r i t h m s e l e c t e d
10 s i m p l e x
11
12 End d i a g n o s t i c i n f o r m a t i o n
13
14 O p t i m i z a t i o n t e r m i n a t e d .
15
16 x =
17 1 . 0 0 0 0
18 1 . 0 0 0 0
19 0 . 5 0 0 0
20 0
21
22 f v a l =
23 −6.5000
24
25 e x i t f l a g =
26 1
27
28 o u t p u t =
29 i t e r a t i o n s : 3
30 a l g o r i t h m : ’ s i m p l e x ’
31 c g i t e r a t i o n s : [ ]
32 message : ’ O p t i m i z a t i o n t e r m i n a t e d . ’
33 c o n s t r v i o l a t i o n : 0
34 f i r s t o r d e r o p t : 2 . 2 2 0 4 e−16
35
36 lambda =
37 i n e q l i n : [ 3 x1 d o u b l e ]
38 e q l i n : [ 0 x1 d o u b l e ]
39 upper : [ 4 x1 d o u b l e ]
40 l o w e r : [ 4 x1 d o u b l e ]
94 4 Lineare Programmierung mit MATLAB
Wendet man den dualen Simplex-Algorithmus auf das obige Beispiel an:
Abbildung 4.2: Optimierungs-Toolbox, Solver: linprogund Algorithmus ‘dual-simplex’
so erh¨alt man folgendes Ergebnis:
1 LP p r e p r o c e s s i n g removed 0 i n e q u a l i t i e s , 0 e q u a l i t i e s ,
2 0 v a r i a b l e s , and 0 non−z e r o e l e m e n t s i n 0 . 0 0 s e c s .
3
4 I t e r Time Fv al P r i m a l I n f e a s Dual I n f e a s
5 0 0 . 0 6 −1.208333 e+01 6 . 5 3 4 7 0 8 e+00 0 . 0 0 0 0 0 0 e+00
6 5 0 . 0 8 −6.500000 e+00 0 . 0 0 0 0 0 0 e+00 0 . 0 0 0 0 0 0 e+00
7
8 Optimal s o l u t i o n found .
Die Interpretation und Bedeutung dieser Ausk¨unfte folgt mit obigen Erkl¨arungen.
4.2 Beispiel 95
Vergleich
F¨ur den Vergleich der beiden Algorithmen ‘simplex’ und ‘dual-simplex’, ist das bisher an-gewandte Beispiel eigentlich zu klein. Dennoch kann man folgende Unterschiede festhalten:
(a)‘simplex’ (b) ‘dual-simplex’
Es ist offensichtlich, dass das duale Verfahren mehr Iterationen ben¨otigt, daf¨ur aber schneller rechnet.
Um noch einmal die Bedeutung des Algorithmus hervorzuheben, soll das Schlusswort nun der Erfinder, G. Dantzig, selbst haben:
”The tremendous power of the simplex method is a constant surprise to me.“4
4Dantzig, George:
”History of Mathematical Programming: A collection of personal remisniscences“, North-Holland, Amsterdam, 1991.
Literaturverzeichnis
[1] Luenberger, David G.:
”Linear and Nonlinear Programming“, 2nd ed., Addison-Wesley Publishing Company, Reading, 1984.
[2] Nocedal, Jorge and Wright, Stephen J.:
”Numerical Optimization“, 2nd ed., Springer Science+Business Media, 2006.
[3] Luik, Eberhard: Skript der Vorlesung von Dr. Luik:
”Numerik I“ vom Wintersemester 2011/12 an der Universit¨at Konstanz, Fachbereich Mathematik und Statistik.
[4] H¨ammerlin, G¨unther und Hoffmann, Karl-Heinz:
”Numerische Mathematik“, 4., Springer-Verlag, Berlin, 1994.
[5] Mosler, Karl, Dyckerhoff, Rainer und Scheicher, Christoph:
”Mathematische Me-thoden f¨ur ¨Okonomen“, Springer-Verlag, Berlin, 2009.
[6] Oswald, Eugen:
”Die Ber¨ucksichtigung nicht vorzeichenbeschr¨ankter Variablen“, unter:
http://www.cs.hs-rm.de/~weber/or/oswald/or2005teil3.pdf [Abfrage: 21.04.2015].
[7] Becker, Peter:
”Lineare Optimierung“, unter:
1. http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or1/lp1.pdf 2. http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or1/lp2.pdf 3. http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or1/lp3.pdf 4. http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or1/simplex1.pdf 5. http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or1/simplex2.pdf 6. http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or1/dual1.pdf [Abfrage jeweils: 10.05.2015].
[8] Scheideler, Christian:
”Lineare Optimierung“, unter:
http://www14.in.tum.de/lehre/2006SS/ea/lecture_4.pdf [Abfrage: 10.06.2015].
[9] Matlab und Simulink [Abfrage jeweils: 16.06.2015]
1. http://de.mathworks.com/products/optimization/
2. http://de.mathworks.com/help/optim/ug/choosing-a-solver.html?
3. http://de.mathworks.com/help/optim/ug/linprog.html?
4. http://de.mathworks.com/help/optim/ug/linear-programming-algorithms.
html?
[Abfrage jeweils: 16.06.2015].
[10] Greenberg, Harvey J.:
”An Example of Cycling in the Simplex Method“, unter:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.295.7503&rep=rep1&
type=pdf[Abfrage: 27.06.2015].