Fachbereich Grundlagenwissenschaften Prof. Dr. H. Dathe Numerische Mathematik/Optimierung Eine Einführung in Theorie und Verfahren Die MATLAB-Funktionen (Beschreibung : Siehe MATLAB-Hilfen) linprog Lineare Optimierung fminunc Nichtlineare Optimierung ohne Nebenbedingungen fminsearch Ableitungsfreies Verfahren von Nelder/Mead zur Minimierung nichtlinearer Funktionen (Simplex-oder Polytopverfahren) ohne Nebenbedingungen fmincon Nichtlineare Optimierung mit Nebenbedingungen in Form von Gleichungen und/oder Ungleichungen. Aufgabenstellung 2. Die MATLAB-Funktionen linprog, fminunc, fminsearch und fmincon 3. Bereitstellung der Problemdaten 4. Die MATLAB-Funktion optimset 5. Arbeiten mit einer grafischen Nutzeroberfläche
. Aufgabenstellung Aufgabenstellung, Grundbegriffe min f(x), x X (P) f(x) X R n Zielfunktion zulässige (Lösungs-) Menge X D f R n einfachster Fall : X = R n (unrestringiertes Problem) X wird in der Regel durch Gleichungen und/oder Ungleichungen beschrieben (Nebenbedingungen, Restriktionen) Beispiele : Bsp. : x + 2x 2 max x + x 2 00 6x + 9x 2 720 x 2 60 x,x 2 0 Bsp. 2 : f(x) = f(x,x 2 ) = 2x 2 6x x 2 + x 3 2 min Bsp. 3 : f(x) = f(x,x 2 ) = 2x 2 6x x 2 + x 3 2 min unter den Nebenbedingungen : x 6, x 2 4, x 2 + x2 2 8 2
2. Die MATLAB-Funktionen linprog, fminunc, fminsearch und fmincon linprog Lineare Optimierung fminunc Nichtlineare Optimierung ohne Nebenbedingungen fminsearch Ableitungsfreies Verfahren von Nelder/Mead zur Minimierung nichtlinearer Funktionen (Simplex-oder Polytopverfahren) ohne Nebenbedingungen fmincon Nichtlineare Optimierung mit Nebenbedingungen in Form von Gleichungen und/oder Ungleichungen LINEARE OPTIMIERUNG : linprog : Gelöst wird die Aufgabe (Gärtner) : x + 2x 2 max x + x 2 00 6x + 9x 2 720 x 2 60 x,x 2 0 Grafik Beispiel : 20 00 Optimale Lösung : x * =(30,60) T z*=50 80 60 40 Zulässige Menge 20 0 20 40 20 0 20 40 60 80 00 20 40 3
>> A A = 6 9 0 >> cc cc = - -2 >> bb bb = 00 720 60 >> lb = 0 0 >> opt = optimset( largescale, off, simplex, on ); >> [a,b,c,d]=linprog(cc,a,bb,[],[],lb,[],[],opt) Optimization terminated. a = 30 60 b = -50 c = d = iterations: 3 algorithm: medium scale: simplex cgiterations: [] message: Optimization terminated. 4
NICHTLINEARE OPTIMIERUNG : Testfunktion : f(x) = f(x,x 2 ) = 2x 2 6x x 2 + x 3 2 Grafik Beispiel 2 (Niveaulinien, contour-plot) : 8 6 4 Lok. Min. 2 0 SATTEL 2 4 4 2 0 2 4 6 8 MATLAB-Funktion : %funbsp_gg.m function [y,gy]=funbsp_gg(x) y=2*x()^2-6*x()*x(2) +x(2)^3; if nargout > gy() = 4*x()-6*x(2); gy(2) = -6*x()+3*x(2)^2; end fminunc : >> opt = optimset( largescale, off ) >> x0=[3 3];% Startpunkt >> [a,b,c,d]=fminunc(@funbsp_gg,[3 3],opt) Optimization terminated: relative infinity-norm of gradient less than options.tolfun. Computing finite-difference Hessian using user-supplied objective function. a = 4.5000 3.0000 b = -3.5000 5
c = d = iterations: 6 funccount: 27 stepsize: firstorderopt: 5.2982e-007 algorithm: medium-scale: Quasi-Newton line search message: [x85 char] fminsearch : >> x0=[4 3];% Startpunkt >> [a,b,c,d]=fminsearch(@funbsp_gg,x0) a = 4.5000 3.0000 b = -3.5000 c = d = iterations: 32 funccount: 63 algorithm: Nelder-Mead simplex direct search message: [x96 char] >> fmincon : Gelöst wird die Aufgabe : unter den Nebenbedingungen : f(x) = f(x,x 2 ) = 2x 2 6x x 2 + x 3 2 min x 6, x 2 4, x 2 + x 2 2 8 MATLAB-Funktion für die nichtlineare Ungleichung : function [c,ceq]=nleq(x) c=x()^2+x(2)^2-8; ceq=[]; 6
Grafik Beispiel 3 (Niveaulinien, contour-plot, zulässige Menge, lokale Lösung) : 8 7.5 7 6.5 6 5.5 5 4.5 4 3.5 Zul. Menge Lokales Minimum 3 4 5 6 7 8 9 >> opt = optimset( largescale, off ) >> [7 5] % Startpunkt >> [a,b,c,d]=fmincon(@funbsp_gg,[7 5],[],[],[],[],[6 4],[],@nleq,opt) Optimization terminated: first-order optimality measure less than options.tolfun and maximum constraint violation is less than options.tolcon. Active inequalities (to within options.tolcon = e-006): lower upper ineqlin ineqnonlin 2 a = 6 4 b = -8 c = d = iterations: 2 funccount: 9 lssteplength: stepsize: 2.243 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: 0 message: [x43 char] 7
3. Bereitstellung der Problemdaten. Generieren der Problemdaten im Kommandofenster Verfügbarbarkeit benötigter Funktionen über das eingestellte Arbeitsverzeichnis Aufruf derjenigen MATLAB-Funktion, die eine gegebene Aufgabenstellung löst Ergebnisausgabe wahlweise in das Kommandofenster oder über Variablen 2. Erstellen der Daten mit dem MATLAB Feld-Editor Speichern als mat-file mit dem Befehl save Bereitstellen der Problemdaten im Arbeitsspeicher mit dem Befehl load 3. Schreiben eines m-files (Skriptfile) für die Punkte. bzw. 2. Aufruf des m-files im Kommandofenster 4. Verwendung einer graphische Nutzeroberfläche, Befehl optimtool 4. Die MATLAB-Funktion optimset Festlegen der Optionen für den Ablauf der Optimierung (Vorgaben des Nutzers, falls nicht Standardsetzungen verwendet werden sollen ) Typische Syntax : opt = optimset( parameter,wert, parameter2,wert2,...) Beispiele : >>opt=optimset( MaxIter,500) % maximale Schrittzahl eines Iterationsverfahrens >>opt=optimset( GradObj, on ) %Vorgabe des Gradienten der Zielfunktion >>opt=optimset( GradObj, off ) %Numerische Berechnung des Gradienten der Zielfunktion >>opt=optimset( TolFun,.0e-0) %Abbruch, falls Funktionswertdifferenz kleiner oder gleich.0e-0 Den MATLAB-Hilfen ist zu entnehmen, welche Parameter für ein ausgewähltes Minimierungswerkzeug verwendet werden können. 8
5. Arbeiten mit einer grafischen Nutzeroberfläche Öffnen der Nutzeroberfläche mit dem Befehl optimtool (Kommandofenster) 3 Bereiche : Wahl des Minimierungswerkzeuges, Eingabe der Problemdaten, Ausgabe der Ergebnisse Festlegen von Optionen für den Ablauf der Optimierung, falls gewünscht Verfügbarkeit von Hilfen, die Nutzung von Minimierungswerkzeugen betreffend 9