遗传算法的经典解析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遗传算法的经典解析

遗传算法的经典解析---看了以后就会用ga了下面是英国sheffield大学的ga工具箱的经典编写程序示例,大家可以根据它,对相关数据修改就可以解决一切ga问题了至于matlab自带的ga工具箱,使用相当简单,真正工程应用没有sheffield大学的ga工具箱应用广泛,这里就不多累赘了记住使用时将下面的大写全部改为小写Nvar=20;%变量个数Nind=100;%种群大小Subpop=10;%子种群数量Maxgen=500;%最大遗传代数Miggen=20;%每隔20代发生迁移Range=[0;200];%变量范围Ggap=0.8;%代沟率Xovr=1;%交叉率Mutr=1/xovr;%变异率Insr=0.9;%插入率Migr=0.2;%迁移率Selfun=’sus’;%选择函数Xovfun=’recdis’;%重组函数Mutfun=’mutbga’;%变异函数Gen=0;Trace=zeros(maxgen,2);%遗传算法性能跟踪FieldDD=rep(range,[1,nvar]);%译码矩阵Chorm=crtrp(nind,fieldDD);%创建初始种群Objv=objfun(chorm);%计算目标函数While genlt;maxgenFitv=ranking(objv,[2,1],subpop);%分配适度值Selch=selet(selfun,chorn,fitv,ggap,subpop);%选择recch=recombin(xovfun,selch,xovr,subpop);%重组mutch=mutate(mutfun,recch,fieldDD,mutr,subpop);%变异objvoff=objfun(mutch);%计算目标函数值[chorm,objv]=reins(chorm,mutch,subpop,[1 indr],objv,objvoff);%替代Gen=gen+1;trace(gen,1) =min(objv);Trace(gen,2)=mean(objv);%在子种群中迁移个体If??(rem(gen,miggen)==0)[chorm,objv]=migrate(chor,subpop,[migr,1,1],objv);EndEnd[yy,ii]=min(objv);%输出最有解及序号Figure(1)Plot(chorm(ii,:),’-ro’);Figure(2);%遗传算法性能跟踪图Plot(trace(:,1));Hold onPlot(trace(:,2),’-.r’);Legend(‘解的变化’,’种群均值的变化’);Xlabel(‘迭代次数’);下面是各基本函数的介绍,有助大家编程因为每个个体对应一组染色体,故经常叫种群中的个体为染色体而每个染色体有好多基因组成,每个基因就是对应为题的每一个变量1.函数bs2rvphen=bs2rv(chrom,fieldD)根据译码矩阵fieldD将二进制串矩阵chorm转换成实值向量,返回矩阵包含对应的种群表现型。fieldD=[len;lb;ub;code;scale;lbin;ubin]len:指明chorm中每个变量(基因)的二进制编码的长度,满足sum(len)==size(chorm,2)lb和ub:分别指明每个变量使用的上下边界code:指明每个变量的编码方式,1为标准二进制编码,0为格雷编码scale:指明每个变量的是否使用对数或算术刻度,1是对数刻度,0为算术刻度lbin和ubin:指明表示范围总是否包含每个边界,1表示包含,0不包含比如:表示chrom的每个个体(染色体)的编码规则为:共有4个变量(即每个染色体有4个基因),第1个基因体是使用5位标准二进制编码,上下边界为[0 10],只包含上边界的算术刻度第2个基因体是使用6位格雷二进制编码,上下边界为[-5 0],包含上下边界的对数刻度2.crtbasebasevec=crtbase(lind,base)产生向量的元素对应染色体每个基因的基数(每个变量的范围)lind:每个染色体的基因(变量)个数,sum(lind)==变量个数,且length(lind)=length(base)base:对应每个基因的基数比如:basevec=crtbase([2 3 4 2],[10 20 15 8])结果为:basevec=[10 10 20 20 20 15 15 15 15 8 8]上面表示创建有2+3+4+2=11个基因(变量)的染色体(个体)前两的变量的取值为0-9,接着三个0-19,还有四个0-14,最后两个0-7由上面可以看出basevec其实可使用matlab的其它简单命令创建,因此很少用到它,一般使用rep。再强调一下,简单一点说basevec其实就是每个变

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档