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

题目与分析

题目:计算函数
在这里插入图片描述
的最小值,其中每个变量的取值区间都是[-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

结果显示

在这里插入图片描述
在这里插入图片描述
上面两图是迭代到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.csdn.net/download/wlfyok/12583634
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本书可作为高等院校计算机、自动化、信息、管理、控制与系统工程等专业本科生或研究生的教材或参考书,也可供其他相关专业的师生及科研和工程技术人员自学或参考。作 者:雷英杰 等编著。第一章 遗传算法概述 1.1 遗传算法的概念 1.2 遗传算法的特点 1.2.1 遗传算法的优点 1.2.2 遗传算法的不足之处 1.3 遗传算法与传统方法的比较 1.4 遗传算法的基本用语 1.5 遗传算法的研究方向 1.6 基于遗传算法的应用 第二章 基本遗传算法及改进 2.1 遗传算法的运行过程 2.1.1 完整的遗传算法运算流程 2.1.2 遗传算法的基本操作 2.2 基本遗传算法 2.2.1 基本遗传算法的数学模型 2.2.2 基本遗传算法的步骤 2.2.3 遗传算法的具体例证 2.3 改进的遗传算法 2.3.1 改进的遗传算法一 2.3.2 改进的遗传算法二 2.3.3 改进的遗传算法三 2.3.4 改进的遗传算法四 2.4 多目标优化中的遗传算法 2.4.1 多目标优化的概念 2.4.2 多目标优化问题的遗传算法 第三章 遗传算法的理论基础 3.1 模式定理 3.2 积木块假设 3.3 欺骗问题 3.4 遗传算法的未成熟收敛问题及其防止 3.4.1 遗传算法的未成熟收敛问题 3.4.2 未成熟收敛的防止 3.5 性能评估 3.6 小生境技术和共享函数 第四章 遗传算法的基本原理与方法 4.1 编码 4.1.1 编码方法 4.1.2 编码评估策略 4.2 选择 4.3 交叉 4.4 变异 4.5 适应度函数 4.5.1 适应度函数的作用 4.5.2 适应度函数的设计主要满足的条件 4.5.3 适应度函数的种类 4.5.4 适应度尺度的变换 4.6 控制参数选择 4.7 约束条件的处理 第五章 遗传算法工具箱函数 5.1 工具箱结构 5.1.1 种群表示和初始化 5.1.2 适应度计算 5.1.3 选择函数 5.1.4 交叉算子 5.1.5 变异算子 5.1.6 多子群支持 5.2 遗传算法中的通用函数 5.2.1 函数 bs2rv 5.2.2 函数 crtbase 5.2.3 函数 crtbp 5.2.4 函数 crtrp 5.2.5 函数 migrate 5.2.6 函数 mut 5.2.7 函数 mutate 5.2.8 函数 mutbga 5.2.9 函数 ranking 5.2.10 函数 recdis 5.2.11 函数 recint 5.2.12 函数 reclin 5.2.13 函数 recmut 5.2.14 函数 recombin 5.2.15 函数 reins 5.2.16 函数 rep 5.2.17 函数 rws 5.2.18 函数 scaling 5.2.19 函数 select 5.2.20 函数 sus 5.2.21 函数 xovdp 5.2.22 函数 xovdprs 5.2.23 函数 xovmp 5.2.24 函数 xovsh 5.2.25 函数 xovshrs 5.2.26 函数 xovsp 5.2.27 函数 xovsprs 第六章 遗传算法工具箱的应用 第七章 遗传算法应用举例 第八章 使用MATLAB遗传算法工具 第九章 使用MATLAB直接搜索工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

原创小白变怪兽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值