📄 popinit.asv
字号:
function [individuals,avgfitness,bestfitness,bestchrom,trace] = PopInit(maxgen,sizepop,fselect,fcode,pcross,fcross,pmutation,fmutation,lenchrom,bound);%该函数用于实现算法的第一步和第二步,即随机生成三个种群个体数12的种群%对每个种群进行100次简单的遗传算法%每个参数的具体含义参看main文件%%%编写时间 2008.4.5 % 初始化种群for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:)=Code(lenchrom,fcode,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=Decode(lenchrom,bound,individuals.chrom(i,:),fcode);%解码(binary和grey的解码结果为一个二进制串,float的解码结果为一个实数向量) %计算适应度 %修改处 %individuals.fitness(i)=AimFunc(x,heli,id_data,0); individuals.fitness(i)=Aimfunc(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,fselect); avgfitness=sum(individuals.fitness)/sizepop; %交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,fcross,[i maxgen],fcode,bound); % 变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,fmutation,[i maxgen],fcode,bound); % 计算适应度 for j=1:sizepop x=Decode(lenchrom,bound,individuals.chrom(j,:),fcode); %解码 % 修改处 %individuals.fitness(j)=AimFunc(x,heli,id_data,0); individuals.fitness(j)=Aimfunc(x); end %找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals.fitness); [worestfitness,worestindex]=max(individuals.fitness); % 代替上一次进化中最好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitness(worestindex)=bestfitness; avgfitness=sum(individuals.fitness)/sizepop; trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度end%进化结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -