Я создал эту функцию, которая выполняет генетический алгоритм , чтобы решить проблему с рюкзаком.В последнем поколении я могу легко получить лучшую хромосому по выводу 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