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

matlab 遗传算法gatbx工具箱分享

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 House 于 2020-4-17 10:30 编辑 2 j& \! h( p+ [5 b2 L
4 f6 G8 B. F3 J" L+ u7 s, f( x* p% C- R
最近刚刚开始看遗传算法的例子,网上找了一个:
; k# r- U  o: ^' j2 f
  • <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']);
    4 A/ n) H  I  u, P: K" i! H6 M; ~
7 r  O/ J3 }8 f. g( A" n" q
$ V# b  o5 g- v1 ?

; j, t$ K! B1 q& \3 F
$ w' R5 h4 G5 `3 m1 C* B& ]% D$ J这个不用工具箱是算不出来的。% [, L2 E. m% T; |
我本来论坛里搜了一个,用的是gaot_ga工具箱(论坛里有),但是 crtbp.m这个函数总是出错。后来发现是这个工具箱里没有==0 H9 M, P6 G: r5 H$ h  a
于是重新找了gatbx的工具箱,现在结果可以成功复制了,如图:1 D/ b% q6 c( B4 h7 V8 L
) p+ [) i; r3 W! m% ~
本来图2是跑不出来的,现在可以了。+ x1 s+ i, ^7 a- x# w, u3 M8 o
0 P6 \1 o  b2 ?( L0 u0 g8 K
gatbx 分享给大家
. G, B1 m4 k* t' n
游客,如果您要查看本帖隐藏内容请回复
  • 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-8-23 09:21 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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