Verfasst am: 15.10.2010, 16:39
Titel: Matlab-Optimierer auf Simulink-Modell anwendbar!?
Hallo liebe Matlab-Experten,
ich muss für meine Diplomarbeit die Parameter eines bestehenden Simulink-Modells (E-Auto) optimieren.
Die erste Idee war nun, einen in Matlab vorhandenen Optimierungsalgorithmus wie z.B. fmincon zu verwenden.
Dazu habe ich erst einmal dessen Anwendung bei einem sehr einfachen Modell versucht: der berühmten "Banana"-Funktion.. Diese habe ich in Simulink nachgebaut und wollte dann mit fmincon aus Matlab heraus das Minimum finden.
Leider gibt mir der Optimierer immer falsche Werte zurück, ohne eine Fehlermeldung auszugeben.
Ich komme leider selbst nicht drauf, warum das so ist.
Wahrscheinlich irgendwas total Dummes was ich nicht so recht verstehe
Hier mein Code der "Objective Function", die auskommentierte Zeile ist die normale Funktionsgleichung:
Als Ergebnis bekomme ich dann x= [0.2496 -0.0001] und fval= 0.9524..
Was leider völlig falsch ist..
Benutze ich den selben Aufruf, verwende aber in der "banana"-Funktion den auskommentierten Teil und kommentiere den Simulink-Part aus (siehe oben), bekomme ich das richtige Ergebnis:
x= [0.7864 0.6177] und fval= 0.0457..
Bitte bitte kann mir sagen was ich da für nen Fehler einbaue..
Vielen Dank schonmal
PS: Ich habe mal meine "Simulink-Banana-Funktion" angehängt, ich weiss dass die nicht besonders elegant gemacht ist, aber richtig müsste sie eigentlich sein, jedenfalls gibt sie bei Auruf mit einem bestimmten x immer das richtige Ergebnis aus..
vielen Dank für die Hilfe!
Ich dachte irgendwie bei wiederholtem Aufruf des Simulinkmodells müsste ich die Parameter mit set_param setzen.. War natürlich Blödsinn
ich habe ein ähnliches Problem mit fminsearch.
fminsearch wertet ja s_banana mehrfach aus.
Aber wie übergebe ich die Parameter, denn die diversen fx von fminsearch sind doch lokale Variablen?
Oder kann ich die auch mit dem simset('SrcWorkspace','Current') "auslesen"?
Und wieso ruft bam_bam "sim('s_banana',[0 10],opt);" auf?
Ist das nicht 11 mal die selbe Funktionsauswertung, oder liegt das an fmincon??
Herzlichen Dank im Voraus!
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.