网站大量收购独家精品文档,联系QQ:2885784924

matlab基本遗传算法应用实例.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
matlab基本遗传算法应用实例

基本遗传算法应用实例。用基本遗传算法求下面函数的最大值 个体数目取50,最大进化代数取100,离散精度取0.001,杂交概率取0.9,变异概率取0.004 在editor中建立基本遗传算法函数:GA 程序如下: function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm,eps) %待优化的目标函数:fitness %自变量下界:a %自变量上界:b %种群个体数:NP %最大进化代数:NG %杂交概率:pc %自变量概率:pm %自变量离散精度:eps %目标函数取最小值时的自变量值:xm %目标函数的最小值:fv L=ceil(log2((b-a)/eps+1)); %根据离散精度,确定二进制编码需要的码长 x=zeros(NP,L); for i=1:NP x(i,:)=Initial(L);%种群初始化 fx(i)=fitness(Dec(a,b,x(i,:),L)); %个体适应值 end for k=1:NG sumfx=sum(fx); %所有个体适应值之和 px=fx/sumfx; %所有个体适应值的平均值 ppx=0; ppx(1)=px(1); for i=2:NP %用于轮盘赌策略的累加 ppx(i)=ppx(i-1)+px(i); end for i=1:NP sita=rand(); for n=1:NP if sita=ppx(n) SelFather=n; %根据轮盘赌策略确定的父亲 break; end end Selmother=floor(rand()*(NP-1))+1; %随机选择母亲 posCut=floor(rand()*(L-2))+1; %随机选择交叉点 r1=rand(); if r1=pc %交叉 nx(i,1:posCut)=x(SelFather,1:posCut); nx(i,(posCut+1):L)=x(Selmother,(posCut+1):L); r2=rand(); if r2=pm %变异 posMut=round(rand()*(L-1)+1); nx(i,posMut)=~nx(i,posMut); end else nx(i,:)=x(SelFather,:); end end x=nx; for i=1:NP fx(i)=fitness(Dec(a,b,x(i,:),L));%子代适应值 end end fv=-inf; for i=1:NP fitx=fitness(Dec(a,b,x(i,:),L)); if fitxfv fv=fitx; %取个体中的最好值作为最终结果 xv=Dec(a,b,x(i,:),L); end end function result=Initial(length) %初始化函数 for i=1:length r=rand(); result(i)=round(r); end function y=Dec(a,b,x,L) %二进制编码转换为十进制编码 base=2.^((L-1):-1:0); y=dot(base,x); y=a+y*(b-a)/(2^L-1); %[xv,fv]=GA(@fitness,0,30,50,100,0.9,0.04,0.01) 2、建立目标函数文件fitness.m文件: function F=fitness(x) F=x^3-60*x^2+900*x+100; 3、在命令窗口输入: [xv,fv]=GA(@fitness,0,30,100,500,0.9,0.04,0.01) 4、结果(结果

文档评论(0)

mhk8089 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档