Wie Paulus feststellt, ist es ohne weitere Informationen schwierig, ohne Annahmen Ratschläge zu erteilen.
Bei 10-20 Variablen und teuren Funktionsauswertungen werden tendenziell ableitungsfreie Optimierungsalgorithmen empfohlen. Ich werde dem Rat von Paul stark widersprechen: Sie benötigen im Allgemeinen einen maschinengenauen Gradienten, es sei denn, Sie wenden eine spezielle Methode an (zum Beispiel wird die stochastische Gradientenabnahme beim maschinellen Lernen die Form des Ziels ausnutzen, vernünftig zu sein Gradientenschätzungen).
Jeder Quasi-Newton-Schritt hat die Form:
H~( xk) dk= - ∇ f( xk) ,
wo eine Annäherung an die Hessische Matrix ist,dkdie Suchrichtung ist,xkder Wert der Entscheidungsvariablen bei der aktuellen Iteration ist,fIhre Zielfunktion ist und∇fder Gradient Ihres Ziels ist und Entscheidungsvariablen werden wiefolgtaktualisiert:xk+1=xk+αkdk, wobeiαkH~dkxkf∇ fxk + 1= xk+ αkdkαkist eine in gewisser Weise festgelegte Schrittweite (wie eine Liniensuche). Sie kommen auf bestimmte Weise mit der Approximation des Hessischen durch und Ihre Iterationen werden konvergieren. Wenn Sie jedoch so etwas wie endliche Differenzenapproximationen des Hessischen durch exakte Gradienten verwenden, können Sie unter Problemen leiden, die auf mangelnde Konditionierung zurückzuführen sind. Typischerweise wird das Hessische mithilfe des Gradienten approximiert (z. B. BFGS-Typ-Methoden mit Rang-1-Aktualisierungen des Hessischen).
Die Annäherung des Hessischen und des Gradienten über endliche Differenzen ist aus mehreren Gründen eine schlechte Idee:
- Da der Gradient fehlerhaft sein wird, entspricht die angewendete Quasi-Newton-Methode dem Auffinden der Wurzel einer verrauschten Funktion
- Wenn Funktionsauswertungen teuer sind und Sie versuchen, einen Gradienten in Bezug auf Variablen auszuwerten , werden Sie N Funktionsauswertungen pro Iteration kostenNN
- Wenn Sie Fehler in der Steigung haben, werden Sie mehr Fehler in Ihrem Hessischen haben, was ein großes Problem in Bezug auf die Konditionierung des linearen Systems darstellt
- ... und es kostet Sie Funktionsbewertungen pro IterationN2
Um also eine schlechte Iteration von Quasi-Newton zu erhalten, führen Sie bis zu 420 Funktionsbewertungen mit 30 Minuten pro Bewertung durch, was bedeutet, dass Sie entweder eine Weile auf jede Iteration warten müssen oder brauchen einen großen Cluster nur für die Funktionsauswertung. Die tatsächlichen linearen Lösungen werden (höchstens!) 20 mal 20 Matrizen haben, daher gibt es keinen Grund, diese zu parallelisieren. Wenn Sie Verlaufsinformationen erhalten können, indem Sie beispielsweise ein benachbartes Problem lösen, ist dies möglicherweise sinnvoller. In diesem Fall lohnt es sich möglicherweise, ein Buch wie Nocedal & Wright zu lesen.
Wenn Sie eine Vielzahl von Funktionsbewertungen parallel durchführen möchten, sollten Sie sich stattdessen mit Ersatzmodellierungsansätzen oder Methoden zur Generierung von Mengenrecherchen befassen, bevor Sie Quasi-Newton-Ansätze in Betracht ziehen. Die klassischen Übersichtsartikel sind die von Rios und Sahinidis zu derivatfreien Methoden , die 2012 veröffentlicht wurden und einen wirklich guten und umfassenden Vergleich liefern. der Benchmarking-Artikel von More and Wild aus dem Jahr 2009; das Lehrbuch 2009 "Introduction to Derivative-Free Optimization" von Conn, Scheinberg und Vicente; und der Übersichtsartikel über Suchmethoden für Generierungsmengen von Kolda, Lewis und Torczon aus dem Jahr 2003.
Wie bereits erwähnt, implementiert das DAKOTA-Softwarepaket einige dieser Methoden, ebenso wie NLOPT , das DIRECT implementiert, und einige der Ersatzmodellierungsmethoden von Powell. Vielleicht haben Sie auch einen Blick auf nehmen MCS ; Es ist in MATLAB geschrieben, aber vielleicht können Sie die MATLAB-Implementierung auf die Sprache Ihrer Wahl portieren. DAKOTA besteht im Wesentlichen aus einer Sammlung von Skripten, mit denen Sie Ihre teure Simulation ausführen und Daten für Optimierungsalgorithmen sammeln können. NLOPT verfügt über Schnittstellen in einer großen Anzahl von Sprachen. Das Erlernen von DAKOTA nimmt jedoch einige Zeit in Anspruch und es ist eine Menge Dokumentation zu lesen.