Verfasst am: 23.04.2013, 11:45
Titel: Hilfe bei der Anwendung von fmincon - fminsearch
Hallo,
ich habe versucht mit "fminsearch-X = fminsearch(FUN,X0)" eine Optimierung durchzuführen. Dabei werden die Parameter jedoch negativ. Dies ergibt jedoch keinen Sinn.
Aus diesem Grund bin ich auf die Funktion fmincon gestoßen, da man dort Grenzen definieren kann.
X = fmincon(FUN,X0,A,B)
Kann mir jemand erklären wie ich die Grenzen festlege und wozu ich A und B brauche?
steht an sich in der Dokumentation. A und b sind lineare Ungleichungen, untere und obere Schranken sind erst spätere Argumente.
Wenn die anderen Argumente nicht benötigt werden, können sie auf [] gesetzt werden.
jepp habe ich gerade getan.
Ich bekomme folgende Meldung:
Warning: Trust-region-reflective algorithm does not solve
this type of problem, using active-set algorithm. You could
also try the interior-point or sqp algorithms: set the
Algorithm option to 'interior-point' or 'sqp' and rerun.
diese Meldung ist nicht weiter ungewöhnlich. Wenn die Ergebnisse passen, kannst du sie getrost ignorieren. Wie sie behoben werden kann, steht ja dort. Das Setzen der Optionen erfolgt mit optimset.
Warning: To use the default trust-region-reflective algorithm you must supply the
gradient in the objective function and set the GradObj option to 'on'. FMINCON will use
the active-set algorithm instead. For information on applicable algorithms, see
Choosing the Algorithm in the documentation.
> In fmincon at 520
In fmincon_test at 176
Warning: Your current settings will run a different algorithm (interior-point) in a
future release.
> In fmincon at 525
In fmincon_test at 176
Local minimum possible. Constraints satisfied.
fmincon stopped because the predicted change in the objective function
is less than the default value of the function tolerance and constraints
are satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
No active inequalities.
Ich habe die Grenzen extrem Groß gemacht und der Fehler kommt immer noch. Vllt wisst ihr ja was man da machen kann!?
sieht auf den ersten Blick gut aus. Für kleinste Quadrate ist oft lsqnonlin besser.
Vermutlich läuft fmincon in ein lokales Minimum. Da helfen bessere Startwerte bzw. Iterieren über verschiedene Startwerte.
das Ergebnis hängt auch super stark von der Gewichtung ab.
Das Problem ist, dass ich für den verlauf eines Wertes 15000 punkte habe und für die anderen jeweils nur einen stationären Wert. Ich habe deshalb die norm(x-x2)/1000 (x und x2 sind die 15000 werte) geteilt damit die einzelnen werte mehr ins Gewicht fallen.
Wie man das am besten gewichtet weiß auch niemand oder?
bitte stelle deine Fragen möglichst zusammenhängend.
Den Beitrag von 8:26 hatte ich übersehen - das ist eine ganz normale Statusmeldung von fmincon, keine Fehlermeldung.
Zitat:
Wie geht das mit dem Interieren ?
Pseudocode:
Code:
for...
Startwert wählen
fmincon anwenden
Ergebnis mit vorherigen vergleichen und schauen, ob es besser ist
end
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.