Verfasst am: 03.04.2016, 20:56
Titel: Wie soll man eine Quadratsumme geschickt fitten
Hallo zusammen,
ich sitze wieder an das Fitting-Problem für
Diese C(p) mit unbekannten will ich mittels Levenberg-Marquardt ein lokales minimieren, und dann durch Simulated Annealing das globale Minimum finden.....
Ich tue mich schwer eine gescheites Suchfunktion zu definieren für C(p). Nach meiner Vorstellung soll es doch mit
Code:
errfun=0;
for i =1:msize
tempo=@(x)((markt(i) -modellspreads( x,mty,i))/markt(i))^2;
errfun=@(x)errfun+ tempo;
end
Schreibe eine Funktion, die x und die weiteren benötigten Informationen als Input die Abweichung berechnet. Dann übergib an den Solver ein Function Handle auf diese Funktion.
function[ errfun] = parameterKali( x,mty, markt,msize )
errfun=0;
for i =1:msize
tempo=((markt(i) -modellspreads1( x,mty,i))/markt(i))^2;
errfun=errfun+ tempo;
end end
... und bei der Meldung bietet es sich an, über
optimoptions
die Anzahl der Iterationen zu erhöhen.
Grüße,
Harald
Danke Harald, das habe ich verstanden. Nun was ich machen wollte (oder muss) ist eine Kombination aus Levenberg-Marquardt und Simulated Annealling zum Zweck globaler Minimierung. Die Frage ist jetzt über Programmierung hinaus:
wie soll ich die Kombination denn machen? Über Google gibts quasi nichts konkretes. Wikens (2003), Horst(2000) haben halt gesagt, dass es geht, Horst(1997) behauptet mit einem Satz, dass es einfach durch Hinzufügen der SA-Ansatz auf LM-Ansatz geht. Jetzt habe ich das Problem, dass LM auf vektorartige Errorfunktion agiert, und SA nur auf Skalarwert.....Wie soll das gehen?
AHHHH, ich hab lsqnonlin nochmal gelesen. Der rechnet ja in sich nochmal die Quadratsumme, natürlich kommt dann kein Ergebnis raus, wenn ich die Summe eingebe. Gut, technisch muss ich also 2 Errfun definieren, eine nicht quadratsummiert für LM, und eine Quadratsumme für SA?
Algorithmus:
1. ich geben x= x0 startpunkt ein, errfun1 für LM und errfun2 für SA definieren
while Tol nicht erreicht
x=x
2. errfun1 mit x in LM minimieren - Output errfun Vergleiche mit Tol
3. errfun2 in SA minimieren - Output x=x1
end while
gibt es einen speziellen Grund, warum die Simulated Annealing für die globale Optimierung verwenden möchtest?
Laut Doku ist es der letzte Solver, den man als letztes versuchen sollte.
http://de.mathworks.com/help/gads/choosing-a-solver.html
MultiStart
hätte insbesondere den Vorteil, dass du das problemlos mit lsqnonlin verknüpfen kannst. Für die anderen Strategien würde ich fmincon in Verbindung mit deiner alten Zielfunktion versuchen.
gibt es einen speziellen Grund, warum die Simulated Annealing für die globale Optimierung verwenden möchtest?
Laut Doku ist es der letzte Solver, den man als letztes versuchen sollte.
http://de.mathworks.com/help/gads/choosing-a-solver.html
MultiStart
hätte insbesondere den Vorteil, dass du das problemlos mit lsqnonlin verknüpfen kannst. Für die anderen Strategien würde ich fmincon in Verbindung mit deiner alten Zielfunktion versuchen.
Grüße,
Harald
haha weil der Referenzauthor das benutzt hat....Danke für den Rat, mir ist bewusst, dass SA sehr sehr langsam ist. Ich werde mal mit MultiStart probieren.
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.