In der objectiveFunction soll eine andere Datei ausgeführt werden und der Wert einer zu berechnenden Größe als Zielwert definiert werden.
Der zu minimierende Wert ist value (berechnet aus 3 Ergebnissen der calcKinematic Datei, die ich gern dort als Ausgabe hätte), die Variablen des Optimierungsproblems sind in cylPos. Zum Ausführen der Datei calcKinematic brauche ich auch noch die folgenden Werte aus vorherigen Rechnungen als zusätzliche Inputs: (distances, points_x, points_y, misc), was soweit glaube ich auch stimmt, bzw übergeben wird. Diese Datei braucht ebenfalls die Variablen cylPos als Eingabe, daher habe ich das mit dem @ versucht. Allerdings wird das wohl nicht übergeben.
Wenn ich hingegen das "@(cylPos)" weglasse und das dann wieder aussieht wie ein normaler Funktionsaufruf, dann fehlt das cylPos wohl in der calcKinematic, weil dort dann folgender Fehler kommt. (Ist auch logisch.)
Code:
??? Index exceeds matrix dimensions.
Error in ==> calcKinematic at 11
distances.('EF')=cylPos(1,2);
Wie kann man das machen damit Matlab klar ist/bleibt, dass cylPos die Variablen der Zielfunktion sind, die anderen Werte jedoch trotzdem mit übergeben werden, um diese berechnen zu können? ich habe bisher nur Beispiele gefunden, wo der Zielfunktion nur die Variable übergeben wurde (und keine weiteren inputs), indem nach dem Schema hier gearbeitet wurde, was mich aber nicht weiterbringt:
Hab das Problem inzwischen gelöst, will es aber eventuellen späteren Suchern nicht vorenthalten:
Die zusätzlichen inputs (x1, x2, x3, misc) für die Zielfunktion und die constraint Funktion werden im fmincon Befehl einfach hinter den options eingefügt.
function[unequal,equal] = constraint(cylPos, distances, x1, x2, x3, misc)
%hier stehen die Rechnungen und am Schluss: unequal= einzuhaltende ungleichheitsbedingung oder unequal=[] wenn keine berücksichtigt wird
%equal= Gleichheitsbedingung oder equal=[] wenn keine berücksichtigt wird.
end
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.