Technische Universität Chemnitz Prof. Dr. R. Herzog, Dr. A. Günnel Chemnitz, 1. Dezember 2015 Nichtlineare Optimierung Übung 4 Aufgabe 8: Implementierung des BFGS-Verfahrens Implementieren Sie das Quasi-Newtonverfahren mit inversem BFGS-Update (Algorithmus 4.35) mit (strenger) Wolfe-Schrittweitenstrategie in Matlab. Verwenden Sie function X = quasi_newton_BFGS ( fhandle , x0 , Minv , atol , ,→ parameters ) als erste Zeile. Dabei bezeichnet fhandle das Handle auf eine Funktion und x0 den Startpunkt. Das Argument Minv ist eine Funktion, die das Matrix-Vektor-Produkt M −1 y berechnet und kann für das Abbruchkriterium (4.16) verwendet werden. Weiter ist atol die absolute Toleranz und es sei τrel = 0 in dem Abbruchkriterium (4.16). Die Struktur parameters enthält die Parameter für die strenge Wolfe-Liniensuche. Als Startmatrix B0 für das BFGS-Update können Sie die Identität I verwenden. Zurückgegeben werden soll eine Matrix X = [x0 , x1 , x2 , . . .], welche den gesamten Iterationsverlauf enthält. Das inverse BFGS-Update (4.42) soll in einer eigenen Datei implementiert werden. Die erste Zeile in BFGS_update.m soll function [ B_new ] = BFGS_update (B , s , y ) BFGS mittels (4.42) berechnen. lauten und Bk+1 Teste das implementierte Verfahren an verschiedenen Funktionen und Startwerten. Interpretiere dabei auch die Anzahl der benötigten Iterationen. Aufgabe 9: Implementierung des LM-BFGS-Verfahrens Implementieren Sie das Quasi-Newtonverfahren mit (inversem) Limited-Memory BFGSUpdate (Algorithmus 4.38) mit (strenger) Wolfe-Schrittweitenstrategie in Matlab. Verwenden Sie function X = quasi_newton_LMBFGS ( fhandle , x0 , Minv , atol , ,→ parameters ) als erste Zeile. Dabei bezeichnet fhandle das Handle auf eine Funktion und x0 den Startpunkt. Das Argument Minv ist eine Funktion, die das Matrix-Vektor-Produkt M −1 y berechnet und wir nutzen B LM-BFGS = M −1 . Für das Abbruchkriterium (4.16) 1 bezeichnet atol die absulte Toleranz und es sei τrel = 0. Die Struktur parameters enthält die Parameter für die strenge Wolfe-Liniensuche, sowie die Anzahl zu speichernder Vektoren in der Variablen parameters.m. Zurückgegeben werden soll eine Matrix X = [x0 , x1 , x2 , . . .], welche den gesamten Iterationsverlauf enthält. Die Auswertung von BkLM-BFGS g (Algorithmus 4.37) soll in einer eigenen Datei implementiert werden. Die erste Zeile in apply_LMBFGS.m soll function [ d ] = apply_LMBFGS (Y ,S , B0 , g ) lauten. Die Matrizen Y und S enthalten die Vektor {yi }i=k−m,...,k−1 und {si }i=k−m,...,k−1 als Spalten. Beachte: Der Wert für m ergibt sich damit gerade aus der Anzahl der Spalten von Y bzw. S. Teste das implementierte Verfahren an verschiedenen Funktionen und Startwerten. Wie wirken sich verschiedene Werte von m auf die Iterationen aus? 2
© Copyright 2024 ExpyDoc