标准遗传算法的MATLAB实现.docVIP

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

%标准遗传算法 %优化函数为f=-(x-1)^2+4,其中,0=x=3 %编码长度为10位,编码精度为0.0029 %种群规模设为40,遗传算子分别为比例选择,单点交叉和单点变异。交叉概率0.7,变异概率0.1 %最大进化代数为200代,保优操作。 main.m initial; global G; for G=1:200 crossover; mutation; adapting; keepbest; selection; end result; %初始化函数,随机形成规模为40初始种群 initial.m pop(40,10)=0; best_individual(10)=0; %最优个体 adapt_ave(200)=0; %种群平均适应值 for i=1:40 for j=1:10 if rand0.5 pop(i,j)=1; else pop(i,j)=0; end end end % pop clear i; clear j; %交叉操作,概率为0.7,单点交叉 crossover.m for i=1:2:39 cross_P=rand; %随机产生一个数,以比较交叉概率 if cross_P0.9 %交叉概率为0.9 cross_pos=round(10*rand); %交叉位置为0~9,若位置为0或9,则不进行交叉操作 if or(cross_pos==0,cross_pos==9) continue; end for j=cross_pos:10 temp=pop(i,j); pop(i,j)=pop(i+1,j); pop(i+1,j)=temp; end end end clear i; clear j; clear temp; clear cross_P; clear cross_pos; %变异操作,单点变异,变异概率为0.1 mutation.m for i=1:40 if rand0.1 %通过变异概率 M_pos=round(10*rand); if M_pos~=0 %若变异位为0则无意义 pop(i,M_pos)=1-pop(i,M_pos); end end end clear M_pos; clear i; %计算适应值 adapting.m for i=1:40 adapt(i)=0; end for i=1:40 for j=1:10 if pop(i,j)==1 adapt(i)=adapt(i)+2^(10-j); end end adapt(i)=adapt(i)*0.0029; adapt(i)=-(adapt(i)-1).^2+4; end global adapt_best; global best_pos; adapt_best=0; %最佳个体 best_pos=0; %最佳个体在种群中的位置 % adapt_ave=0; for i=1:40 adapt_ave(G)=adapt_ave(G)+adapt(i); if adapt_bestadapt(i) adapt_best=adapt(i); best_pos=i; end end adapt_ave(G)=adapt_ave(G)/40; clear i; clear j; %保优操作 keepbest.m for i=1:10 best_individual(i)=pop(best_pos,i); end % The select oprator function selection.m ada_sum=0; ada_temp=0; r=0; i=0;j=0; for i=1:40 ada_sum=ada_sum+adapt(i); end for i=1:39 %选择39次,最后一个个体留给历代最优解 r=rand*ada_sum; %随机产生一个数 ada_temp=0; %初始化累加值为0

文档评论(0)

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

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档