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

Welche Anzahl an Multistart NumTrialPoints ausreichend?

 

elchico
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2020, 08:44     Titel: Welche Anzahl an Multistart NumTrialPoints ausreichend?
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Multistart-Objekt (mit fmincon), der 1-11 variable Parameter hat (das kann der User schlussendlich entscheiden). Die restlichen Parameter werden dann als "fixierte Parameter" übergeben. Bei 5 variablen Parametern läuft das Programm ca. 10 h.

Meine Frage ist jetzt: Gibt es eine Möglichkeit, die Anzahl der randomisierten "NumTrialPoints" initial irgendwie auszurechnen? Also die Anzahl so zu legen, dass das Hand und Fuß hat?
Denn ich könnte mir vorstellen, dass ich bei nur einem variable Parameter vielleicht nur 100 NumTrialPoints brauche, während bei 10 Parameter mehr Startpunkte nötig wären. Allerdings kann ich mir im Moment noch überhaupt keinen Weg vorstellen, wie die Anzahl der Startpunkte mit der Anzahl der Parameter sinnvoll korreliert ist.

Wie entscheidet Ihr, wie viele Startpunkte nötig sind, um ein Problem hinreichend zu untersuchen?

Über eine Quelle wäre ich auch sehr dankbar (ich würde die Anzahl der Startpunkte am Ende dann gern auch wissenschaftlich begründen).

Danke und LG
Michi
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.07.2020, 09:31     Titel:
  Antworten mit Zitat      
Hallo,

meine kurze Antwort ist: nein.
Je mehr Startpunkte man verwendet, desto höher ist (bei zufälligen Startwerten) die Wahrscheinlichkeit, dass ein Durchlauf zum globalen Minimum konvergiert.

Das ist aber generell ein Manko der globalen Optimierung: wirklich sicher, dass man das globale Minimum gefunden hat, ist man nie, oder zumindest nur unter bestimmten Annahmen.

Beispiel:
Code:
x = 0:0.01:10;
y = 1+ (x-7).^2;
w = 0.2;
y(x > 5-w & x < 5+w) = 10*abs(x(x > 5-w & x < 5+w)-5);
plot(x,y)


Egal wie gut der Algorithmus ist: wenn w klein genug ist und man nicht "zufällig" bei x = 5 auswertet, wird man das globale Minimum nicht finden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2020, 09:37     Titel:
  Antworten mit Zitat      
Hallo Harald,

das ist definitiv ein wenig deprimierend Wink

Wie machst Du das dann? Also ich habe zB jetzt standardmäßig 1000 Startpunkte, unabhängig von der Anzahl der initialen variablen Parameter, aber hab überhaupt kein Gefühl, ob ich damit völlig die Startpunkt-Anzahl über oder unterschätze. Weißt Du, ob es dazu Literatur gibt?
Habe da auf die Schnelle nichts verwertbares gefunden ...

LG
Michi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.07.2020, 10:04     Titel:
  Antworten mit Zitat      
Hallo,

das beste, was ich vorschlagen kann: Anzahl der gefundenen Lösungen ansehen. Beispiel aus der Doku mit abgeänderter Anzahl an Startpunkten

Code:
rng default % For reproducibility
ms = MultiStart;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
[x,fval,exitflag,outpt,solutions] = run(ms,problem,8); % --> solutions ist 1x4


Dasselbe mit
Code:
[x,fval,exitflag,outpt,solutions] = run(ms,problem,30); % --> solutions ist 1x6


Dasselbe mit
Code:
[x,fval,exitflag,outpt,solutions] = run(ms,problem,300); % --> solutions ist 1x6


Wenn ich die Anzahl der Startpunkte deutlich erhöhe und aber trotzdem immer in die gleichen lokalen Minima laufe, dann kann man vermuten, dass es einfach nicht mehr Minima gibt. Hier also: 8 Startpunkte sind zu wenig, mehr als 30 bringt nichts.

Literatur dazu ist mir nicht bekannt.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2020, 08:13     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für Deine Antwort.

Dann teste ich mal weiter. Weswegen ich frage, ist, dass teilweise das Multistart-Objekt ca. 12 - 20 h läuft und es dadurch natürlich etwas schwer, zu sagen, ich lasse es jetzt 1000 Runs laufen oder 10k Runs. Und auch das austesten ist damit sehr zeitaufwendig.

Danke nochmal.
LG
Michi
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 - 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.