ich hab versucht mittels Matlab eine Gleichung an einen Datensatz heranzufitten, was mir jedoch nicht so recht gelingen will. Ich kriege zwar Ergebnisse, jedoch sind diese erstens falsch (bzw. alles andere als optimal) und zweitens varieren sie stark mit dem Startwert vom Algorithmus. Aber nun mal zum Code:
Code:
x0=[1;1;1];
[x,resnorm,residual,exitflag] = lsqcurvefit(@NRTL,x0,X,g);
x
- die Startwerte sind SEHR weit von den erwarteten Werten weg, d.h., lsqcurvefit muss lange iterieren, bevor es in die nähe kommt.
- daher kommt die Warnung:
"lsqcurvefit stopped because it exceeded the function evaluation limit"
- erlaubt man dem Solver mehr Iterationen
bekommt man auch (nach langer Zeit) vernünftige Werte.
- Am besten allerdings ist es, vernünftige Startwerte zu setzen, die in der Größenordnung des erwarteten Ergebnisses liegen, z.B.
x0=[10000;-6000;1];
- die Funktion scheint viele lokale Minima zu haben. Obige Startwerte führen zu einem Ergebnis, das besser als das unten angegebene ist (im Sinne der Fehlerabweichung). Ob es das bessere Ergebnis in Bezug auf das ist, was man haben möchte, kann ich nichts sagen.
Da ich selbst die letzten Tage an einer derartigen Problematik gearbeitet habe, hier noch eine Antwort auf die Frage, eher für Leute, die durch die Forensuche darauf stoßen.
lsqcurvefit optimiert lokal, daher hängt die Lösung sehr stark von den Startwerten ab.
Beispielsweise bei komplizierten Modellfunktionen zur Approximation/Regression von Punktwolken ist man natürlich an einem guten Kurvenverlauf interessiert. Das führt unweigerlich zu einer globalen Optimierung mit einem mitunter komplexen Lösungsraum und einer an vielen Stellen nicht diff'baren Zielfunktion. Hier spielt der Genetische Algorithmus seine Stärken aus. Dabei sollte man darauf achten, dass dieser über die Parameter (gaoptimset) gut eingestellt wird. Die Populationsgröße ist entscheidend für die Güte der Lösung.
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.