资源简介

通过自己的整合,可以用来求解多元函数最大值,保证可以运行,希望对你们有用

资源截图

代码片段和文件信息

clc
clear
%遗传算法参数
maxgen=30;
   size=40;
pcross=0.6;
pmutation=0.01;
lenchrom=[1 1 1 1 1];
bound=[0 99;0 99; 0 99; 0 99;0 99];
for b=1:1
%个体初始化
indi=struct(‘fitness‘zeros(1size(b))‘chrom‘[]);
%avgfitness=[];%种群的平均适应度
bestfitness=[];%种群的最佳适应度
bestchrom=[];%适应度最好的染色体
for i=1:size(b)
    indi.chrom(i:)=Code(lenchrombound);
    x=indi.chrom(i:);
    indi.fitness(i)=fun(x);
end
[bestfitnessbestindex]=max(indi.fitness);
bestchrom=indi.chrom(bestindex:);
avgfitness=sum(indi.fitness)/size(b);
%记录每一代中最好的适应度和平均适应度
for i=1:maxgen
    %选择
    indi=select(indisize(b));
    avgfitness=sum(indi.fitness)/size(b);
    %交叉
    indi.chrom=Cross(pcrosslenchromindi.chromsize(b)bound);
    %变异
    indi.chrom=Mutation(pmutationlenchromindi.chromsize(b)[i maxgen]bound);
   %每进化10代,以所得值为初始值进行非线性寻优
   if mod(i10)==0
       indi.chrom=nonlinear(indi.chromsize(b));
   end
   for j=1:size(b)
       x=indi.chrom(j:);
       indi.fitness(j)=fun(x);
   end
   %找到最优染色体急他们在种群中的位置
   [newbestfitnessnewbestindex]=max(indi.fitness);
   %代替上一次进化中最好的染色体
   if bestfitness       bestfitness=newbestfitness;
       bestchrom=indi.chrom(newbestindex:);
   end
   %avgfitness=sum(indi.fitness)/size;
   trace(bi)=bestfitness ;
   
end


end
x=1:maxgen;
plot(xtrace(1:))
hold on 
 title(‘遗传算法求解最大值‘);
 %legend(‘种群为20‘‘种群为30‘)
 xlabel(‘迭代次数‘)
 ylabel(‘最大值‘)
 grid
    

    
    




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1317  2017-10-10 08:47  Cross.m
     文件        1232  2017-10-10 08:41  Mutation.m
     文件        1600  2017-10-01 10:25  changeyichuan1.m
     文件         331  2017-09-28 08:34  nonlinear.m
     文件         465  2017-09-27 21:17  select.m
     文件         405  2017-10-10 08:39  Code.m

评论

共有 条评论