Verfasst am: 31.10.2014, 14:27
Titel: Optimization Toolbox- lsqnonlin bewegt sich nicht
Hallo!
Ich habe grundsätzlich das Problem, dass sich lsqnonlin nicht von den Anfangswerten weg bewegt.
Detailliert geht es um Folgendes:
Ich habe ein FEM Modell eines Biegebalkens mit Querschnittsübergängen und zwei unterschiedlichen E-Moduln (Vektor x), das mir die Biegeeigenfrequenzen berechnet. Gleichzeitig habe ich aus Messungen an der realen Struktur die realen Eigenfrequenzen. Jetzt möchte ich über eine Variation der E-Moduln die Modellfrequenzen auf die realen Frequenzen optimieren.
Meine Zielfunktion für lsqnonlin lautet
ich weise also erst die aktuellen E-Moduln (Vektor x) der Struktur zu, dann berechne ich die Eigenfrequenzen und dann wird die Zielfunktion gebildet, die ein Vektor der prozentualen Abweichungen der berechneten und realen Eigenfrequenzen beinhaltet.
Nun zum Optimiererverhalten:
Es wird nur die direkte Umgebung der Startwerte x0 abgesucht (Größenordnung 0,1% der Startwerte). Das ist für meine Anwendung viel zu wenig. Wie kann ich nun lsqnonlin beibringen, dass der Suchbereich erweitert werden soll?
Mit den Optionen hab ich schon rumgespielt, keine Änderung im grundsätzlichen Verhalten.
Grüße!
--------------------
tl;dr
lsqnonlin beibringen, einen größeren Parameterbereich abzusuchen
--------------------
lsqnonlin ist ein gradientenbasiertes Verfahren. Es wird also erstmal den lokalen Bereich absuchen.
Insbesondere wenn die Funktion verrauscht ist, kann es helfen 'DiffMinChange' zu setzen.
Wenn aber wirklich globale Optimierung erfolgen soll, dann würde ich zu den Solvern der Global Optimization Toolbox raten. Möglichkeiten wären MultiStart als Wrapper um lsqnonlin, patternsearch, oder man kann natürlich auch selbst über verschiedene Startwerte iterieren.
Morgen,
danke für deine Antwort. Ich bin jetzt mit der global optimization TB auf einem guten Weg denke ich. Ich werde auch mein Problem nochmal mathematisch analysieren, um rauszufinden warum lsqnonlin alleine nicht so recht will. Ich hab ebenfalls gute Ergebnisse mit dem genetischen Algorithmus erreicht.
wenn du ga verwendest, solltest du das Ergebnis nochmal als Startwert in lsqnonlin füttern, um das Ergebnis lokal weiter zu optimieren.
Grüße,
Harald
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.