• Keine Ergebnisse gefunden

Input- und Output-Argumente

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].