|
|
Optimierungsproblem Simulink |
|
Len |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.09.2020, 15:44
Titel: Optimierungsproblem Simulink
|
|
|
|
|
Hallo zusammen,
ich stehe derzeit vor einem klassischen Optimierungsproblem. Da ich was Optimierungen angeht absoluter Anfänger bin, fehlt der Ansatz und das Wissen auf dem Weg zu einer guten Lösung
Ich verwende ein Simulinkmodell, das das thermische Verhalten eines Fahrzeugs beschreibt. Als Inputdaten werden im Modell verschiedene Komponententemperaturen_ini vorgegeben, die jeweils in einem bestimmten Temperaturbereich liegen können:
- Batterie 0-60°
- E-Maschine1 0-130°
- E-Maschine2 0-130°
-...
Das Modell liefert als Output unter anderem einen Performance-Indikator (Skalar), der während der Simulation berechnet wird und abhängig von den gewählten Eingangsgrößen ist. Diesen Performance-Indikator möchte ich gerne durch Optimierung der Komponententemperaturen_ini maximieren.
Würde ich das ganze händisch und wenig wissenschaftlich lösen, würde ich eine Reihe Simulationen mit veränderten Eingangsparametern durchführen und mich für die Variante mit dem höchsten Performance-Indikator entscheiden. Da Matlab/Simulink sehr mächtige Tools sind, schätze ich aber, dass es einen besseren Weg hierfür gibt. So weit ich es verstanden habe könnte ich zum einen die Optimization Toolbox in Kombination mit Matlab oder die Simulink Design Optimization verwenden.
Ich wäre sehr dankbar, wenn mir der ein oder andere einen Schubs in die richtige Richtung geben könnte. Ich weiß, dass die Frage leider (noch) sehr unspezifisch ist...
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.09.2020, 20:15
Titel:
|
|
Hallo,
du kannst eine Funktion der Form
erstellen, wobei x Werte für die Parameter sind. Darin rufst du mit
sim
das Simulink-Modell auf.
Das ist dann eine geeignete Zielfunktion, z.B. für
fmincon
.
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 ;)
|
|
|
Len |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 10:46
Titel:
|
|
|
|
|
Hallo Harald,
vielen Dank für die schnelle Antwort! Das bringt mich dem ganzen zumindest schon mal ein kleines Stück näher. Ich verstehe jedoch die Syntax und das einbetten der Optimierung in die m.file noch nicht so ganz.
Zum groben Ablauf. Ich habe ein bestehendes Simulinkmodell 'Modell', das sich über den Matlab Wokspace Variablen holt, die ich teilweise in einer m.file vorgebe und dann die Simulation aus der m.file starte. Mein Wokspace würde sich nach Durchlaufen des Skripts normalerweise mit anderen Variablen (auch der, die optimiert werden soll) füllen.
Zur Optimierung habe ich weiter unten in meiner m.file den Teil der Optimierung plaziert, der wie folgt aussieht:
Perf_Fzg .... ist der Skalar (Output aus 'Modell'), der optimiert werden soll
TiniHVB ....Skalar (Input für 'Modell'), der zwischen 0 und 60 in 5er Schritten variiert werden.
TiniEM1/2 .... analog zu TiniHVB
Lasse ich mein Skript laufen tut sich gar nichts. Ich glaube ich habe da viele sehr sehr grobe Fehler eingebaut und entschuldige mich dafür schon mal im Voraus.
Eine allgemeine Frage aus Interesse. Ich hatte fast damit gerechnet, dass du die Simulink Design Optimization vorschlägst. Was spricht da für dich dagegen?
Viele Grüße, vielen Dank und entschuldigung!
Len
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 10:52
Titel:
|
|
Hallo,
Wenn 'Modell' die Variable Perf_Fzg erzeugt, sieht das schon gut aus. Du musst nur den fmincon-Aufruf aus der Datei herausziehen, z.B. kannst du ihn in das Command Window oder ein anderes Skript schreiben.
Wichtig ist dann auch noch, dass fmincon minimiert. Du willst ja aber maximieren. Eine Möglichkeit:
und y zurückgeben.
Zitat: |
Eine allgemeine Frage aus Interesse. Ich hatte fast damit gerechnet, dass du die Simulink Design Optimization vorschlägst. Was spricht da für dich dagegen? Very Happy |
Nichts, außer dass ich selbst mich damit nicht auskenne. :D
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 ;)
|
|
|
Len |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 12:33
Titel:
|
|
Hallo,
Danke für die schnelle Antwort! Ich habe deinen Vorschlag berücksichtigt. Die Variable Perf_Fzg habe ich über ein -1 Gain inzwischen direkt negativ aus dem Modell kommen lassen. Mein Code lautet jetzt
Nachdem ich das Skript inkl. Simulation durchlaufen lassen und die Variablen (unter anderem Perf_Fzg) erzeugt wurden. Setzte ich
ins Command Window. Leider erscheint dann folgende Fehlermeldung:
Weißt du wo mein Fehler liegt?
Danke und viele Grüße!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 12:41
Titel:
|
|
Hallo,
heißt die Datei auch obj.m? Liegt sie im momentanen Verzeichnis?
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 ;)
|
|
|
Len |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 13:04
Titel:
|
|
Hallo,
ja ich habe alle Dateien in einem Verzeichnis.
Optimierung.m das folgendes beinhaltet:
Der Teil läuft durch, jedoch wird nichts optimiert oder sonstiges.
Im Anschluss lasse ich dann obj.m laufen, das folgendermaßen aussieht:
Dann kommt folgende Fehlermeldung:
Weißt du was ich falsch mache?
Viele Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 13:08
Titel:
|
|
Hallo,
du musst genau diesen Code (und nicht mehr)
als obj.m abspeichern.
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 ;)
|
|
|
Len |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 13:45
Titel:
|
|
Hallo,
oh je da hatte ich wohl total was durcheinander. Ich habe das ganze jetzt mal umgestellt:
- Optimierung.m beinhaltet jetzt nur noch die Initialwerte und schmeißt die Simulation an.
- obj.m beinhaltet ausschließlich den von dir genannten Code.
Ich lasse also zuerst Optimierung.m durchlaufen und schreibe danach:
ins Command Window.
Es erscheint folgender Fehler:
tut mir leid aber ich habe es leider nicht gelöst bekommen...
Viele Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2020, 15:06
Titel:
|
|
Hallo,
dann schreibt der sim-Befehl die Variable entweder nicht oder nicht in den richtigen Workspace. Ich kann da nur den Debugger empfehlen (Haltepunkt in der sim-Zeile und dann schauen, ob und wohin die Variable geschrieben wird.
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 ;)
|
|
|
Len |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.09.2020, 15:08
Titel:
|
|
Alles klar, das werde ich machen!
Du hast mir auf jeden Fall schon mal viel geholfen. 1000 Dank!!
|
|
|
|
|
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.
|