|
|
Parameteroptimierung von Simulinkmodell |
|
madlate |

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 04.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.11.1 (R2010b)
|
 |
|
|
 |
|
Verfasst am: 23.09.2015, 14:15
Titel: Parameteroptimierung von Simulinkmodell
|
 |
|
 |
|
Hallo Zusammen,
ich habe ein gegebenes Simulink-Modell, welches in Abhängigkeit Parameter (z. B. Abfallzeit an einem TurnOffDelay) und mehre vergebene Eingangssignale den Wunschzustand einer Anlage berechnet. Die Parameter lade ich aus dem Workspace und können beliebig variieren. Die Eingangssignale befinden sich alle in einem Signalbuilder.
Der Wunschzustand der Maschine ist entweder 0 (=aus) oder 1 (=ein). Nun soll sich die Maschine aus Stromspargründen möglichst oft ausschalten, jedoch da sie eine gewisse Anlaufzeit hat möglichst kurze Pausen vermeiden.
Meine Aufgabe ist es nun, die Parameter so zu wählen, dass die Maschine kurze Pausen vermeidet und trotzdem möglichst lange ausgeschaltet bleibt.
Ein klassisches Optimierungsproblem. Nur ich habe keine richtige Funktion, welche ich z. B. über fmincon optimieren kann.
Als ersten Schritt möchte ich, dass kurze Pausen komplett vermieden werden.
Meine kurzen Pausen kann ich über das Ausgangssignal B_anlage_wunsch detektieren und in einen Vektor schreiben. Das Optimum wäre dann, dass dieser Vektor keine Elemente beinhalten.
Ich stehe allerdings auf dem Schlauch wie ich das mittels Matlab umsetzen kann.
Hat jemand Tipps für mich?
Danke
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.09.2015, 20:13
Titel:
|
 |
Hallo,
es ist durchaus möglich, dass man in fmincon über den sim-Befehl ein Simulink ausführt, und dann den Output analysiert. Man könnte z.B. die Laufzeit summieren und Strafterme oder Nebenbedingungen für die Anzahl der kurzen Pausen definieren. Schwierig ist nur, dass diese Anzahl nicht stetig, geschweige denn differenzierbar ist.
Was genau sind denn eigentlich die zu optimierenden Parameter?
Grüße,
Harald
|
|
|
madlate |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 04.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.11.1 (R2010b)
|
 |
|
|
 |
|
Verfasst am: 24.09.2015, 10:16
Titel:
|
 |
|
 |
|
Servus Harald,
danke für deine Hilfe. Ich habe mal ein triviales Minimalmodell aufgebaut mit einem TurnOffDelay. Wenn der Parameter des TurnOffDelay auf 10s setzte werden alle Pausen unterhalb dieser Zeit vermeiden.
Nur soll Matlab dies eben selbst herausfinden:
Das ganze funktionert ohne Probleme nur wird nichts optimiert.
Als Antwort erhalte ich meistens nur den Startwert:
Zitat: |
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
No active inequalities.
x =
8
fval =
2
|
Das Problem scheint zu sein, dass fmincon die Funktion lediglich zweimal aufruft mit den Werten 8 und 8.0000 und dementsprechend keine besseren Ergebnisse zurückliefert, weil sie ein vermeindliches lokales Minimum gefunden hat
Was gibt es den für Möglichkeiten das ganze öfter ablaufen zulassen?
Danke
madlate
Beschreibung: |
|
 Download |
Dateiname: |
optimierungsTest.mdl |
Dateigröße: |
568.24 KB |
Heruntergeladen: |
450 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.09.2015, 20:02
Titel:
|
 |
Hallo,
deine Funktion liefert eine ganze Zahl zurück. fmincon ist gradientenbasiert und nimmt somit an, dass die Funktion differenzierbar ist. Das passt denkbar schlecht zusammen.
Ich würde Verfahren wie
fminsearch
,
patternsearch
oder
ga
versuchen, die nicht gradientenbasiert sind.
Siehe auch
http://de.mathworks.com/help/gads/choosing-a-solver.html#bsbjg7m
Grüße,
Harald
|
|
|
madlate |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 04.04.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.11.1 (R2010b)
|
 |
|
|
 |
|
Verfasst am: 14.10.2015, 10:13
Titel:
|
 |
ich habe alle drei mal ausprobiert.
jeder Algorithmus hat seine Vorteile
ga: da meine Parameter zu 80% Integerwerte sind kann ich hier nur mit diesen rechnen lassen.
patternsearch: ich kann Grenzen definieren im Gensatz zu fimsearch.
Ich bin jetzt noch auf die Simulink Design Optimization Toolbox gestoßen. Diese hat die Funktionalität "ParameterEstimate". Mein optimales Signal könnte ich mir generieren. Allerdings weiß ich nicht ob die Funktionalität auch bei meinem binären Problem anwendbar ist. Hat hier schon jemand Erfahrung?
|
|
|
|
|
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.
|
|