📄 popmerge41.asv
字号:
function [individuals5,bestfitness,bestchrom] = PopMerge41(individuals1,individuals2,individuals3,individuals4,sizepop,lenchrom,fcode,bound,bestfitness,bestchrom)%从群体individual1,individual2,individual3,individual4中选出3个最佳个体构成数组individual4%%%编写时间 2008.4.5for i = 1:sizepop individuals1.chrom(i,:)=Code(lenchrom,fcode,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=Decode(lenchrom,bound,individuals1.chrom(i,:),fcode);%解码(binary和grey的解码结果为一个二进制串,float的解码结果为一个实数向量) %计算适应度 %修改处 %individuals.fitness(i)=AimFunc(x,heli,id_data,0); individuals1.fitness(i)=Aimfunc(x); %染色体的适应度endfor i = 1:3 [fitnessbest,pos] = min(individuals1.fitness); individuals5.chrom(i,:) = individuals1.chrom(i,:); individuals1.fitness(pos) = 10000;endfor i = 1:sizepop individuals2.chrom(i,:)=Code(lenchrom,fcode,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=Decode(lenchrom,bound,individuals2.chrom(i,:),fcode);%解码(binary和grey的解码结果为一个二进制串,float的解码结果为一个实数向量) %计算适应度 %修改处 %individuals.fitness(i)=AimFunc(x,heli,id_data,0); individuals2.fitness(i)=Aimfunc(x); %染色体的适应度endfor i = 4:6 [fitnessbest,pos] = min(individuals2.fitness); individuals5.chrom(i,:) = individuals2.chrom(pos,:); individuals2.fitness(pos) = 10000;endfor i = 1:sizepop individuals3.chrom(i,:)=Code(lenchrom,fcode,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=Decode(lenchrom,bound,individuals3.chrom(i,:),fcode);%解码(binary和grey的解码结果为一个二进制串,float的解码结果为一个实数向量) %计算适应度 %修改处 %individuals.fitness(i)=AimFunc(x,heli,id_data,0); individuals3.fitness(i)=Aimfunc(x); %染色体的适应度endfor i = 7:9 [fitnessbest,pos] = min(individuals3.fitness); individuals5.chrom(i,:) = individuals3.chrom(pos,:); individuals3.fitness(pos) = 10000;endfor i = 1:sizepop individuals4.chrom(i,:)=Code(lenchrom,fcode,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=Decode(lenchrom,bound,individuals4.chrom(i,:),fcode);%解码(binary和grey的解码结果为一个二进制串,float的解码结果为一个实数向量) %计算适应度 %修改处 %individuals.fitness(i)=AimFunc(x,heli,id_data,0); individuals4.fitness(i)=Aimfunc(x); %染色体的适应度endfor i = 10:12 [fitnessbest,pos] = min(individuals4.fitness); individuals5.chrom(i,:) = individuals4.chrom(pos,:); individuals4.fitness(pos) = 10000;end%计算individual5中的个体适应度for i = 1:sizepop individuals5.chrom(i,:)=Code(lenchrom,fcode,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=Decode(lenchrom,bound,individuals5.chrom(i,:),fcode);%解码(binary和grey的解码结果为一个二进制串,float的解码结果为一个实数向量) %计算适应度 %修改处 %individuals.fitness(i)=AimFunc(x,heli,id_data,0); individuals5.fitness(i)=Aimfunc(x); %染色体的适应度end %找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals5.fitness); [worestfitness,worestindex]=max(individuals5.fitness); % 代替上一次进化中最好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness; bestchrom=individuals5.chrom(newbestindex,:); end individuals5.chrom(worestindex,:)=bestchrom; individuals5.fitness(worestindex)=bestfitness; avgfitness=sum(individuals5.fitness)/sizepop; trace5=[avgfitness bestfitness];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -