人工鱼群算法Matlab实现_第1页
人工鱼群算法Matlab实现_第2页
人工鱼群算法Matlab实现_第3页
人工鱼群算法Matlab实现_第4页
人工鱼群算法Matlab实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、人工鱼群算法Matlal实现人工鱼群算法Matlab实现1基本思想人工鱼群算法是一种基于模拟鱼群行为的优化算法,是由李晓磊等在2002年提出的一种新型的寻优算法。在一片水域中,鱼生存的数目最多的地方就是本水域中富含营养物质最多的地方,依据这一特点来模仿鱼群的觅食等行为,从而实现全局寻优,这就是鱼群算法的基本思想。在鱼类的活动中,可以分为觅食行为、聚群行为、追尾行为和随机行为这四种行为,如何利用简单有效的方式来构造实现这些行为将是算法实施的主要问题。觅食行为主要就是循着食物多的方向游动的一种行为,在寻优中则是向较优方向进行的迭代方式,如鱼群模式中的视觉概念;在聚群行为中,借鉴的思想对每条人工鱼规

2、定了这样两个规则:1尽量向邻近伙伴的中心移动;2)避免过分拥挤,这样就能基本实现人工鱼的聚群能力;追尾行为就是一种向临近的最活跃者追逐的行为,在寻优算法中可以理解为是向附近的最优化伙伴前进的过程;随机行为就是人工鱼在其视野内随机移动的行为,在寻优算法中这种行为有助于解跳出局部最优。2算法剖析假设在一个n维的目标搜索空间中,有N条组成一个群体的人工鱼,每天人工鱼个体的状态可表示为向量沒=(x1,x2,,xj,其中Xi(i=1,n)为欲寻优的变量:人工鱼当前所在位置的食物浓度表示为Y=f(X),其中f()为目标函数;人工鱼个体间距离表示为d=|XiXjll(这是二范数);visual表示人工鱼的感

3、知范围,step为人工鱼移动步长,6为拥挤度因子;trynumber表示人工鱼每次觅食最大试探次数。2.觅1食行为指鱼循着食物多的方向游动的一种行为,人工鱼百在其视野内随机选择一个状态Xj,分别计算它们的目标函数值进行比较,如果发现Yj比逅优(Y和逅分别为Xj和兀的适应度值),lXi向Xj的方向移动一步;否则,兀继续在其视野内选择状态Xj,判断是否满足前进条件,反复尝试trynumber次后,仍没有满足前进条件,则随机移动一步使Xg到达一个新的状态。表达式如下:Xj=Xg+rand()*visual(1)(2)(3)XjXiXnext=Xi+rand()*step*|XjXi|1Xnext=X

4、i+rand()*step其中rand()是介于0和1之间的随机数。人工鱼的视觉描述框架图如下所示:伪代码段如下:fori=1:Nforj=1:Try_numberXj=x(i)+VisuaL*rand();%人工鱼Xi按式在其视野内随机选择一个状态Xjiff(Xj)f(x(i)%比较Xj和Xi的适应度X_next=刈i)+rand()*step*(Xj-x(i)/norm(Xj-x(i);%人工鱼Xi按式(2)朝着Xj方向移动一步,norm()函数表示二范数break;elseX_next=x(i)+step*rand();endendend2.2聚群行为鱼在游动过程中为了保证自身的生存和躲

5、避危害会自然地聚集成群。人工鱼百搜索其视野内(dijvisual)的伙伴数目/子及中心位置Xc,若Yc/nf*(求极小值时使用小于号,在求极大值时则相反;乙和逅分别为Xc和兀的适应度值)表明伙伴中心位置状态较优且不太拥挤,则Xi朝伙伴的中心位置移动一步,否则执行觅食行为;框架图如下所示:伪代码段如下:nf=0;X_inside=0;fori=1:Nforj=1:Nifnorm(x(j)-x(i)Visual%求人工鱼Xi与其他人工鱼之间的距离nf=nf+1;%统计在视野范围内的鱼数量X_inside=X_inside+x(j);%将视野范围内的鱼进行累加endX_inside=X_inside

6、-x(i);%需要去除Xi本身;因为在一开始计算时,i=j,把中心的鱼也进行了一次计算nf=nf-1;Xc=X_inside/nf;%此时Xc表示Xi感知范围其他伙伴的中心位置;iff(Xc)/nf6*f(x(i)x_next=x(i)+rand*Step*(Xc-x(i)/norm(Xc-x(i);else进行觅食行动endendend2.3追尾行为指鱼向其视野区域内的最优方向移动的一种行为。人工鱼百搜索其视野内(dijvisual)适应度最高的个体Xj,其适应度值为旳,并探索人工鱼Xj视野内的伙伴数目nf若Yj/nf6乙,表明Xj状态较优且不太拥挤,贝lXi朝Xj位置移动一步,否则执行觅食

7、行为;框架图如下所示:伪代码段如下:Y_max=inf;nf=O;fori=1:N%搜索人工鱼Xi视野范围内的最高适应度个体Xjforj=1:Nifnorm(x(j)-x(i)Visual&f(x(j)Y_max%求人工鱼Xi与其他人工鱼之间的距离X_max=x(j);Y_max=f(x(j);endend%搜索人工鱼Xj视野范围内的伙伴数量forj=1:Nif(norm(x(j)-X_max)Visual)nf=nf+1;endendnf=nf-1;%去掉他本身ifY_max/nfdelta*f(x(i)x_nex=x(i,:)+rand*Step.*(temp_maxX-x(i,:)./n

8、orm(temp_maxX-x(i,:);else进行觅食行为;endend2.4算法总述综上所述,算法在运算过程中,会同时进行聚群和追尾行为。而觅食行为属于这两种行为中发现聚群对象或者追尾对象附近拥挤度过大时,人工鱼选择的行为方式,若在觅食过程中,未发现比自身适应度高的人工鱼,则按步长step随机移动。最后对聚群行为和追尾行为得到的适应度值进行比较,选择优秀的人工鱼作为下一代的个体。其总框架图如下:分析拥挤度因子61拥挤度因子的取值在求极小值问题中:6=anmax,ae(0,1在求极大值问题中:6=a爲观e(0,1其中a为极值接近水平,nmax为期望在该邻域内聚集的最大人工鱼数目。拥挤度因子

9、的作用机理对追尾行为的描述图中afO为人工鱼af1-5在各自视野内的最优人工鱼,其实物浓度为Yj,C1为以af0为圆心,以视野范围为半径的圆,即能探知af0的最远距离,人工鱼越靠近afO,状态越优。求极大值情况下:当矶子1时,所有人工鱼af1-5都执行追尾行为,向af0游动;16=anmaxnf6nf=anmax1当a=1的时候,可以明显看出来nf1时,若C2的食物浓度为爲的等浓度食物圈,则C2与C1间的人工鱼af1、af2、af3执行追尾行动,向afO游动,人工鱼af4、af5执行觅食行为。此时dnf越大执行追尾行动的人工鱼越少,反之越多。3.2拥挤度因子的影响以极大值为例(极小值的情况正好

10、和极大值相反),6越大,表明允许的拥挤程度越小,人工鱼摆脱局部最优的能力越强;但是收敛的速度会有所减缓,这主要因为人工鱼在逼近极值的同时,会因避免过分拥挤而随机走开或者受其它人工鱼的排斥作用,不能精确逼近极值点。可见,6的引入避免了人工鱼过度拥挤而陷入局部极值,另一方面,该参数会使得位于极值点附近的人工鱼之间存在相互排斥的影响,而难以向极值点精确逼近,所以,对于某些局部极值不是很严重的具体问题,可以忽略拥挤的因素,从而在简化算法的同时也加快了算法的收敛速度和提高结果的精确程度。4算法实现%sum(sin(x)./x)极小值clearall;closeall;clc;Visual=25;%人工鱼

11、的感知距离Step=3;%人工鱼的移动最大步长N=30;%人工鱼的数量dim=10;%人工鱼维度Try_number=50;%迭代的最大次数delta=27;%拥挤度因子%测试函数f=(x)sum(x.A2);f=(x)sum(xS2);ub=100;%边界上限lb=-100;%边界下限d=;%存储50个状态下的目标函数值;Iteration=1;%Max_iteration=500;%迭代次数%初始化人工鱼种群x=lb+rand(N,dim).*(ub-lb);%计算10个初始状态下的适应度值;fori=1:Nfitness_fish(i)=f(x(i,:);endbest_fitness,

12、I=min(fitness_fish);%求出初始状态下的最优适应度;best_x=刈I,:);%最优人工鱼;whileIteration=Max_iterationfori=1:N%聚群行为nf_swarm=0;Xc=0;label_swarm=0;%群聚行为发生标志%确定视野范围内的伙伴数目与中心位置forj=1:Nifnorm(x(j,:)-x(i,:)Visualnf_swarm=nf_swarm+1;%统计在感知范围内的鱼数量Xc=Xc+x(j,:);%将感知范围内的鱼进行累加endendXc=Xc-x(i,:);%需要去除本身;因为在一开始计算时,i=j,把中心的鱼也进行了一次计算

13、nf_swarm=nf_swarm-1;Xc=Xc/nf_swarm;%此时Xc表示视野范围其他伙伴的中心位置;%判断中心位置是否拥挤if(f(Xc)/nf_swarmub;lb_flac=x_swarmub;lblag2=x_prey_randf(x_prey_rand)x_swarm=x(i,:)+rand*Step.*(x_prey_rand-x(i,:)./norm(x_prey_rand-x(i,:);ub_flag2=x_swarmub;lb_flag2=x_swarmub;lblag2=x_swarmlb;x_swarm=(x_swarm.*(ub_flag2+lblag2)+u

14、b.*ub_flag2+lb.*lblag2;x_swarmitness=f(x_swarm);endend%追尾行为fitness_follow=inf;label_follow=0;%追尾行为发生标记%搜索人工鱼Xi视野范围内的最高适应度个体Xjforj=1:Nif(norm(x(j,:)-x(i,:)Visual)&(f(x(j,:)fitnessfollow)best_pos=x(j,:);fitness_follow=f(x(j,:);endend%搜索人工鱼Xj视野范围内的伙伴数量nf_follow=0;forj=1:Nifnorm(x(j,:)-best_pos)Visualnf

15、_follow=nf_follow+1;endendnf_follow=nf_follow-1;%去掉他本身%判断人工鱼Xj位置是否拥挤if(fitnessollow/nfollow)delta*f(x(i,:)&(fitness_followub;lb_flag2=x_followub;lblag2=x_prey_randf(x_prey_rand)x_follow=x(i,:)+rand*Step.*(x_prey_rand-x(i,:)./norm(x_prey_rand-x(i,:);ub_flag2=x_followub;lb_flag2=xollowub;lb_flag2=x_fo

16、llowlb;x_follow=(xollow.*(ub_flag2+lblag2)+ub.*ub_flag2+lb.*lblag2;x_follow_fitness=f(x_follow);x_follow_fitness=f(xollow);endend%两种行为找最优ifx_follow_fitnessx_swarm_fitnessx(i,:)=x_follow;elsex(i,:)=x_swarm;endend%更新信息fori=1:Nif(f(x(i,:)best_fitness)best_fitness=f(x(i,:);best_x=x(i,:);endendConvergence_curve(Iteration)=best_fitness;Iteration=Iteration+1;ifmod(Iteration,50)=0display(迭代次数:,num2str(Iteration),最优适应度:,num2str(best_fitness);display(最优人工鱼:,num2str(best_x);endendfigure(Position,284214660290)subplot(1,2,1);x=-100:1:100;y=x;L=length(x);fori=1:Lforj=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论