WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Input eines Simulink Modells optimieren

 

IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2012, 17:11     Titel: Input eines Simulink Modells optimieren
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerne den Input eines Simulink Modells (eine Zeitreihe von 100-1000 Variablen) mit Hilfe von Matlab optimieren. Es handelt sich um ein Leistungsprofil, das in ein Batteriealterungsmodell übergeben wird.
Zurzeit nutze ich dazu einen Genetischen Algorithmus. Leider führt dies nicht zu optimalen Ergebnissen. Das Problem ist meiner Meinung nach, dass der GA nichts von den im Modell implementierten Beschränkungen weiß. So wird das Leistungsprofil zwar intern angepasst (bspw = 0 gesetzt, wenn trotz des Erreichen der Lade-Obergrenze weiter geladen werden soll), dies wird aber nicht zurück an den GA übergeben. Deshalb verknüpft der GA dann den fitness Wert eines angepassten Leistungsprofil mit dem ursprünglichen Profil.

Ist es möglich, einzelne Chromosome eines Individuum zu überschreiben?

Andere Solver helfen mir leider nicht weiter. Ist fmincon eventuell in der Lage, die Optimierung durchzuführen? (Meine bisherigen fmincon Versuche waren nicht erfolgreich).

Vielen Dank für eure Hilfe.

Falls nötig, kann ich auch ein vereinfachtes Modell schreiben und dies uploaden.


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.11.2012, 11:27     Titel: Re: Input eines Simulink Modells optimieren
  Antworten mit Zitat      
Hallo IJ,

Ein konkretes Beispiel ist im Allgemeinen hilfreicher als eine Beschreibung in Text-Form. Deshalb ist Deine Idee ein Beispiel zu posten gut.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2012, 13:15     Titel: Re: Input eines Simulink Modells optimieren
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo IJ,

Ein konkretes Beispiel ist im Allgemeinen hilfreicher als eine Beschreibung in Text-Form. Deshalb ist Deine Idee ein Beispiel zu posten gut.

Gruß, Jan


Hallo Jan,

ich habe mal ein Minimal Beispiel erstellt, das in etwa das detailiiertere Modell nachbildet. Eine genauere Beschreibung ist in der main Datei zu finden.

Vielen Dank für die Hilfe.

Support.zip
 Beschreibung:

Download
 Dateiname:  Support.zip
 Dateigröße:  135.47 KB
 Heruntergeladen:  270 mal
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.11.2012, 14:48     Titel:
  Antworten mit Zitat      
Hallo,

ga bietet genauso wie fmincon die Möglichkeit, Nebenbedingungen zu definieren.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2012, 15:10     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Hallo,

ga bietet genauso wie fmincon die Möglichkeit, Nebenbedingungen zu definieren.

Grüße, Marc


Hallo Marc,

das habe ich natürlich probiert. Leider beachtet die Mutationsfunktions diese Nebenbedingungen nicht. Es handelt sich um eine Integerpopulation.

Gibt es die Möglichkeit dies in der Mutationsfunktion zu implementieren?

Lieber wäre mir allerdings weiterhin die Möglichkeit die Chromosome direkt zu überschreiben.
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.11.2012, 15:16     Titel:
  Antworten mit Zitat      
OK, verstehe. Lies dir hier mal das Kapitel "Setting the Amount of Mutation" durch: http://www.mathworks.de/de/help/gad.....c-algorithm-examples.html
Private Nachricht senden Benutzer-Profile anzeigen
 
IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2012, 15:35     Titel:
  Antworten mit Zitat      
Das habe ich schonmal gelesen, als ich die int_mutation function verstehen wollte.

Ich habe die Parameter unverändert gelassen:

shrink = .01;
scale = 1;

Trotzdem bekomme ich keine gültigen Lösungen zum Ende.

War es das, wodrauf du hinaus wolltest?
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.11.2012, 16:06     Titel:
  Antworten mit Zitat      
Ich habe mir jetzt mal den Code angeschaut. Alles, was du benutzerdefiniert erstellt hast, ignoriert die Nebenbedingungen. Eine Folgerung daraus ist, dass du die Nebenbedingungen an die benutzerdefinierten Funktionen übergeben musst und dort für eine Beachtung derselbigen selbst sorgen musst.
Private Nachricht senden Benutzer-Profile anzeigen
 
IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2012, 16:35     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Ich habe mir jetzt mal den Code angeschaut. Alles, was du benutzerdefiniert erstellt hast, ignoriert die Nebenbedingungen. Eine Folgerung daraus ist, dass du die Nebenbedingungen an die benutzerdefinierten Funktionen übergeben musst und dort für eine Beachtung derselbigen selbst sorgen musst.


Ich habe mal versucht die Nebenbedingungen zu implementieren und auf original Funktionen zur Erstellung und Mutation zurück gegriffen (nicht integer). Leider werden die Nebenbedingungen auch dort nicht eingehalten.

Ich kann mir im Moment nicht vorstellen, wie die Nebenbedingungen in beide Funktionen (creation/mutation) integriert werden können, ohne 1000 Fache weitere Funktionsaufrufe. Die Rechenzeit ist leider jetzt schon nicht sehr kurz.

Gibt es also noch eine Alternative?
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.11.2012, 16:46     Titel:
  Antworten mit Zitat      
Man kann zwei Wege gehen. Man führt Operationen auf den Individuen durch und schaut dann, ob diese zulässig sind, oder man führt gleich zulässige Operationen durch. So oder so musst du bei benutzerdefinierten Funktionen selbst für Zulässigkeit sorgen. Wenn das alles zu langsam ist, dann muss man sich überlegen, ob Matlab die richtige Umgebung ist. Ich habe meine Genetischen Algorithmen für mehrdimensionale, diskrete Probleme in C# geschrieben...
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.11.2012, 16:55     Titel:
  Antworten mit Zitat      
Eine Untermauerung meiner Behauptungen:

Zitat:

Ensure ga Options Maintain Feasibility

The ga solver generally maintains strict feasibility with respect to bounds and linear constraints. This means that, at every iteration, all members of a population satisfy the bounds and linear constraints.

However, you can set options that cause this feasibility to fail. For example if you set MutationFcn to @mutationgaussian or @mutationuniform, the mutation function does not respect constraints, and your population can become infeasible. Similarly, some crossover functions can cause infeasible populations, although the default gacreationlinearfeasible does respect bounds and linear constraints. Also, ga can have infeasible points when using custom mutation or crossover functions.

To ensure feasibility, use the default crossover and mutation functions for ga. Be especially careful that any custom functions maintain feasibility with respect to bounds and linear constraints.
Private Nachricht senden Benutzer-Profile anzeigen
 
IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2012, 17:06     Titel:
  Antworten mit Zitat      
Danke für deinen Input.
Ein Wechsel auf C# ist für mich nicht möglich.

Die Anpassung der Funktionen scheint für mich die einzige Möglichkeit zu sein, wenn das direkte Überschreiben der Chromosome nicht möglich ist.
 
IJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2012, 17:08     Titel:
  Antworten mit Zitat      
Danke für den Beitrag! Ich habe es mit Uniform probiert, deshalb wurden die constraints nicht eingehalten. Vielleicht lässt sich so doch etwas machen.
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.11.2012, 17:14     Titel:
  Antworten mit Zitat      
IJ hat Folgendes geschrieben:

Die Anpassung der Funktionen scheint für mich die einzige Möglichkeit zu sein, wenn das direkte Überschreiben der Chromosome nicht möglich ist.


Vielleicht willst du auf etwas anderes hinaus, aber genau das ist möglich und muss auch innerhalb der eigenen Funktionen getan werden. Man schreibt die Chromosomen im Rahmen der Nebenbedinungen selbst. Man schreibt eben selbst, um die Zulässigkeit zu gewährleisten.

Das kann man im übrigen auch geschickt machen. Vielleicht schreibst du den entsprechenden Code mal hier rein, dann kann man sich überlegen, wie man beispielsweise die Mutation performant gestalten kann...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.