durchlaufen lasse, dann bricht er mir leider immer mit evalue = 3997 ab.
Gibt es da intern eine Grenze? Ich dachte Matlab setzt den Wert max_eval automatisch, falls vom Benutzer nicht anderes angegeben, auf 200*Anzahl an Variablen in X.
Also exitflag hat den Wert 0 und die Nachricht
Exiting: Maximum number of function evaluations has been exceeded
- increase MaxFunEvals option
erscheint.
Obwohl ich max_eval = 10000 habe, brichts immer genau bei 3997 ab.
das verwundert mich. Kannst du ein lauffähiges Beispiel zur Verfügung stellen, anhanddessen man das reproduzieren kann?
Mit welchem Release arbeitest du?
also Verison: R2012a (7.14.0.739) 64 -bit.
Bei kleineren Beispielen, also wenn fminsearch über weniger als 15 Variablen minimieren muss, geht alles. Aber da konvergiert das ganze auch "schon" bei unter 3000 Funktionsausertungen.
Ich werde versuchen genau dieses Beispiel, was bei 3997 abbricht, in minimaler Form zu Posten. Allerdings läuft fminsearch da über 40 Minuten bei mir, bis es nach 3997 Auswertungen abbricht!
Gruß
Also ich bekomme es leider nicht hin genau dieses Beispiel in kleiner Form zu Posten. Die Programme sind zu sehr miteinander verzweigt , ich müsste den ganzen Quellcode posten.
Ich verwende fminsearch, da die Matlab Beschreibung (fminsearch finds the minimum of a scalar function of several variables, starting at an initial estimate) gut zu meinen Problem passt. Ich möchte das Oberflächenintegral (scalar function) einer Funktion, welche von mehreren Parametern abhängt (several variables), minimieren. Dazu berechne und gebe ich Startwerte für die Parameter vor und Matlab soll mir die Parameter wieder geben, für welche das Oberflächenintegral minimal wird.
Gibt es Alternativen, die genauso gut passen? Falls ja, werde ich sie versuchen bei Gelegenheit einzubauen.
Danke für den Link, ich werde es mir gleich anschauen.
Gerade habe ich fminsearch nochmal durchlaufen lassen und mir
output.message anzeigen lassen:
Exiting: Maximum number of iterations has been exceeded
- increase MaxIter option
Hab wohl vorhin mit der Ausgabe was verdreht!
Heißt das, dass die Schranke von MaxIter das ganze beendet hat, so dass nur 3997 von 10000 möglichen Funktionsauswertungen möglich waren?
Lasse alles nochmal durchlaufen mit
Ok, Problem gelöst, es lag wirklich an MaxIter. Also werde ich sie einfach beide gleich wählen, damit der Benutzer weniger Daten übergeben muss.
Ich danke dir für deine Hilfe!
dann bin ich ja beruhigt ;) Hätte mich sehr gewundert, wenn MATLAB deine Einstellungen da ignoriert.
Ich würde auch mal fminunc versuchen. Der Funktionsaufruf ist ja quasi gleich, d.h. du müsstest nur fminsearch durch fminunc ersetzen. Da fminunc ein komplett anderes Verfahren verwendet als fminsearch, kann es sein, dass es einen deutlichen Performance-Unterschied gibt.
Ich würde zudem mal den Profiler drüber laufen lassen um zu sehen, ob es Bottlenecks in der Zielfunktion gibt und ggf. schauen, ob man die verbessern kann.
fminunc scheint wirklich schneller zu sein(doppelt so schnell), wobei es im Durchschnitt fast gleiche Ergebnisse wie fminsearch liefert. Muss mir mal genaueres dazu durchlesen. Danke für die Hinweise, schaue mir alles an und werde was Versuchen. Bei Gelegenheit melde ich mich dann nochmal hier!
Gruß
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.