|
|
Fehler bei Optimierung mit "fgaolattain" |
|
JoernS |

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 20.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.06.2015, 15:05
Titel: Fehler bei Optimierung mit "fgaolattain"
|
 |
|
 |
|
Hallo,
ich bin gerade bei einer multiobjective optimization. Dazu verwende ich die Matlab-Funktion "fgoalattain". Wenn ich die Optimierung starte kommen drei Fehlermeldungen aus welchen ich nicht schlauer werden.
Zitat: |
Error using optimfcnchk (line 288)
FUN must be a function, a valid string expression, or an inline function object.
Error in fgoalattain (line 339)
funfcn = optimfcnchk(FUN,'goalcon',length(varargin),funValCheck, ...
Error in multi_OS (line 21)
a = fgoalattain(multi_OS_functions(a0),a0,goal,weight) |
Bei Verwendung der selben Funktion "fgoalattain" in der Optimization Toolbox kommt ebenfalls die erste Fehlermeldung wie oben.
Zitat: |
Optimization running.
Error running optimization.
FUN must be a function, a valid string expression, or an inline function object.
|
Hier der verwendete Code:
und die "multi_OS_functions" -Funktion
Kann mir jemand weiterhelfen wie ich das Problem lösen kann bzw. sagen was ich falsch mache?
Nur zur Info, ich schließe auch einen recht einfachen Fehler nicht aus da ich mich noch als Matlab-Neuling bezeichnen würde.
Danke schonmal,
Gruß Jörn
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 24.06.2015, 20:58
Titel:
|
 |
Hallo,
gerade für Neulinge ist es sehr empfehlenswert, die Dokumentation zu lesen. Da wird ausführlich beschrieben, wie die Funktion übergeben werden muss:
Ich habe allerdings den Eindruck, dass das Problem in dieser Form unbeschränkt ist und man keine "vernünftige" Lösung bekommt.
Hast du vielleicht noch Nebenbedingungen?
Grüße,
Harald
|
|
|
JoernS |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 20.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.06.2015, 08:59
Titel:
|
 |
|
 |
|
Hallo Harald,
viele Danke für die Hilfe.
Die Beschreibung hatte ich eigentlich mehr als ausführlich gelesen. Als ich mit dem function handle jedoch Probleme hatte, hatte ich dieses irgendwann einfach weggelassen. Mit der Aussage in der Dokumentation
Zitat: |
The function fun can be specified as a function handle for a function file |
war ich der Meinung dass ein function handle nicht zwingend notwendig ist.
Ich habe es jetzt mit dem function handele probiert und bekomme nach geschätzten drei Sekunden eine Lösung für a.
Parallel habe ich das ganze mit der optimization Toolbox probiert, jedoch bricht diese nach einigen Sekunden ab aufgrund von default Werten. Bei erhöhen dieser Werte rechnet es scheinbar auch unbegrenzt und hört erst wieder bei erreichen der Endwerte auf. Bei mir gerade ging das schon Richtung 20 Sekunden. (Die objective function in der optimization toolbox habe ich ebenfalls als function handle angegeben). Bezüglich dieser Toolbox muss ich mich aber auch erst noch etwas mit dieser beschäftigen um konkret Fragen zu stellen, sofern ich sie mir nicht selbst beantworten kann. Wobei meiner Meinung nach mit den selben Angaben wie auch in meinem Programm auch die selben Ergebnis rauskommen sollten bzw. die Toolbox überhaupt ein Ergebnis zurückgeben sollte.
Zitat: |
Ergänzung: Ok, habe gerade gesehen dass die Optimization Toolbox auf das selbe Ergebnis kommt, sich stoppt nur aufgrund des Erreichens der default Werte.
Zitat: |
fgoalattain stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 400 (the default value). |
|
Was meinst du genau mit
Zitat: |
dass das Problem in dieser Form unbeschränkt ist und man keine "vernünftige" Lösung bekommt |
?
Nebenbediungungen habe ich meinr Meinung nach keine.
Die Formel(n) die ich optimieren will stammen aus der Literatur, die Daten sind einfach Messwerte aus Versuchen.
Gruß Jörn
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.06.2015, 09:27
Titel:
|
 |
|
 |
|
Hallo,
Zitat: |
war ich der Meinung dass ein function handle nicht zwingend notwendig ist |
Ist es auch nicht. Es gibt noch eine andere Syntax, die aber veraltet und nicht mehr empfohlen ist und daher nicht mehr aufgeführt ist.
Wenn eine Möglichkeit empfohlen wird und man etwas anderes versucht, dieses andere aber nicht funktioniert, dann ist es doch naheliegend, doch wieder auf die empfohlene Möglichkeit zurückzugreifen? ;)
Zitat: |
Parallel habe ich das ganze mit der optimization Toolbox probiert. [...] Wobei meiner Meinung nach mit den selben Angaben wie auch in meinem Programm auch die selben Ergebnis rauskommen sollten bzw. die Toolbox überhaupt ein Ergebnis zurückgeben sollte. |
fgoalattain ist eine Funktion der Optimization Toolbox. Was meinst du also mit dem ersten zitierten Satz?
Die Optimization Toolbox enthält viele Solver, die je nach Problemstellung unterschiedlich gut geeignet sind. Wenn ein Solver bekannt wäre, der alle Probleme in jeder Hinsicht perfekt löst, könnte man sich die anderen ja schenken...
Zitat: |
Was meinst du genau mit
Zitat:
dass das Problem in dieser Form unbeschränkt ist und man keine "vernünftige" Lösung bekommt
? |
Wenn ich die Anzahl der Iterationen auf 20000 erhöhe, erhalte ich die Lösung
a =
1.0e+11 *
-1.9373
-0.0530
-0.1147
Das ist in den wenigsten Fällen sinnvoll.
Zitat: |
Nebenbediungungen habe ich meinr Meinung nach keine. |
Ohne den Hintergrund zu kennen, kann ich das weder bestätigen noch widersprechen. Allerdings ist es wichtig, auch Nebenbedingungen anzugeben, die einem selbst trivial erscheinen, z.B. dass Längenmaße > 0 sein müssen.
Grüße,
Harald
|
|
|
JoernS |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 20.05.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.06.2015, 09:56
Titel:
|
 |
|
 |
|
Hallo Harald,
da stimme ich dir zu, in Zukunft werde ich beim funciton handle bleiben.
Ich habe zuerst ohne optimization toolbox gearbeitet (auch wenn fgaolattain eine funktion dieser toolbox ist). Erst nachdem das ganze mit deiner Hilfe heute funktioniert hat hab ich die Optimierung direkt mit der Toolbox erneut probiert. In der Ergänzung in den vorherigen Post habe ich ja dann noch geschrieben dass das selbe Ergebnis rauskommt, nur die Toolbox nach paar Sekunden aufhört zu rechnen.
Im Endeffekt trägt das gerade nicht so viel zum Thema bei, hab einfach nur geschrieben was ich gemacht habe. Wieviele Iterationen usw sinnvol sind und welche Einstellungen ich in der Toolbox überhaupt ändern sollte kann ich momentan auch noch nicht beantworten, dazu muss ich mich erst noch weiter damit beschäftigen.
Ich verstehe allerdings nicht warum sich die Werte der kalkulierten Paramter noch so stark ändern wenn ich die Iterationen noch weiter erhöhe. Denn irgendwann sollte doch die Funktion die Parameter so optimiert haben dass sich diese nicht mehr großartig ändern, also irgendeinen Endwert anstreben, auch wenn ich das ganze noch zig mal weiteroptimiere. (Beide Funktionen sollen gleich wichtig gewichtet werden, wodurch ich doch sozusagen auf der Pareto-Front einen bestimmten Punkt auswähle)
Was du mit den Nebenbedingungen meinst verstehe ich, ich werde mir dazu noch einmal Gedanken machen und auch die trivialen Bedingungen versuchen zu berücksichtigen.
Bezüglich der Optimierung bin ich mit meinem Wissen erstmal am Ende , ich werde mich erstmal weiter damit beschäftigen sodass ich dann vielleicht detailliertere Aussagen machen kann.
Aber nochmals vielen Dank bis hierhin. Die weiteren Posts werde ich natürlich auch weiterverfolgen und behandeln.
Gruß
Jörn
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.06.2015, 10:05
Titel:
|
 |
Hallo,
Zitat: |
Denn irgendwann sollte doch die Funktion die Parameter so optimiert haben dass sich diese nicht mehr großartig ändern, also irgendeinen Endwert anstreben, auch wenn ich das ganze noch zig mal weiteroptimiere. |
Deswegen ja meine Vermutung, dass das Problem möglicherweise nicht beschränkt ist.
Ein weiteres Problem kann sein, dass es bei zwei Zielen mit drei Freiheitsgraden viele gleichwertige Lösungen geben kann.
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 - 2025
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.
|
|