MATLAB_智能算法30个案例分析 有目录(7)
发布时间:2021-06-05
发布时间:2021-06-05
%% 个体初始化
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体 avgfitness=[]; %种群平均适应度 bestfitness=[]; %种群最佳适应度 bestchrom=[]; %适应度最好染色体 % 初始化种群 for i=1:sizepop
individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体 x=individuals.chrom(i,:);
individuals.fitness(i)=fun(x); %个体适应度 end
%找最好的染色体
[bestfitness bestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度 % 记录每一代进化中最好的适应度和平均适应度 trace=[avgfitness bestfitness];
%% 进化开始 for i=1:maxgen
% 选择操作
individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop;
% 交叉操作
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异操作
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);
% 计算适应度 for j=1:sizepop
x=individuals.chrom(j,:); individuals.fitness(j)=fun(x); end
%找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals.fitness); [worestfitness,worestindex]=max(individuals.fitness); % 代替上一次进化中最好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:); end