%% Sum of squares
Magnitude(1)=1E6;
Magnitude(2)=1;
%% Sum of squares
Sum_of_squares1= sum((ySpeicher(:,1))-Exp_Data_VCD).^2/(mean(Exp_Data_VCD)).^2 %VCD
wirklich in ode45 oder in den Funktionsauswertungen von Model_BI130_myfor, die daraus aufgerufen werden?
So oder so würde ich an der Stelle mal das Generieren von MEX-Dateien mit MATLAB Coder versuchen.
https://www.mathworks.com/help/code.....er-project-interface.html
Unter "Generate C-Code" ist der entscheidende Punkt dann "Instead of generating a C static library, you can choose to generate a MEX function".
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 ;)
danke für den Tipp, werde ich versuchen. Der Code lief von Mittwoch auf Donnerstag über Nacht und war immer noch nicht fertig.
Noch eine generelle Frage zum Code:
Wie funktioniert die Kommunikation zwischen GlobalSearch und der Funktion? Woher weiß GlobalSearch, dass es mir die 3 Werte "Parameter()" optimieren soll?
Woher weiß GlobalSearch, dass es mir die 3 Werte "Parameter()" optimieren soll?
Das weiß GlobalSearch gar nicht. Durch das Festlegen von x0 weiß GlobalSearch lediglich, dass 3 Werte optimiert werden sollen.
Da du Parameters in der Funktion Simulation_Time_Courses_BI130_myfor festlegst, bleibt Parameters immer gleich. Die Eingabeargumente dieser Funktion werden nicht verwendet, und das zeigt der Editor auch durch das orange Hinterlegen an.
Sinnvollerweise muss die Funktionsschnittstelle so aussehen:
Code:
function Sum_of_squares=Simulation_Time_Courses_BI130_myfor(Parameters)
und die Zeilen 30-32 müssen auskommentiert werden.
Insgesamt, gerade wenn ich mir Data ansehe (ist einerseits global, wird aber andererseits belegt), kann ich nur empfehlen, sich mal seeeehr gründlich mit dem Thema Übergabe von Argumenten auseinanderzusetzen.
Grundsätzlich auch: GlobalSearch macht mit dieser Zielfunktion nichts sinnvolles, weil fmincon schon nichts sinnvolles damit macht. Erst mal schauen, dass fmincon vernünftig läuft (d.h. insbesondere vom Startwert weggeht und einen besseren Zielfunktionswert al für den Startwert liefert). Davor ist es nicht sinnvoll, GlobalSearch zu verwenden.
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 ;)
Mir ist bewusst, dass ich Parameters0() keinen festen Wert vorgeben darf. Laut Syntax von fminsearch dient es als Startpunkt.
1.)Ist die Übergabe von Parameters0 bei fminsearch richtig? Wenn ich die Syntax richtig verstehe, müsste es dem Optimierer jetzt klar sein, was optimiert werden soll.
2.)
hier ist mir bewusst, dass Parameters0 und options nicht verwendet werden. Entferne ich diese jedoch aus der Klammer, hat die Funktion zu viele Input Argumente. Woran liegt das?
3.) Allerdings stoße ich gerade auf den Fehler
Code:
Index in position 2 exceeds array bounds (must not exceed 1).
Error in Objective_Hass_myjederunde (line5)
Sum_of_squares2= sum((ySpeicher(:,2))-Exp_Data_TCD_).^2/(mean(Exp_Data_TCD_)).^2 %TCD
1. Du verwendest die nicht dokumentierte Syntax, feste Variablen als zusätzliche Parameter zu übergeben. Davon würde ich stark abraten, eben weil nicht dokumentiert und daher auch nicht mehr offiziell unterstützt. Stattdessen siehe hier
https://www.mathworks.com/help/opti.....ing-extra-parameters.html
am besten mit anonymous function handles.
2. Deine Zielfunktion arbeitet in der Tat nicht mit den Parametern. Bei Objective_Hass_myjederunde ist kein Zusammenhang zu der gelösten DGL vorhanden. Die DGL soll ja wahrscheinlich für jeden Parametersatz neu gelöst werden. Dann muss das in die Zielfunktion statt vorab berechnet zu werden. Ein Beispiel dazu findest du hier:
https://www.mathworks.com/help/opti.....ntialEquationODEExample-3
3. Löst sich vermutlich von selbst, wenn 1. und 2. umgesetzt sind. Falls nicht: Debuggen. Der Code erwartet anscheinend ySpeicher als Matrix mit 2 Spalten. Es ist aber wohl nur ein Vektor.
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
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.