|
|
Simulinkmodell in fitness function (Optimization Toolbox) |
|
Luki51 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.02.2016, 05:16
Titel: Simulinkmodell in fitness function (Optimization Toolbox)
|
 |
|
 |
|
Hallo Zusammen!
Zur Zeit versuche ich mich an einer multikritiellen Optimierung mittels der Optimization Toolbox (Solver: gamultiobj).
Dabei wird in der fitness function "Beispiel" das Simulinkmodell "Modell" über den Befehl assignin mit den vom Optimierungsalgorithmus anzupassenden Variablen "x1" und "x2" gefüttert. Die Werte der zu optimierenden Größen "Ergebnis1" und "Ergebnis2" gebe ich der fitness function über simOut-Blöcke jeweils nach einem Simulationsdurchlauf wieder zurück.
Bis dahin klappt auch alles und ich kann mir beispielsweise eine Paretofront mit den optimierten Ausgangsgrößen plotten lassen. Nun zu meinem Problem:
Ich möchte im Simulinkmodell Systemparameter aus einem m-file verwenden. Aus einem mir unbekannten Grund werden diese Parameter allerdings aus dem Workspace geworfen sobald ich die Optimierung starte (Auch wenn diese als global definiert wurden). Es erscheint folgende Fehlermeldung:
Error running optimization.
Invalid setting in 'Modell/Constant1' for parameter 'Value'.
Ich habe bereits versucht die Parameter aus dem m-file in einer .mat-Datei zu speichern und diese dann in der fitness function über den Befehl load aufzurufen, funktioniert auch nicht.
Die einzige Möglichkeit die ich bisher gefunden habe ist nach dem Ausführen des genannten load Befehls wieder jede einzelne Variable noch einmal über den assignin-Befehl zu laden. Gibt es da noch eine andere Möglichkeit? (Das werden später mal etliche dutzend Variablen und auch einige Kennfelder, mit dem assignin-Befehl für einzelne Parameter werde ich da nicht mehr weit kommen befürchte ich... )
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.02.2016, 09:34
Titel:
|
 |
|
|
Luki51 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.02.2016, 13:49
Titel:
|
 |
Vielen Dank Harald die Simulation läuft nun!
Allerdings werden anschließend nun keine Werte mehr von meinem "to Workspace"-Block in den Workspace zurückgegeben sondern eine leere "SimulationOutput" Struktur mit dem Namen "ans".
Vermutlich lässt sich auch das sehr einfach lösen, ich (als blutiger Anfänger) komm gerade leider nicht dahinter wie ich die Werte meines "to Workspace" Blocks wieder im Workspace erzeugen kann...
Gruß, Lukas
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.02.2016, 14:02
Titel:
|
 |
Hallo,
ich persönlich arbeite immer mit Out-Blöcken.
Sollte bei To Workspace nicht eine Variable mit dem entsprechenden Namen erstellt werden? Schau doch mal in allen Workspaces, vielleicht ist die Variable nur im "falschen" Workspace gelandet.
Grüße,
Harald
|
|
|
Luki51 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.02.2016, 17:52
Titel:
|
 |
Also bis ich deinen Vorschlag zum Einlesen der Parameter aus dem Workspace umgesetzt habe wurde vom "to Workspace" Block eine Variable erzeugt...
Hab jetzt einige Zeit rumprobiert und nirgendwo eine solche finden können. Gibt es eine Möglichkeit über den assignin Befehl direkt den kompletten Workspace zu laden?
Da der Wegfall der vom "to Workspace" Block erstellten Variable erst mit dem geänderten sim Befehl aufgetreten ist ließe sich das Problem ja evt so umgehen...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.02.2016, 20:37
Titel:
|
 |
Hallo,
stelle doch bitte mal das komplette Beispiel zur Verfügung. Falls der Modellinhalt nicht weitergegeben werden kann, kannst du das gerne durch irgendwelche anderen Blöcke ersetzen.
Grüße,
Harald
|
|
|
Luki |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 19.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.02.2016, 13:17
Titel:
|
 |
|
 |
|
Hallo,
gerne!
Im Anhang ist ein Ordner mit einem sehr vereinfachten Beispielmodell enthalten welches neben den zwei Eingangsgrößen (x1 und x2) der Optimization Toolbox noch zwei Werte (p_M und p_D) aus dem Workspace benötigt.
Ich habe die nötige fitness function hier zwei mal erstellt.
In der Funktion "Beispiel" lade ich dabei die Werte p_M und p_D ebenfalls über den assignin Befehl, so funktioniert es dann auch! (Die Einstellungen der Optimization Toolbox sind im Ordner in einem Screenshot dargestellt, alle anderen Einstellungen habe ich belassen...)
In der Funktion "Beispiel2" habe ich anschließend versucht deinen Vorschlag (Harald) umzusetzen. Wenn ich Schritt für Schritt debugge funktioniert auch diese bis zu dem Punkt an dem die fitness function die Simulationsergebnisse wieder "zurückliest" :SS
Ich die in der ersten fitness function gewählte Lösung kann ich leider nicht verwenden da in meinem eigentlichen Modell wie bereits erwähnt eine Vielzahl von Systemparametern sowie auch Kennfelder geladen werden müssen... (dabei handelt es sich um ein Element meiner Bachelorarbeit, da diese mit einem Sperrvermerk versehen wird kann ich dieses leider nicht hier zur Verfügung stellen..)
Besten Gruß, Lukas
Beschreibung: |
|
 Download |
Dateiname: |
Beispiel_gemultiobj_Simulink.rar |
Dateigröße: |
161.77 KB |
Heruntergeladen: |
270 mal |
|
|
|
Luki |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 19.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.02.2016, 18:36
Titel:
|
 |
Ich habs jetzt noch einige Male versucht und komm einfach nicht dahinter wo die Werte des "to workspace" Blocks hingeschrieben werden bzw. wie ich sie in meiner Funktion aufrufen kann...
Bin dankbar für jeglichen Input :SS
Gruß, Lukas
|
|
|
Luki |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 19.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.02.2016, 19:47
Titel:
|
 |
Uff habs doch gelöst bekommen...
Falls es jemanden interessieren sollte:
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.02.2016, 11:25
Titel:
|
 |
Hallo,
so ginge es mit Out-Blöcken und ohne sich den Base-Workspace zuzumüllen...
Bitte verwende doch die Kommandozeilenfunktionalität. Sie ist wirklich nicht so schwer aufzurufen, und man muss nicht aus dem Bild abtippen, was du machst.
Grüße,
Harald
Beschreibung: |
|
 Download |
Dateiname: |
mitOutBloecken.zip |
Dateigröße: |
15.22 KB |
Heruntergeladen: |
250 mal |
|
|
|
|
|
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.
|
|