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

genethischer Algorithmus auf Simulink-Simulation anwenden

 

GastSebastian

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2012, 18:13     Titel: genethischer Algorithmus auf Simulink-Simulation anwenden
  Antworten mit Zitat      
Hallo zusammen,

ich versuche mittels des genethischen Algorithmus die optimalen Parameter für eine Simulink-Simulation zu finden.

Zunächst habe ich meine Simulation als function-handle definiert um sie dem Optimierer zu übergeben:
Code:
function[y] = Test(u)
sim Testsim

Die Simulation nimmt einen Parameter u aus dem Workspace und liefert einen Skalar y als Ergebnis an den Workspace zurück. Das funktioniert auch soweit.

Jetzt will ich den optimalen Eingang u für den minimalen Ausgang y mit der "ga"-Funktion aus der Optimization-Toolbox finden. Der Code hierzu sieht so aus:
Code:
% Fitnessfunktion
fitnessfcn = @Test;
% Anzahl Variablen
nvars = 1;
% Grenzen Lower und Upper
UB = 1;
LB = -1;
% Aufruf Optimierer
[x,fval] = ga(fitnessfcn,nvars,[],[],[],[],LB,UB)


Hier macht der Optimieralgorithmus aber ärger.
Code:
Error using Test (line 2)
Error evaluating parameter 'Value' in
'Testsim/Constant'

Error in
createAnonymousFcn>@(x)fcn(x,FcnArgs{:}) (line
11)
fcn_handle = @(x) fcn(x,FcnArgs{:});

Error in fcnvectorizer (line 14)
            y(i,:) = feval(fun,(pop(i,:)));

Error in makeState (line 47)
        Score =
        fcnvectorizer(state.Population(initScoreProvided+1:end,:),FitnessFcn,1,options.SerialUserFcn);
       
Error in galincon (line 18)
state =
makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);

Error in ga (line 354)
            [x,fval,exitFlag,output,population,scores]
            = galincon(FitnessFcn,nvars, ...

Error in Testoptimierer (line 13)
[x,fval] =
ga(fitnessfcn,nvars,[],[],[],[],LB,UB)
Caused by:
    Error using Test (line 2)
    Undefined function or variable 'u'.
    Failure in user-supplied fitness function
    evaluation. GA cannot continue.

Den ersten Fehler verstehe ich. Er meckert, dass der Parameter u für die Simulation undefiniert ist. Wenn ich diesen vordefiniere, läuft der Optimierer zwar, aber seine Ergebniswerte für jeden Eingangswert ist dann der Ergebniswert des vordefinierten Parameters. Er variiert den Eingang also eigentlich gar nicht.

Wie kann ich den genethischen Algorithmus auf die Simulation anwenden? Hab leider noch keine passenden Ansatz und keine passende Hilfe gefunden. Ich hoffe ihr könnt mir hier ein bißchen Starthilfe geben. Vielen Dank


vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2012, 19:54     Titel:
  Antworten mit Zitat      
Hallo,

ein kurzes Statement, was mir beim überfliegen aufgefallen ist:
Du hast keinen Rückgabewert definiert und du hast keine Fehlerfunktion definiert, es sei denn du möchtest den Ausgang deiner Simulation minimieren.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
GastSebastian

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2012, 23:08     Titel:
  Antworten mit Zitat      
ja der Rückgabewert wird in der Simulation erstellt. Dieser soll auch minimiert werden.
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2012, 20:55     Titel:
  Antworten mit Zitat      
okay andere Frage: Woher weiß der ga-Algorithmus was minimiert werden soll? Woher bekommt er die Werte?
MfG Vega
Private Nachricht senden Benutzer-Profile anzeigen
 
GastSebastian

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2012, 07:59     Titel:
  Antworten mit Zitat      
Der ga-Algorithmus versucht ja die Fitnessfunktion zu optimieren. Die Fitnessfunktion besteht hier nur aus dem Aufruf der Simulation. Die Simulation nimmt den Eingangsparameter u der Funktion und berechnet daraus den Ausgang y und gibt diese an den Workspace. Getrennt für sich funktioniert diese Funktion und die Simulation auch. Nur das starten des Algorithmus ist wie gesagt nicht möglich, weil dann die Simulation meckert, der Eingangsparameter u wäre undefiniert.

Genau den optimalen Eingangsparameter soll ja aber der ga-Algortihmus finden, also kann ich ihn auch nicht vordefinieren.
 
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 - 2024 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.