好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

差分进化算法-入门.docx

7页
  • 卖家[上传人]:hs****ma
  • 文档编号:475156222
  • 上传时间:2022-11-07
  • 文档格式:DOCX
  • 文档大小:56.67KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 差分进化算法入门基本差分进化算法1基本差分进化算法的基本思想DE算法是一种基于实数编码的用于优化函数最小值的进化算法,是在求解有关切比雪夫多项式的问题时提出来的,是基于群体差异的进化计算方法它的整体结构类似于遗传算法,一样都存在变异、交叉和选择操作,但是它又不同于遗传算法与基本遗传算法的主要区别在于变异操作上,如:1、传统的遗传算法采用二进制编码,而差分进化算法采用实数编码2、在遗传算法中通过两个父代个体的交叉产生两个子个体,而在差分进化算法中通过第两个或几个个体的差分矢量做扰动来产生新个体3、在传统的遗传算法中,子代个体以一定概率取代其父代个体,而在差分进化中新产生的个体只有当它比种群中的个体优良时才替换种群中的个体变异是DE算法的主要操作,它是基于群体的差异向量来修正各个体的值,其基本原理是通过把种群中两个个体的向量差加权后,按一定的规划与第三个个体求和来产生新个体,然后将新个体与当代种群中某个预先决定的个体相比较,如果新个体的目标值优于与之相比较的个体的目标值,则在下一代中就用新个体取代,否则,旧个体仍保存下来差分进化算法其基本思想是:首先由父代个体间的变异操作构成变异个体;接着按一定的概率,父代个体与变异个体之间进行交叉操作,生成一试验个体;然后在父代个体与试验个体之间根据适应度的大小进行贪婪选择操作,保留较优者,实现种群的进化。

      2差分进化算法的基本操作设当前进化代数为t群体规模为NP,空间维数为D,当前种群为X(t)x,x,L,x,xx,x,L,x为种群中的第i个个体在进化过ttttttt12NPii1i2iD程中,对于每个个体x.依次进行下面三种操作i2.1变异操作对于每个个体xit按下式产生变异个体vit(vit1,vit2,L,vitD)T,则v.jxjF(x.xj)j1,2,L,D(1itjrt1jrt2jrt3j其中xrt(xrt1,xtr2,L%D',(出2丄%D和f丄,》D)是群1111(xr21,xr2222(xr331,xr323体中随机选择的三个个体,并且「i;x.,x.和x•分别为个体r1rt.tr.tr.1和r3的第j维分量;F为变异因子,一般取值于[0,2]这样就得到了变异个体vit2.2交叉操作由变异个体vit和父代个体xit得到试验个体uit(uit1,uit2,L,uitD)T,则vifrand[01]CRorjj_randxifrand[0itjttiju1]CRandjj_randit其中,rand[0,1]是[0,1]间的随机数;CR是范围在[0,1]间的常数,称为交叉因子,CR值越大,发生交叉的可能性就越大;j—rand是在[1,D]随机选择的一整数,它保证了对于试验个体uit至少要从变异个体vit中获得一个元素。

      以上的变异操作和交叉操作统称为繁殖操作2.3选择操作差分进化算法采用的是“贪婪”选择策略,即从父代个体xit和试验个体itu中it选择一个适应度值最好的作为下一代的个体t+1,选择操作为:it1xixiffitness(x)ttiifitness(u)uttii(3)其中,fitness()为适应度函数,一般以所要优化的目标函数为适应度函数本文的适应度函数如无特殊说明均为目标函数且为求函数极小值3差分进化算法的算法流程由前面对基本差分进化算法的基本原理的了解,我们可以得到差分进化算法的算法流程设计如下3.1基本差分进化算法的基本步骤(1)初始化参数:种群规模NP;缩放因子F;变CR;空间维数D;异因子进化代数t02)(3)(4)(5)随机初始化初始种群x(t)x1t,xt2,L,xtNp,其xit1,xit2丄,xitD个体评计算每个个体的适应度T°变异操作:交叉操值按1)式对每个个体进行变异操作,并得到变异个体按(2)式对每个个体进行交叉操作,得到试tvit择:操作:验按个(体3)式从父代个体一代个uix.和试验个体中选择一个作为下itit中的最优个体为xbtes1t,如果达到最大进化代数或满足误差则停止进化并输要求,出xbtesit为最优解,否则令t=t+l,转(3)。

      3.2基本差分进化算法的流程图4基本差分进化算法的MATLAB描述function[Pb]=DE%参数初始化D=input('请输入空间维数D=');N=input('请输入种群规模N=');F=input('请输入缩放因子F=');CR=input('请输入交叉因子CR=');U=input('请输入运彳丁的次数U=');Tmax二input('请输入最大迭代ymax=');次数%变量限制a1=ones(1,30)*(-5.12);b1=ones(1,30)*(5.12);eps=1e-9;x=[];v=[];y=[];%随机产生初始种群fori=1:Nforj=1:Dx(i,j)=a1(j)+rand*(b1(j)-a1(j));endendt=1;trial=zeros(1,D);cost=zeros(1,N);cost(1)=fitness(x(1,:),D);Pb=cost(1);Xb=x(1,:);%计算每个个体的适应度值及当前种群的最优值fori=2:Ncost(i)=fitness(x(i,:),D);if(cost(i)<=Pb)Pb=cost(i);endendticsum=0;forz=1:Uwhile(t1a=floor(rand*N)+1;ifa~=ibreak;endendwhile2>1b=floor(rand*N)+1;ifb~=i&b~=abreak;endendwhile2>1c=floor(rand*N)+1;ifc~=i&c~=a&c~=bbreak;endendfork=1:Dv(k)=x(c,k)+F*(x(a,k)-x(b,k));end%对每个个体进行交叉操作,得试验个体jrand=floor(rand*D+1);fork=1:Dif(randb1(k)trial(k)=b1(k);endend%对每个个体进行选择操作,得下一代个体score=fitness(trial(:),D);if(score<=cost(i))x(i,1:D)=trial(1:D);cost(i)=score;endifcost(i)<=PbPb=cost(i);Xb(1:D)=x(i,1:D);endendt=t+1;endy(z)=Pb;%计算平均适应最优值sum=Pb+sum;endPbavr=sum/U;%U次中的最差值和最好值Pbmax=y(1);Pbmin=y(1);forz=1:UifPbmaxy(z)Pbmin=y(z);endendtocdisp(***')TmaxyPbmaxPbminPbavrdisp(%适应度函数%functioneval=fitness(x,D)sol=x;eval=0;fori=l:D—leval二eval+(sol(i)八2—10*cos(2*pi*sol(i))+10);end%。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.