Mein Objective-Function generiert gleichzeit den Funktionswert und die Gradienten (so wie von Matlab vorgegeben für den Optimierer). Es ist nun so, dass die Berechnung meines Funktionswertes wesentlich weniger Zeit in Anspruch nimmt, als die Berechnung der Gradienten. Mir ist aufgefallen, dass Matlab bei der Optimierung mit fmincon und meinen Optionen manchmal mehr Funktionsauswertungen benötigt für eine Iteration. Ich denke das ist wegen einer Line-Search? Siehe unten:
Code:
First-order Norm of
Iter F-count f(x) Feasibility optimality step 91986.616878e+020.000e+002.110e+016.546e-01 92996.598199e+020.000e+001.899e+016.546e-01 931016.570748e+020.000e+002.171e+013.273e-01 941026.554281e+020.000e+002.512e+013.273e-01 951036.539862e+020.000e+002.837e+013.273e-01 961046.526422e+020.000e+003.059e+013.273e-01 971056.513591e+020.000e+003.517e+013.273e-01 981066.501346e+020.000e+004.603e+013.273e-01 991076.489701e+020.000e+004.608e+013.273e-01 1001086.477551e+020.000e+003.412e+013.273e-01
Da bei der Line-Search ja nur die Funktionswerte gebraucht werden mit dem ersten Gradienten (so habe ich Line-Search bis jetzt verstanden, weil man einfach mit dem Gradienten mehrere Schrittweiten testet), liefert meine Objective-Funktion in dieser Phase der Optimierung natürlich mehr als gebraucht. Da die Berechnung der Gradienten in meiner Berechnung wesentlich zeitintensiver ist, ist das natürlich doppelt blöd.
Kann mir der Optimierer von Matlab diese Information in meine Objective-Funktion irgendwie mitgeben, sodass ich dann wirklich nur den Funktionswert ausgebe, und irgendwelche Pseudo-Gradienten, oder so in etwa?
Ich bin mir natürlich nicht sicher, ob Matlab mit diesen Einstellungen vielleicht aus irgendwelchen anderen Gründen die Gradienten immer braucht.
Der Gradient wird also nur dann ausgegeben, wenn er explizit angefordert wird. Hast Du das in Deinem Code auch so umgesetzt und das "nargout" berücksichtigt? In diesem Fall würde
fmincon
keine überflüssigen Gradienten berechnen.
Gruß, Jan
Romanov
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.11.2016, 19:03
Titel:
Danke, das war kurz und schmerzlos !
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.