Как получить лучшее из первого поколения в генетическом алгоритме? - PullRequest
0 голосов
/ 20 января 2019

Я создал эту функцию, которая выполняет генетический алгоритм , чтобы решить проблему с рюкзаком.В последнем поколении я могу легко получить лучшую хромосому по выводу x, но как я могу получить лучшую хромосому из первого поколения ?Посмотрев здесь Я заметил, что существует вектор Best, который должен хранить лучший элемент каждого поколения.Как я могу получить доступ к этому вектору?

function [x,fval,exitflag,output,population,score] = evolutionaryGaSolution(ds, Wmax)
   nvars = 32;
   PopulationSize_Data = 50;
   MaxGenerations_Data = 80;
   FitnessLimit_Data = -207;

   f = @(x)fitnessBackpack(x, ds, Wmax);

   % Load default settings
   options = optimoptions('ga');
   % Modify options setting
   options = optimoptions(options,'PopulationType', 'bitstring');
   options = optimoptions(options,'PopulationSize', PopulationSize_Data);
   options = optimoptions(options,'MaxGenerations', MaxGenerations_Data);
   options = optimoptions(options,'FitnessLimit', FitnessLimit_Data);
   options = optimoptions(options,'MutationFcn', {  @mutationuniform 0.1 });
   options = optimoptions(options,'Display', 'off');
   options = optimoptions(options,'PlotFcn', { @gaplotlogbestf });

   [x,fval,exitflag,output,population,score] = ...
       ga(f,nvars,[],[],[],[],[],[],[],[],options);

   fprintf("Starting point: %s\n", ????); % What should I write here?
   fprintf("Final point: %s\n", num2str(x));
   fprintf("Generations:%d\n", output.generations);
   end
...