danke für deine Antwort. Ich werde dein Beispiel gleich umsetzen. Vorab noch zwei Fragen.
1)
Die complicatedfun(x) rufe ich nur für das x(n) auf, wenn ich hier ein Ergebnis aus dem Simulinkmodell verwende oder? Ansonsten schreibe ich die x normal in die Nebenbedingungen und in die Zielfunktion.
2)
was bewirkt die Zeile y = x.^2; in der complicatedfun(x) ?
1)
Die complicatedfun(x) rufe ich nur für das x(n) auf, wenn ich hier ein Ergebnis aus dem Simulinkmodell verwende oder? Ansonsten schreibe ich die x normal in die Nebenbedingungen und in die Zielfunktion.
Die Idee ist, dass du dein Modell innerhalb der complicatedfun simulierst, damit die Ergebnisse sowohl der Zielfunktion als auch der nichtlinearen Nebenbedingungsfunktion zur Verfügung stehen.
Zitat:
2)
was bewirkt die Zeile y = x.^2; in der complicatedfun(x) ?
Das ist die "komplizierte" Berechnung (dezente Ironie), die in Zielfunktion und nichtlinearer NB gebraucht wird.
entschuldige, dass ich nochmals nachfragen muss. ich habe die Funktion noch nicht ganz verstanden und ich verstehe noch nicht ganz, wie ich das in meine Aufgabe implementieren kann.
Noch einmal bezogen auf mein Beispiel.
Wenn ich nun 2 Anlagen hinter einander auf den Input_A strang addieren und
minimiert wird. Als Nebenbedingung soll aber der Array Result zu jedem Zeitschritt 0 sein, also durch x(1) oder x(2) gedeckt werden.
dazu habe ich eine dritte variable
ich habe das Beispielmodell jetzt noch einmal mti deinem Vorschlag bearbeitet.
Die Nebenbedingung, dass x(1) und x(2) den Bedarf decken funkiotniert nun.
Jetzt zu dem Punkt den du angesprochen hast.
Ich möchte den Array "Bedarf" aus dem Simulinkmodell nun in der Zielfunktion mit den Kosten_Bedarf multiplizieren. Daher muss das Ergebnis in der ZF auftauchen.
Ich habe das ganze in dem Beispiel noch einmal kommentiert.
Ich möchte den Array "Bedarf" aus dem Simulinkmodell nun in der Zielfunktion mit den Kosten_Bedarf multiplizieren.
Dann musst du complicated_fun eben auch wie in meinem Beispiel aus der Zielfunktion heraus aufrufen.
Eine wirklich dringende Empfehlung: meide assignins und evals! Ein Vorteil von Funktionen sind die getrennten Workspaces und die daraus folgende klare Struktur der Anwendung, und das verschenkst du damit.
Zudem würde ich sim mit Rückgabeargumenten aufrufen, damit klar ist, woher was kommt.
Desweiteren ist es wie gesagt unnötig und verwirrend, ein Ergebnis (wie hier x(3) )an den zu optimierenden Parametervektor dranzuhängen.
Vielleicht hiflt es, wenn du einfach mal hinschreibst, was du eigentlich unter welchen Nebenbedingungen optimieren willst. Wenn ich das richtig sehe, setzt du nämlich jetzt ganz andere NB um als zuvor und ich kann jetzt nicht wissen, was nun richtig ist.
vielen Dank noch einmal für deine Hilfe. Das mit der Nebenbedingung habe ich hinbekommen. Auch die complicated_fun kann ich nun aus der Zielfunktion aufrufen.
Ich schreibe den Quellcode gerade nach deinen Vorschlägen um. Wo ich mich noch ein bischen schwer tue ist mit dem vermeiden von den assignins und evals. Etwa der Input_A Vektor den ich in der Besipiel.m Datei generiere, müsste ich ja einmal an die mycon function übergeben und dann weiter an die complicated_fun. Ebenso bei der Zielfunktion.
Wenn ich jetzt die Functionen wie folgt aufrufe und x vorher definiere
funktioniert die optimierung nicht mehr. Es wird auch kein Error ausgegeben. Habe ich da etwas falsch übergeben ? Gibt es da vielleicht einen anderen Weg?
Result kommt aber doch aus der Simulation des Modells?
Es geht ja darum, ob die NB linear oder nichtlinear in den veränderlichen Parametern ist. Da Result, falls es aus Simulink kommt, nichtlinear von den veränderlichen Parametern abhängen wird, wird letztlich auch die NB nichtlinear sein.
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.