|
|
Zwinge fmincon zu Stepsize |
|
elchico |
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 04.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.01.2021, 10:21
Titel: Zwinge fmincon zu Stepsize
|
|
|
|
|
Hallo zusammen,
ich habe ein Multistart/fmincon Lösungsansatz für meine Simulationen. Um die Ergebnisse zu validieren, möchte ich das bestehende Programm ein wenig "missbrauchen". Folgendes Beispiel, vereinfacht auf einen einzigen Parameter:
Ich habe einen Parameter, der von 0-30 variiert werden soll (lb und ub für Multistart), wobei der Parameter gegen 30 läuft während der Optimierung. Jetzt würde ich aber gern mal sukzessiv in einem einzigen fmincon Run von 0-30 durch-iterieren (um quasi den Optimierungsverlauf aufzeichnen zu können, da ich testen möchte, ob sich darin irgendwelche Informationen verstecken). So viel zum Background.
Meine Problem:
Wenn ich den Parameter auf 0-30 setze, dann startet fmincon zB bei 0.99 (das wäre mir nah genug an 0), testet dann im Bereich von 0.98 und 1.15 ein bisschen herum und stoppt mit folgender Ausgabe:
Zitat: |
Optimization stopped because the relative changes in all elements of x are
less than options.StepTolerance = 1.000000e-08, and the relative maximum constraint
violation, 0.000000e+00, is less than options.ConstraintTolerance = 1.000000e-06. |
Jetzt versuche ich schon eine ganze Weile, herauszufinden, an welchen Stellschrauben man drehen muss, damit fmincon etwas macht, was folgendem nahe kommt:
Starte (von mir aus) bei 1, und schreite mit einer Schrittgröße von zB 0.5 voran (also 0.5, 1.5), dann ist 1.5 besser. Nächster Schritt 1 und 2 => 2 ist besser .. usw. Schrittgröße ist egal, solange fmincon fortlaufend testet und nicht nur im Bereich von 1.
Ich weiß nicht, ob Multistart fmincon allgemein mitteilt, dass bei 30 Ende wäre? Also ob Multistart da ein Auge drauf hat?
Ansonsten wäre das auch nicht tragisch, wenn fmincon weiter testet, dann würde ich alles größer 30 manuell rausnehmen (die Werte in dem Bereich werden dann biologisch unsinnig).
Daraus könnte ich dann den Verlauf der Optimierung rausziehen und evtl. einen (biologisch interessanten) Zusammenhang finden zwischen Parameter und Minimierungsfunktion (sowas wie: "Minimierungsfunktion ist linear abhängig von diesem Parameter" oÄ).
Unter anderem habe ich den FiniteDifferenceStepSize Wert mal verändert (auf 1e-1), allerdings wird trotzdem nur im Bereich des Startwertes getestet und nicht weiter weg (meine Vermutung ist, dass das nicht auszuhebeln ist?).
Ich hoffe, dass das halbwegs verständlich gefragt ist. Anbei noch meine optimoptions für fmincon.
Danke schon mal und LG
Michi
Beschreibung: |
|
Download |
Dateiname: |
fminconOpts.png |
Dateigröße: |
31.76 KB |
Heruntergeladen: |
193 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.01.2021, 13:47
Titel:
|
|
Hallo,
ich würde sagen, dass das nicht der Zweck bzw. die Vorgehensweise von fmincon ist. Du hast anscheinend nur eine Größe, die variiert werden soll. Das kannst du auch sehr einfach selbst machen und so einen Überblick über die Funktion bekommen:
bestx kann dann als Startwert für eine Optimierung genommen werden, um das genaue globale Minimum zu 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 ;)
|
|
|
elchico |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 04.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.01.2021, 14:17
Titel:
|
|
Hallo Harald,
vielen Dank für deine Antwort.
Mir ist klar, dass das nicht der Zweck von fmincon ist, deswegen hatte ich gehofft, dass es eine Möglichkeit gäbe, den Algorithmus dazu zu zwingen / missbrauchen.
Ich habe für das ursprüngliche Problem 6 Variablen, die es zu optimieren galt. Da ich jetzt durch fmincon eine Idee davon habe, welche Variablen besonders wichtig für die Optimierung sind, hätte ich gern diese einzelnd rausgepickt und verändert in einem gewissen Bereich. Ich hätte jetzt gern den schon existierenden Code dafür hergenommen, da ich somit nicht extra nochmal erklären müsste später, warum ich einen neuen Code schreiben musste, den es dann auch noch zu verifizieren gilt (gleiche Ergebnisse bei gleichem Input bei neuem und altem Code etc).
Aber Du hast wahrscheinlich Recht, es wird trotzdem schneller gehen, nochmal schnell was zu programmieren, auch wenn mir das eigentlich zuwider ist
LG
Michi
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.01.2021, 15:35
Titel:
|
|
Hallo,
Zitat: |
Da ich jetzt durch fmincon eine Idee davon habe, welche Variablen besonders wichtig für die Optimierung sind |
Zu solchen Schlüssen bin ich offen gesagt nie gekommen. Es kann natürlich erkennbar werden, dass bei bestimmten Variablen an bestimmten Stellen kleine Änderungen größere Auswirkungen haben. Das kann aber auch bedeuten, dass die Variable z.B. anders skaliert ist. Beispiel:
Strecke = 15000 [m]. Änderungen von +/- 0.1 werden kaum relevant für die Fahrzeit sein.
Strecke = 15 [km]. Änderungen von +/- 0.1 erscheinen deutlich relevanter für die Fahrzeit.
Ein Solver, der in die Richtung "Suche in verschiedenen Richtungen" geht wäre patternsearch. Aufruf sehr ähnlich wie fmincon, nur komplett andere Vorgehensweise.
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 ;)
|
|
|
|
|
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 - 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.
|
|