找回密码
 注册
关于网站域名变更的通知
查看: 463|回复: 1
打印 上一主题 下一主题

matlab 遗传算法gatbx工具箱分享

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-17 10:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 House 于 2020-4-17 10:30 编辑
0 m6 E6 X8 p) a, I
2 U) k8 c/ v+ F9 _  U( J最近刚刚开始看遗传算法的例子,网上找了一个:/ l. ]  O5 t% w/ V& a3 s
  • <div class="blockcode"><blockquote>clc;clear all;close all;
  • %========画出函数图=======
  • figure(1);
  • lb=0;ub=9;   %自变量x的取值范围[-2,2]
  • ezmesh('x+10*sin(5*x)+7*cos(4*x)',[lb,ub]);  %画出函数曲线
  • hold on;
  • %================定义遗传算法参数======
  • ps=10;    %种群大小
  • mds=50;   %最大遗传代数
  • gt=20;    %个体长度
  • dg=0.95;  %代沟
  • px=0.95;   %交叉概率
  • pm=0.08;   %变异概率
  • trace=zeros(2,mds);   %寻优结果的初始值
  • FD=[gt;lb;ub;1;0;1;1]; %区域描述器
  • Chrom=crtbp(ps,gt);   %创建任意离散随机种群
  • %=========optimize(优化)====
  • gen=0;   %代计数器
  • X=bs2rv(Chrom,FD);  %初始种群的十进制转化
  • ObjV=X+10*sin(5*X)+7*cos(4*X);  %计算目标函数值
  • while gen<mds
  •     FitnV=ranking(-ObjV);               %分配适应度值
  •     SelCh=select('sus',Chrom,FitnV,dg); %选择
  •     SelCh=recombin('xovsp',SelCh,px);   %重组
  •     SelCh=mut(SelCh,pm);                %变异
  •     X=bs2rv(SelCh,FD);                 %子代个体的十进制转换
  •     ObjVSel=X+10*sin(5*X)+7*cos(4*X); %计算子代的目标函数值
  •     [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新种群
  •     X=bs2rv(Chrom,FD);
  •     gen=gen+1;
  •     %获取每代的最优解及其序号,Y为最优解,I为个体序号
  •     [Y,I]=max(ObjV);
  •     trace(1,gen)=X(I);  %记下每代的最优值
  •     trace(2,gen)=Y;
  • end
  • plot(trace(1,: ),trace(2,: ),'bo');
  • grid on;
  • plot(X,ObjV,'bo');  %画出最后一代的种群
  • hold off;
  • %==========画进化图=====
  • figure(2);
  • plot(1:mds,trace(2,: ));
  • grid on;
  • xlabel('遗传代数');
  • ylabel('解的变化');
  • title('进化过程');
  • bestY=trace(2,end);
  • bestX=trace(1,end);
  • fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n']);
      E0 Z; [2 i5 y$ E5 S

* F0 `: O0 w% {. o5 q" o
$ W  _% m3 y; S6 q( ?+ T* f
( m/ o8 z# @  q2 G$ \

$ a' ^% o7 h+ s这个不用工具箱是算不出来的。; ]" ~$ a, V8 L$ @- k
我本来论坛里搜了一个,用的是gaot_ga工具箱(论坛里有),但是 crtbp.m这个函数总是出错。后来发现是这个工具箱里没有==4 A2 g( L3 ~" C3 }$ P
于是重新找了gatbx的工具箱,现在结果可以成功复制了,如图:  e: P# f! W% _0 _

0 m0 F+ h5 W; [2 [8 H本来图2是跑不出来的,现在可以了。4 u3 B2 L: [5 m. n
* T  E& w4 Q, O4 q3 D' D2 V; t
gatbx 分享给大家
3 Q  ~$ h$ t) m1 r) Y( c
游客,如果您要查看本帖隐藏内容请回复
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-4-17 18:50 | 只看该作者
    aot_ga工具箱很好用啊
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-23 07:47 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表