Customised output function for ga
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Yaser Khojah
am 18 Mai 2018
Kommentiert: Walter Roberson
am 31 Dez. 2020
I have been looking how to create my own output function in GA to get each x and fval of each iteration and generation. Although I have looked into all the answered questions for such a question, nothing has been working so far. Here is my output function and please help me with what I'm missing.
function [state,options,optchanged] = gaoutfun(options,state,flag)
persistent history_pop history_Best history_Score
history_pop = [];
history_Best = [];
history_Score = [];
optchanged = false;
switch flag
case 'init'
history_pop = [history_pop;state.Population];
assignin('base','gapopulationhistory',history_pop);
history_Best = [history_Best;state.Best];
assignin('base','gabesthistory',history_Best);
history_Score = [history_Score;state.Score];
assignin('base','gascorehistory',history_Score);
case 'iter'
history_pop = [history_pop;state.Population];
assignin('base','gapopulationhistory',history_pop);
history_Best = [history_Best;state.Best];
assignin('base','gabesthistory',history_Best);
history_Score = [history_Score;state.Score];
assignin('base','gascorehistory',history_Score);
case 'done'
history_pop = [history_pop;state.Population];
assignin('base','gapopulationhistory',history_pop);
history_Best = [history_Best;state.Best];
assignin('base','gabesthistory',history_Best);
history_Score = [history_Score;state.Score];
assignin('base','gascorehistory',history_Score);
end
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 18 Mai 2018
function [state,options,optchanged] = gaoutfun(options,state,flag)
persistent state_record
if isempty(state_record)
state_record = struct('Population', {}, 'Best', {}, 'Score', {});
end
if nargin == 0
state = state_record;
options = [];
optchanged = [];
else
state_record(end+1) = struct('Population', state.Population, 'Best', state.Best', 'Score', state.Score);
optchanged = false;
end
Before re-using this function, call
clear gaoutfun
Let the function be called as usual. Do not expect any changes outside the function when it is called.
After the ga run is finished, call
record = gaoutfun();
with no inputs. A structure of the state information will be returned.
However, this is likely to be a bit inefficient because the struct is expanded each iteration. I would suggest that when isempty() succeeds, that options be examined to find the maximum generations, and that state_record be initialized that large. Use state.Generation as the index for the output instead of end+1
4 Kommentare
MD. Rokibujjaman sovon
am 31 Dez. 2020
what is the scorehistory and besthistory? is scorehistory is the fval value for each iteration?
Thanks.
Walter Roberson
am 31 Dez. 2020
https://www.mathworks.com/help/gads/ga.html#d122e41218
https://www.mathworks.com/help/gads/some-genetic-algorithm-terminology.html
https://www.mathworks.com/matlabcentral/answers/322582-how-is-score-in-matlab-s-genetic-algorithm-defined
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!