浅谈使用遗传算法工具箱的优化实例

文字目录

  • 题目与分析
  • 结果显示
  • 代码
  • gatbx工具箱

题目与分析

题目:计算函数
在这里插入图片描述
的最小值,其中每个变量的取值区间都是[-1, +1]。
案例分析:这是一个平方和函数,很明显,它唯一一个极小值点是(0,0,0,0,0,0,0,0,0,0)。程序的个体变量数为40,最大遗传代数为500,变量维数20,每个变量用20位表示,代沟为0.9。
对设定的群体进行选择,重组,变异,重插入然后不断进行迭代,其中的函数应用了gatbx工具箱,参数的设定如上。
工具箱地址:https://download.csdn.net/download/wlfyok/12583634

结果显示

浅谈使用遗传算法工具箱的优化实例_第1张图片
浅谈使用遗传算法工具箱的优化实例_第2张图片
上面两图是迭代到200次和400次时,函数值的取值分布,可以看到有异常的个体,但超过一半以慢慢向最优种群进化,随着迭代次数的增加,最终将我们得到想要的结果。
浅谈使用遗传算法工具箱的优化实例_第3张图片
这是最终500次迭代后函数值的趋势,可以看到趋于0,与我们最初的分析一致。

代码

% 求解代码
NIND=40;
MAXGEN=500;
NVAR=20;
PRECI=20;
GGAP=0.9;
trace=zeros(MAXGEN,2);
FieldD=[rep([PRECI],[1,NVAR]);rep([-1;1],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI);
gen=0;
zhi=bs2rv(Chrom,FieldD);
j=1;
for i=1:40
    ObjV(i,:)=sum(zhi(i,:).^2);
end
while gen < MAXGEN
    FitnV=ranking(ObjV);
    SelCh=select('sus',Chrom,FitnV,GGAP);
    SelCh=recombin('xovsp',SelCh,0.7);
    SelCh=mut(SelCh);
    zhi=bs2rv(SelCh,FieldD);
    for i=1:36
    ObjVSel(i,:)=sum(zhi(i,:).^2);
    end
    [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
    gen=gen+1;
    trace(gen,1)=min(ObjV);
    trace(gen,2)=sum(ObjV)/length(ObjV);
    if mod(gen,100)==0
        figure(j)
        plot(ObjVSel)
        j=j+1;
    end
end
figure(j)
plot(trace(:,1))
hold on
plot(trace(:,2),'g-')
grid on
legend('种群均值变化','解的变化')

gatbx工具箱

分享gatbx工具箱,读者想要可联系笔者或在评论区发言,我们借一步说话,哈哈哈。
这个是工具箱的网址,大家可以去下载。
https://download.csdn.net/download/wlfyok/12583634
浅谈使用遗传算法工具箱的优化实例_第4张图片

你可能感兴趣的:(遗传算法,matlab)