how can i save every generation's best position using ga

i'm using the ga function in matlab, i want to save every generation's best position
how can i do that.becanse i cannot find
[x,fval,exitflag,output,population,scores] = ga(fitnessfcn,nvars,...)
return such values

1 Comment

options = optimoptions('ga',..'OutputFcns',@ga_save_each_gen);
I did a simple funciton ga_save_each_gen to do so.
function [state,options,optchanged]=ga_save_each_gen(options,state,flag)
Score_gen=state.Score;
Population_gen=state.Population;
Generation_gen=state.Generation;
optchanged=[];
save(['gen_' num2str(Generation_gen,'%.4d') '.mat'],'Score_gen','Population_gen','Generation_gen')
end

Sign in to comment.

Answers (1)

Use gaoptimset to change the options. Display and PlotFcns will show some detail. You may also want to look at the OutputFcns option where you can write your own custom function to collect data.
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
lb = zeros(2,1);
ga_options=gaoptimset('Display','iter','PlotFcns',@gaplotbestf);
[x,fval,exitflag,output,population,scores] = ga(@lincontest6,...
2,A,b,[],[],lb,[],[],ga_options);

3 Comments

I appreciate it very much,thank you. I'm working on the OutputFcns option.But i have difficulty in writing my own custom function to collect every generation's best position and return the collected data. Will you please show me an example. I need it very much now
Hi Jenkins,I have solved the problem with the help of the custom plot function in PlotFcns option
can you help with the code plz, i have the same problem

Sign in to comment.

Asked:

on 28 Mar 2014

Commented:

on 20 Apr 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!