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

本文通过使用遗传算法(GA)优化一个十维平方和函数,详细介绍了如何利用gatbx工具箱设置参数,进行选择、重组、变异和重插入操作。在40个个体、500代的迭代过程中,展示了函数值趋向于最小值0的过程,验证了算法的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目与分析

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

结果显示

在这里插入图片描述
在这里插入图片描述
上面两图是迭代到200次和400次时,函数值的取值分布,可以看到有异常的个体,但超过一半以慢慢向最优种群进化,随着迭代次数的增加,最终将我们得到想要的结果。
在这里插入图片描述
这是最终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.youkuaiyun.com/download/wlfyok/12583634
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原创小白变怪兽

帮助原创小白成为怪兽吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值