|
Dojo |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 05.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.01.2014, 17:30
Titel: Monte Carlo Sequenz
|
 |
Hi Leute,
ich habe eine Frage zur MC-Simulation, ich lasse hier mit Absicht erstmal den Code weg, den ich bisher habe.
Ich habe ein Modell und einen experimentellen Geschwindigkeitsverlauf.
Nun möchte ich das Modell natürlich an den Verlauf anfitten, was auch alles mit lsqnonlin klappt, Allerdings möchte ich zur Auswahl der Startparameter (für lsqnonlin) bereits möglichst gute Startwerte bekommen, was ich bisher mit dem rand Befehl realisiere.
Wenn ich diese zufällig erzeugten Startparameter dann aber plotte, liegen die natürlich jenseits von Gut und Böse und nicht einmal in der Nähe des experimentellen Verlaufs. Daher bestimme ich die Abweichung zwischen diesen Parametersätzen und nehme davon den besten, welcher aber immer noch sehr weit vom Verlauf weg liegt.
Meine Frage:
Kennt jemand eine Möglichkeit möglichst genaue Parameter-Startwerte über eine Monte-Carlo-Methode oder ähnliches zu erzeugen?
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 08:19
Titel:
|
 |
Hallo,
was du machst klingt sehr nach dem, was in MultiStart bereits implementiert ist. Sofern du die Global Optimization Toolbox hast, schau dir das doch mal an.
Ansonsten: viele Startpunkte generieren und nach Möglichkeit Schranken für die Startpunkte angeben - viel mehr kann man nicht machen.
Bei manchen Modellen ist es nahezu egal, welche Startwerte man wählt. Bei anderen Modellen ist es möglich, aus dem Datenverlauf sinnvolle Startwerte zu errechnen. Für letzteres müsste man aber das konkrete Modell kennen.
Grüße,
Harald
|
|
|
Dojo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 05.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 15:04
Titel:
|
 |
Ich habe noch nie mit der Global Optimization Toolbox gearbeitet, aber ich habe heute unter anderem gelernt, dass man beim fmincon-Solver ebenfalls die Möglichkeit hat Multistartpunkte zu generieren...
Ich würde es am liebsten händisch machen.
Deine Antwort hilft mir zwar schon weiter, aber wenn ich es sekbst schreiben wollte, müsste ich, wie du sagts, Grenzen festlegen.
Es ist natürlich ein leichtes sich mit rand quasizufällige Zahlen zu erzeugen, aber wie schränke ich da ein?
Was ich bisher habe ist das:
K = (rand(9,100000).*10.^((rand(9,100000)-0.5)*10))
In meinem Modell sind 9 Parameter, die alles sehr weit auseinander liegen und ich bin mir nicht einmal genau sicher, ob es wirklich die Parameter sind, die letztlich die "Richtigen" sind.
Genau diese Einschränkung ist daher das Problem, hast du dafür eine mögliche Lösung parat?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.01.2014, 23:52
Titel:
|
 |
Hallo,
9 Parameter sind recht viel und bergen ein großes Risiko, dass man in lokale Minima läuft.
Wie sieht das Modell denn aus? Ist eine Vereinfachung möglich, so dass man zunächst mal mit weniger Parametern arbeitet?
Wenn du deine Startwerte auf einen bestimmten Bereich festlegst, heíßt das ja nicht, dass die Lösung auch in diesem Bereich sein muss. Nach der Wahl des Modells sollte man schon ein grobes Gefühl haben, in welcher Größenordnung die Parameter liegen können.
Als Startwerte würde ich hier nicht echte Zufallszahlen nehmen, sondern Quasizufallszahlen (sobolset oder haltonset), damit der Zahlenraum besser ausgefüllt wird - du hast ja i.d.R. nichts davon, wenn zwei Startwerte sehr nah beieinander liegen.
Grüße,
Harald
|
|
|
faris |

Forum-Newbie
|
 |
Beiträge: 1
|
 |
|
 |
Anmeldedatum: 27.01.14
|
 |
|
 |
Wohnort: newyork
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.01.2014, 13:42
Titel:
|
 |
|
|
Dojo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 05.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.01.2014, 15:49
Titel:
|
 |
Hi Harald,
ja 9 Parameter sind echt viel, ich bekomme aber eine relativ robuste Schätzung hin. Vereinfachen kann ich nicht weiter. Das Modell sieht aus wie folgt:
Z = ((c_A.*c_B.*k1*k3*k5*k7) - (c_P.*c_Q.*k2*k4*k6*k8 )).*c_E;
N = (k2*(k4+k5)*k7)+(c_A.*k1*(k4+k5)*k7)+(c_B.*k3*k5*k7)+(c_A.*c_B.*k1*k3*(k5+k7))+(c_P.*c_A.*k1*k4*k6)+(c_B.*c_Q.*k3*k5*k8 )+(c_Q.*k2*(k4+k5)*k8 )+(c_P.*k2*k4*k6)+(c_P.*c_Q.*(k2+k4)*k6*k8 )+(c_A.*c_B.*c_P.*k1*k3*k6)+(c_B.*c_P.*c_Q.*k3*k6*k8 );
Modell = Z/N;
Wobei c_x jeweils gemessene Konzentrationen darstellen.
Ein neunter Parameter kommt für die Bestimmung von c_E hinzu.
Das ganze wird dann an gemessene Daten "angefittet".
Der Tipp mit sobolset ist nicht schlecht, ich informiere mich darüber.
LG
|
|
|
|
|
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 - 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.
|
|