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:
Error using Test (line2) 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 (line14)
y(i,:) = feval(fun,(pop(i,:)));
Error in makeState (line47)
Score =
fcnvectorizer(state.Population(initScoreProvided+1:end,:),FitnessFcn,1,options.SerialUserFcn);
Error in galincon (line18)
state =
makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
Error in ga (line354) [x,fval,exitFlag,output,population,scores]
= galincon(FitnessFcn,nvars, ...
Error in Testoptimierer (line13) [x,fval] =
ga(fitnessfcn,nvars,[],[],[],[],LB,UB)
Caused by:
Error using Test (line2)
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
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
GastSebastian
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 23.04.2012, 23:08
Titel:
ja der Rückgabewert wird in der Simulation erstellt. Dieser soll auch minimiert werden.
okay andere Frage: Woher weiß der ga-Algorithmus was minimiert werden soll? Woher bekommt er die Werte?
MfG Vega
GastSebastian
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.04.2012, 07:59
Titel:
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.
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
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.