Rechnerpraktikum zu Grundlagen der Nichtlinearen Optimierung

Ähnliche Dokumente
Nichtlineare Gleichungssysteme

Optimierung für Nichtmathematiker

Das Gradientenverfahren

Rechnerpraktikum zu Grundlagen der Nichtlinearen Optimierung

Rechnerpraktikum zur Optimierung III

Optimierung. Optimierung. Vorlesung 2 Optimierung ohne Nebenbedingungen Gradientenverfahren Thomas Brox, Fabian Kuhn

NICHTRESTRINGIERTE OPTIMIERUNG

Studientag zur Algorithmischen Mathematik

Wir untersuchen in diesem Abschnitt das (lokale) Newton Verfahren zur Lösung eines nichtlinearen Gleichungssystems

18.4 Das Newton-Verfahren

Die MATLAB-Funktionen (Beschreibung : Siehe MATLAB-Hilfen)

Lösungsvorschlag zur Modulprüfung Numerische Methoden Sommersemester 2016

Numerische Verfahren zur Lösung unrestringierter Optimierungsaufgaben. Eine kurze Einführung in Quasi Newton Verfahren

Rechnerpraktikum zu Grundlagen der Nichtlinearen Optimierung

3 Nichtlineare Gleichungssysteme

Übungen zu Splines Lösungen zu Übung 20

9 Optimierung mehrdimensionaler reeller Funktionen f : R n R

8.3 Lösen von Gleichungen mit dem Newton-Verfahren

Inexakte Newton Verfahren

Vorlesung Einführung in die Mathematische Optimierung (Wintersemester 2013/14)

Nullstellen von algebraischen Gleichungen

Mathematische Behandlung der Natur- und Wirtschaftswissenschaften I. f(x) := e x + x.

Newton-Verfahren zur gleichungsbeschränkten Optimierung. 1 Gleichungsbeschränkte Optimierungsprobleme

Kapitel 4: Nichtlineare Nullstellenprobleme

Inhaltsübersicht für heute:

Numerisches Programmieren, Übungen

3 Optimierung mehrdimensionaler Funktionen f : R n R

Newton-Verfahren für ein Skalarfunktion

6 Iterationsverfahren für lineare und nichtlineare Gleichungssysteme

Numerische Methoden I Schriftliche Prüfung Gruppe A 23. Jan :00-14:00 (120 min)

6.8 Newton Verfahren und Varianten

Bemerkung 2.1: Das Newtonverahren kann auch als sequential quad. minimization verstanden werden: 2.1 Ein globalisiertes Newtonverfahren

Übungen zur Ingenieur-Mathematik III WS 2011/12 Blatt Aufgabe 25: Berechnen Sie den kritischen Punkt der Funktion

Klausur zur Vorlesung Ausgewählte Kapitel der Ingenieurmathematik

NUMERISCHE MATHEMATIK I

Lösungsskizzen zu den Klausuraufgaben zum Kurs 1142 Algorithmische Mathematik. a 0 = 0 =

Das Trust-Region-Verfahren

6. Iterationsverfahren. Fixpunktiteration. 6.Iterationsverfahren: Fixpunktiteration Numerisches Programmieren, Jürgen Bräckle page 1 of 16

KLAUSUR zur Numerik I mit Lösungen. Aufgabe 1: (10 Punkte) [ wahr falsch ] 1. Die maximale Ordnung einer s-stufigen Quadraturformel ist s 2.

Kombinatorische Optimierung

(d) das zu Grunde liegende Problem gut konditioniert ist.

5 Interpolation und Approximation

Klasse WI06b MLAN2 zweite-klausur 13. Juni 2007

Numerik für Ingenieure I Wintersemester 2008

y (k) (0) = y (k) y(z) = c 1 e αz + c 2 e βz. c 1 + c 2 = y 0 k=1 k=1,...,m y k f k (x)

Optimierung mit Matlab

Innere-Punkt-Methoden

KAPITEL 3. Konvexe Funktionen

Hochschule RheinMain WS 2016/17 Prof. Dr. D. Lehmann. 7. Übungsblatt zur Vorlesung Komplexe Funktionen

Nichtlineare Gleichungssysteme

Mathematische Werkzeuge R. Neubecker, WS 2016 / 2017

5 Numerische Mathematik

Optimierung für Nichtmathematiker

Numerische Methoden 6. Übungsblatt

6. Polynom-Interpolation

Grundlagen der Optimierung. Übung 6

d) Produkte orthogonaler Matrizen sind wieder orthogonal.

Nelder-Mead Kriging-Verfahren NEWUOA

Prüfung zur Vorlesung Mathematik I/II

8 Interpolation. 8.1 Problemstellung. Gegeben: Diskrete Werte einer Funktion f : R R an n + 1 Stützstellen. x 0 < x 1 <... < x n.

ETHZ, D-MATH. Numerische Methoden D-PHYS, WS 2015/16 Dr. V. Gradinaru

HTL Kapfenberg SPLINE Interpolation Seite 1 von 7.

1 Umkehrfunktionen und implizite Funktionen

Optimierung in R. Michael Scholz

Übungen zu Numerische Mathematik (V2E2) Sommersemester 2008

Optimale Steuerung 1 Prozessoptimierung 1

Musterlösung zum Übungsblatt Interpolation nach Newton, Nevill, Lagrange.

Musterlösung zu Blatt 1

Ausgleichsproblem. Definition (1.0.3)

Modulprüfung Numerische Mathematik 1

Fixpunkt-Iterationen

Substitutionsverfahren vs. Lagrange-Methode

Nichtlineare Gleichungssysteme

Nichtlineare Gleichungen

Übung 5, Analytische Optimierung

Optimieren unter Nebenbedingungen

Numerische Integration und Differentiation

Technische Universität Berlin Fakultät II Institut für Mathematik SS 13 G. Bärwolff, C. Mehl, G. Penn-Karras

Wirtschaftsmathematik Plus für International Management (BA) und Betriebswirtschaft (BA)

Lösungen zu den Hausaufgaben zur Analysis II

5 Numerische Iterationsverfahren

QUASI-SPLINE-INTERPOLATION BEZÜGLICH GLEICHMÄSSIGER UNTERTEILUNGEN

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen

Optimierung. Optimierung. Vorlesung 8 Lineare Programmierung III: Simplex Algorithmus Fabian Kuhn

Numerische Verfahren

Operations Research. Konvexe Funktionen. konvexe Funktionen. konvexe Funktionen. Rainer Schrader. 4. Juni Gliederung

Optimierung mit Matlab

(x x j ) R m [x] (3) x x j x k x j. R m [x]. (4)

Kapitel 16 : Differentialrechnung

KAPITEL 8. Interpolation

Klausurlösung Einführung in Numerische Methoden und FEM Universität Siegen, Department Maschinenbau,

Polynominterpolation

VORLESUNG 11 Lineare Optimierung (Viele Folien nach Ulf Lorenz, jetzt TU Darmstadt)

Diplom VP Numerik 21. März 2005

Nichtlineare Gleichungen, mehrere Unbekannte

Teil II. Nichtlineare Optimierung

Optimierung für Nichtmathematiker

Numerische Verfahren

Mathematik für Wirtschaftswissenschaftler im WS 12/13 Lösungen zu den Übungsaufgaben Blatt 12

BACHELORARBEIT. Moderne Gradientenverfahren für den Einsatz in technischen Aufgabenstellungen und deren Anwendung auf ein- und multikriterielle

Transkript:

TU München Lehrstuhl Mathematische Optimierung Prof. Dr. Michael Ulbrich Dipl.-Math. Florian Lindemann Wintersemester 008/09 Blatt 1 Rechnerpraktikum zu Grundlagen der Nichtlinearen Optimierung Für die Bearbeitung des Aufgabenzettels benötigen wir MATLAB. Dieses können Sie im Terminal durch den Aufruf starten. /usr/local/applic/bin/matlab & P1. Berechnung eines 60-eckigen Polyeders (C 60 -Molekül) Die 60 Ecken v i = (v 1 i,v i,v3 i ) R3 eines Polyeders sollen so bestimmt werden, dass seine Oberfläche aus 1 regelmäßigen Fünf- und 0 regelmäßigen Sechsecken der Seitenlänge 1 besteht (C 60 -Molekül). Für je zwei benachbarte Ecken v i,v j muss daher gelten v i v j 1 = 0. Weiter gelten in jedem Fünfeck (v i1,v i,v i3,v i4,v i5,v i1 ) die Gleichungen v ij v ij+ 4sin (3π/10) = 0, j = 1,...,5, wobei i 6 = i 1, i 7 = i. Ebenso gilt für jedes Sechseck (v i1,v i,v i3,v i4,v i5,v i6,v i1 ) v ij v ij+ 4sin (π/3) = 0, j = 1,...,6, wobei i 7 = i 1, i 8 = i. Schließlich fordern wir noch, um das Polyeder zu fixieren, v 1 = 0, v 1 = v = 0, v 1 3 = 0. All diese 90 + 60 + 10 + 6 = 76 Gleichungen schreiben wir in der Form F(x) = 0 mit F : R 180 R 76 und x = (v 1,...,v 60 ) T. Zur numerischen Behandlung überführen wir das obige Gleichungssystem in ein nichtlineares Optimierungsproblem: min f(x), f(x) = 1 x R 180 F(x). (1) Anhand dieses hochdimensionalen Problems lassen sich die Eigenschaften von Optimierungsverfahren sehr gut visualisieren. 1

Mit Hilfe von MATLAB wurden ein Gradienten- und ein Gauß-Newton-Verfahren zur Lösung dieses Problems implementiert. Die entsprechenden Prozeduren heißen gradverf und GaussNewton. Außerdem stehen unter den Namen xinit1, xinit, usw., mehrere Startpolyeder zur Verfügung. Gradientenverfahren mit Armijo-Schrittweitenwahl: x k+1 = x k + σ k s k, s k = f(x k ) = F (x k ) T F(x k ), σ k { k k = 0,1...} maximal mit f(x k +σ k s k ) f(x k ) σ k γ f(x k ) T s k. Gauß-Newton-Verfahren mit Armijo-Schrittweitenwahl: x k+1 = x k + σ k s k, F (x k ) T F (x k )s k = F (x k ) T F(x k ) (= f(x k )), σ k wie oben. a) Laden Sie sich über die Website des Rechnerpraktikums die Datei P1.tar herunter und entpacken Sie diese in Ihrem Arbeitsverzeichnis mit dem Befehl tar -xf P1.tar. Starten Sie MATLAB und wechseln Sie in dieses Arbeitsverzeichnis. b) Durch die Eingabe x1 = load( xinit1 ); gradverf(x1, ffct ); wird das Gradientenverfahren auf das Problem (1) angewendet, wobei im Punkt xinit1 gestartet wird. Nach jeder Iteration wird das zur aktuellen Iterierten gehörende Polyeder graphisch dargestellt. Außerdem werden k, f(x k ), f(x k ) und σ k ausgegeben. Durch Drücken der Entertaste kann die nächste Iteration gestartet werden. Ebenso wird durch x = load( xinit ); GaussNewton(x, Ffct, ffct ); das Gauß-Newton-Verfahren gestartet, wobei xinit der Startpunkt ist. Führen Sie für mehrere Startpolyeder xinit1, xinit,... das Gradientenund das Gauß-Newton-Verfahren durch und bewerten Sie die Leistungsfähigkeit der beiden Algorithmen. c) Wir wollen nochmal den Startpunkt xinit6 mit dem Gauß-Newton-Verfahren betrachten und mehr Iterationen zulassen. Öffnen Sie dafür die Datei GaussNewton.m und setzen Sie die maximale Iterationszahl itmax auf den Wert 100. Starten Sie das Verfahren erneut und beurteilen Sie das Ergebnis. Wie ist die Lösung zu interpretieren und warum? d) Beim letzten Startpunkt konvergiert das Verfahren lokal deutlich langsamer als bei den anderen Startpunkten. Haben Sie dafür eine theoretisch basierte Vermutung? Vergleichen Sie dazu die Iterationsvorschrift des Newtonverfahrens mit dem des Gauß-Newton-Verfahrens.

P. Gradienten-, Newton-, inverses BFGS-Verfahren a) Laden Sie sich über die Website des Rechnerpraktikums die Datei P.tar herunter und entpacken Sie diese in Ihrem Arbeitsverzeichnis. b) Untersuchen Sie mit MATLAB das Konvergenzverhalten des Gradienten-, Newton- und des inversen BFGS-Verfahrens für folgende Funktionen und Startpunkte: Dateiname Zielfunktion f Startpunkte 1) ExA.m (x 1 x ) + (x 1 4) (0,0), (10,10) ) ExBk.m x 1 + kx, (10,1), (1,100) k = 1,10,100 3) Rosenbrock.m 100(x x 1 ) + (1 x 1 ) (0,0), (-1.,1) 4) Brown.m (Browns (x 1 10 6 ) (x 10 6 ) (1,1), (10,10) schlecht skalierte Fkt.) +(x 1 x ) Orientieren Sie sich dabei an folgender Syntax: Gradientenverfahren: Newtonverfahren: inverses BFGS-Verfahren: gradverf([0;0], ExA ); newton([0;0], ExA ); bfgs([0;0], ExA, gexa ); In allen Fällen wird das jeweilige Optimierungsverfahren mit dem Startpunkt (0,0) auf die Funktion ExA angewendet. Beim BFGS-Verfahren ist eine gesonderte Eingabe der Funktion zur Auswertung des Gradienten (in diesem Fall gexa) vorgesehen. Entsprechende Funktionen gexb1, gbrown, usw. sind ebenfalls vorhanden. Um mehr Iterationen beim Gradientenverfahren zuzulassen, öffnen Sie die Datei gradverf.m und setzen Sie die maximale Iterationszahl itmax auf den Wert 1000. c) Schreiben Sie eine eigene Testfunktion mit entsprechenden Dateien Test.m und gtest.m, von dem Sie das Minimum kennen. Testen Sie die Verfahren an Ihrem Beispiel. P3. Alternative Schrittweitenberechnung Bei der Armijo-Regel wird die Schrittweite zu einem Punkt x und einer Abstiegsrichtung s durch folgenden Algorithmus bestimmt: Bestimme die größte Zahl σ {1,β,β,...}, für die gilt: f(x + σs) f(x) σγ f(x) T s 3

wobei β, γ (0, 1). Dabei wird σ so lange mit dem Faktor β verkleinert, bis die Armijo-Bedingung erfüllt ist. Anstelle dieses Backtracking-Ansatzes kann man die Funktion φ(σ) = f(x + σs) interpolieren, um eine geeignete Schrittweite zu finden. Die Armijo-Bedingung kann mit φ auf folgende Form gebracht werden: φ(σ) φ(0) σγφ (0) () Gesucht ist ein σ welches () erfüllt. Sei eine Startschätzung σ 0 (z.b. σ 0 = 1) gegeben. Falls σ 0 () nicht erfüllt, so approximieren wir φ(σ) mit Hilfe eines quadratischen Modells φ Q (σ): ( φ(σ0 ) φ(0) σ 0 φ ) (0) φ Q (σ) = σ + φ (0)σ + φ(0) σ 0 welches die Interpolationsbedingungen φ Q (0) = φ(0),φ Q (σ 0 ) = φ(σ 0 ) und φ Q (0) = φ (0) erfüllt. Die neue Schrittweite ist das Minimum von φ Q, also φ (0)σ0 σ 1 = (φ(σ 0 ) φ(0) φ (0)σ 0 ) Falls σ 1 die Armijo-Bedingung () erfüllt, so ist die Suche beendet. Andernfalls kann man ein kubisches Modell φ K (σ) erstellen, welches den Interpolationsbedingungen an φ(0),φ (0),φ(σ 0 ) und φ(σ 1 ) genügt: φ K (σ) = aσ 3 + bσ + σφ (0) + φ(0) wobei ( a b ) = 1 ( σ 0 σ1 σ0 σ 1 (σ 1 σ 0 ) σ0 3 σ1 3 )( φ(σ1 ) φ(0) φ (0)σ 1 φ(σ 0 ) φ(0) φ (0)σ 0 ) Über die erste Ableitung von φ K kann man erkennen, dass das Minimum σ von φ K im Intervall [0,σ 1 ] liegt und gegeben ist durch σ = b + b 3aφ (0) 3a Falls σ die Armijo-Bedingung () erfüllt, so ist eine passende Schrittweite gefunden. Falls nicht, kann der Prozess der kubischen Interpolation fortgesetzt werden, bis eine Lösung gefunden wird, wobei die Werte φ(0),φ (0) und die letzten beiden Werte von φ benutzt werden. Um zu vermeiden, dass ein σ k entweder zu nahe an σ k 1 oder zu viel kleiner als σ k 1 ist, wird zudem folgende Regel eingeführt: Falls σ k / [β min σ k 1,β max σ k 1 ] setzen wir: σ k = σ k 1 4

Dabei sind β min,β max (0,1) mit β min < β max zwei von k und auch von einer äußeren Iteration unabhängige Konstanten. Dies garantiert, dass in endlich vielen Schritten eine Schrittweite gefunden wird und das Gradientenverfahren mit dieser Schrittweitenregel global konvergiert. a) Laden Sie sich über die Website des Rechnerpraktikums die Datei P3.tar herunter und entpacken Sie diese in Ihrem Arbeitsverzeichnis. Starten Sie MATLAB und wechseln Sie in dieses Arbeitsverzeichnis. b) Die Armijo-Regel mit Interpolation ist in der Datei InterpArmijo.m implementiert. Vergleichen Sie den Quelltext mit der Beschreibung der Schrittweitenregel. c) Ein Gradientenverfahren, welches mit der interpolierten Armijo-Regel arbeitet ist IPAgradverf. Testen Sie die neue Schrittweitenregel anhand des Problems ExB100 aus der Aufgabe P mit dem Startpunkt (1,10): IPAgradverf([1;10], ExB100 ); und vergleichen Sie das Ergebnis und die Iterationszahlen mit dem Gradientenverfahren mit normaler Armijo-Regel. Testen Sie auch andere Startpunkte. d) Vergleichen Sie die beiden Verfahren anhand einiger Probleme aus der Aufgabe P. Testen Sie auch Ihr eigenes Beispiel. P4.* Zusatzaufgabe: Programmieren und Make a) Laden Sie sich von der Website die Datei P4.tar herunter und entpacken Sie diese. Schauen Sie sich die Dateien plot.cpp, figuren.cpp und figuren.hpp an. Kompilieren Sie die Datei figuren.cpp mit dem g++ Kompiler und der Option -c, also g++ -c figuren.cpp (nutzen Sie nicht das Makefile!). Entstehen neue Dateien? Kompilieren Sie dann ebenso plot.cpp. Erstellen Sie schließlich ein Programm prog indem Sie die beiden erzeugten Objektdateien linken: g++ -o prog figuren.o plot.o. b) Starten Sie das Programm und testen Sie, was es leistet. c) Schauen Sie sich dann das Makefile genauer an. Geben Sie im Terminal make clean ein, um die kompilierten Dateien zu löschen und danach make. Welche Dateien werden kompiliert? d) Verändern Sie die Datei figuren.cpp so, dass statt Sternen ein beliebiges anderes Zeichen ausgegeben wird. Geben Sie danach make ein. Welche Dateien werden neu kompiliert und warum? 5

e) Fügen Sie eine weitere Zeichenmethode in figuren.cpp und figuren.hpp ein, die Sie beliebig gestalten können. Fügen Sie in plot.cpp eine weitere Zeichenoption dazu und kompilieren Sie alles mit make. Testen Sie Ihr Programm. 6