|
|
Optimization Toolbox - Übergabe von zustzälichen Parameter |
|
Shakes79 |
Forum-Anfänger
|
|
Beiträge: 14
|
|
|
|
Anmeldedatum: 24.05.11
|
|
|
|
Wohnort: Linz
|
|
|
|
Version: 2010a
|
|
|
|
|
|
Verfasst am: 02.04.2014, 10:24
Titel: Optimization Toolbox - Übergabe von zustzälichen Parameter
|
|
Hallo
Ich verwende den Optimierer fmnicon in einer GUI. In dieser GUI habe ich alle Parameter als handles gespeichert, nun benötige ich diese handles auch in meiner Optimierungsfunktion. Laut Matlab Hilfe funktioniert das ja, unter anderem, über eine anonymous function. Das habe ich auch implementier, es funktioniert auch, aber...
1.) Wie kann ich in der anonymous function die handles speichern, ich hatte versucht: guidata(gco, handles); funktionierte leider nicht
2.) Wert von x wird nicht angepaßt und damit hat er nach 3 Durchläufen logischerweise ein lokales Minimum erreicht.
3.) Wie kann ich in der Optimierungsfunktion eine Laufvariabel einfügen, (Output.iterations ?)
Danke für Eure Hilfe
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 02.04.2014, 10:37
Titel:
|
|
Hallo,
zu 1.:
Statt "funktionierte leider nicht" bitte immer sagen, ob es eine Fehlermeldung gibt (und wenn ja: welche) oder inwiefern das Verhalten unerwartet ist.
Versuch mal
bzw. wenn die GUI an sich eine andere Tag-Eigenschaft hat, statt figure1 dieses Tag.
zu 2.:
Wird deine matOptim nicht mit verschiedenen x-Werten aufgerufen oder wo liegt das Problem? Es liegt nahe, dass die x-Werte sich schon unterscheiden
(probier mal "format long") und der Startwert nur nahe eines lokalen Minimums war.
zu 3.:
Was soll die Laufvariable denn machen? Soll sie bei jeder Funktionsauswertung hochgezählt werden? Bei jedem Optimierungsschritt?
Grüße,
Harald
|
|
|
Shakes79 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 14
|
|
|
|
Anmeldedatum: 24.05.11
|
|
|
|
Wohnort: Linz
|
|
|
|
Version: 2010a
|
|
|
|
|
|
Verfasst am: 02.04.2014, 11:55
Titel:
|
|
Hallo Harald
Danke für die rasche Antwort.
zu 1.) die Variablen in handles werde upgedatet. Damit gelöst
zu 3.) sollte jeden Iterationsschritt aufzeichen und in der Optimierungsfunction zur Verfügung stehen, erübrigt sich jedoch durch Funktionalität von 1.)
zu 2.) du hattest recht, x wurde geändert jedoch im Bereich 10E-8. Das kann ich über Options('DiffMinChange') ändern, richtig ?
LGünter
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 02.04.2014, 12:14
Titel:
|
|
Hallo,
Zitat: |
Das kann ich über Options('DiffMinChange') ändern, richtig ? |
Ja, aber da sollte man sich evtl. eine etwas tiefer gehemde Frage stellen: fmincon ist ein gradientenbasiertes Verfahren - ist es für deinen Fall sinnvoll, Gradienten anzunähern? Bei verrauschten Funktionen ist dies z.B. nicht der Fall. Es funktioniert dann zwar in vielen Fällen, wenn man 'DiffMinChange' erhöht, aber das ist an sich nicht Sinn der Sache.
Man muss sich darüber im klaren sein, dass die Solver aus der Optimization Toolbox darauf ausgelegt sind, ein lokales Minimum zu finden. Bei einem ausreichend guten Startwert oder bei einer gutmütigen Funktion ist dies zugleich das globale Minimum, aber die Frage ist, ob man sich darauf verlassen kann / will.
Eine Möglichkeit wäre, über verschiedene Startvektoren zu iterieren. Alternativ kann man Algorithmen aus der Global Optimization Toolbox, z.B. patternsearch, einsetzen.
Grüße,
Harald
|
|
|
Shakes79 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 14
|
|
|
|
Anmeldedatum: 24.05.11
|
|
|
|
Wohnort: Linz
|
|
|
|
Version: 2010a
|
|
|
|
|
|
Verfasst am: 04.04.2014, 08:55
Titel:
|
|
|
|
|
Hallo Harald
Die Frage stellt sich natürlich, nur mit meinen Randbedingungen habe ich es als das sinnvollste erachtet, da ich auch mit einem manuellen Gradientenverfahren bereits "gute" Ergebnisse erzielt habe.
Ich verwende Matlab als GUI, für die Optimierung und zur Auswertung der großen Datenmengen. Mit Matlab steuere ich über VBS (einzig mögliche API) eine FEM-Software Modlfow an, diese berechnet den 11 Orientierungstensor der Fasern, Export über VBS => Auswertung mit Matlab und Vergleich mit durch CT gemessenen realen 11-Orientierungstensoren
Meine Randbedingungen:
1.) 2 veränderbare Variablen die als Input für die Optimierung agieren.
2.) Als Output der arithmetische Mittelwert der Abweichung von FEM & CT => Ein einzelner Wert
3.) Nur beschränkte Anzahl an Iterationen möglich (Simulation dauert bis zu 6 Stunden)
4.) Annahmen, dass es sich um eine quadratische Funktion handelt
Was meinst du ? Ist ein anderes Optimierungsverfahren zu empfehlen ?
Grüße Günter
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.04.2014, 09:26
Titel:
|
|
Hallo,
Wenn in der Zielfunktion FEM-Simulationen verwendet werden, dann entstehen daraus ja Ungenauigkeiten. Wenn man fmincon verwendet, sollte man da also auf jeden Fall 'DiffMinChange' erhöhen, damit die Gradienten sinnvoll angenähert werden.
Zitat: |
Was meinst du ? Ist ein anderes Optimierungsverfahren zu empfehlen ? |
Ich würde es so sagen: wenn du mit deinem momentanen Ansatz gute Ergebnisse erzielst, ist das so in Ordnung.
Bei fmincon besteht aber immer die Gefahr, dass man in ein lokales Minimum läuft. Dann würde ich es mit verschiedenen Startwerten oder Algorithmen aus der Global Optimization Toolbox (z.B. patternsearch) probieren.
Bei der langen Simulationsdauer kann man auch parallel computing, evtl. sogar auf einem Cluster, in Erwägung ziehen. Ist natürlich auch eine Frage der Umsetzbarkeit, was das FEM-Programm angeht.
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|