WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

fminsearch - MaxFunEvals bricht bei 4000 ab

 

Antonios
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2013, 07:19     Titel: fminsearch - MaxFunEvals bricht bei 4000 ab
  Antworten mit Zitat      
Hallo,

wenn ich zum Beispiel

Code:

max_eval = 10000;
options = optimset('MaxFunEvals', max_eval);
[X,FVAL,exitflag,output] = fminsearch(@(X)surface_element(X,n,v1,v2,v3,c,2),Startwerte,options);
evalue = output.funcCount;
 

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.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2013, 19:44     Titel:
  Antworten mit Zitat      
Hallo,

und mit welche Meldung wird ausgegeben?
Es kann ja sein, dass ein anderes Abbruchkriterium greift.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2013, 19:58     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2013, 20:34     Titel:
  Antworten mit Zitat      
Hallo,

das verwundert mich. Kannst du ein lauffähiges Beispiel zur Verfügung stellen, anhanddessen man das reproduzieren kann?
Mit welchem Release arbeitest du?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2013, 20:49     Titel:
  Antworten mit Zitat      
Hi,

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ß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2013, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

gibt es einen Grund, warum du fminsearch verwendest?

Je nach Problemart sind Solver aus der Optimization Toolbox oft sehr viel effizienter.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2013, 21:35     Titel:
  Antworten mit Zitat      
Also ich bekomme es leider nicht hin genau dieses Beispiel in kleiner Form zu Posten. Die Programme sind zu sehr miteinander verzweigt Sad, 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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2013, 22:30     Titel:
  Antworten mit Zitat      
Hallo,

Informationen zu anderen Solvern findest du hier:
http://www.mathworks.com/help/relea.....ug/choosing-a-solver.html

Was man auch versuchen könnte: das Ergebnis von fminsearch nochmal in fminsearch als Startwert füttern.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2013, 23:44     Titel:
  Antworten mit Zitat      
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
Code:

max_eval = 10000;
MaxIter  = max_eval;
options = optimset('MaxFunEvals', max_eval,'MaxIter',MaxIter);
[X,FVAL,exitflag,output] = fminsearch(@(X)surface_element(X,n,v1,v2,v3,c,2),Startwerte,options);
output.funcCount
output.message
 
.
Laut Link ist fminsearch am besten geeignet für die Aufgabe.
Danke dafür schon mal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2013, 02:03     Titel:
  Antworten mit Zitat      
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!

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.01.2013, 13:18     Titel:
  Antworten mit Zitat      
Hallo,

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.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Antonios
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 13.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2013, 23:31     Titel:
  Antworten mit Zitat      
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ß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.