基本思想鱼群特点:在一片水域中,鱼存在的数目最多的地方就是本水域中富含营养物质最多的地方。算法作用:全局择优鱼群行为:觅食,聚群,追尾。算法描述其中Rand()函数为产生0到1之间的随机数;Step为步长人工鱼的视觉描述序号变量名变量含义1N人工鱼群个体大小2{Xi}人工鱼个体的状态位置、Xi=(x1,x1,···,xn),其中xi=(1,2,···,n)为待优化变量3Yi=f(Xi)第i条人工鱼当前所在位置的食物浓度,Yi为目标函数4Dij=||Xi-Xj||人工鱼个体间的位置5Visual人工鱼的感知距离6Step人工鱼移动的最大步长7Delta拥挤度8Try_number觅食行为尝试的最大次数9n当前觅食行为次数10MAXGEN最大迭代次数序号函数名函数功能1AF_init初始化鱼群函数2AF_prey觅食行为函数3AF_swarm聚群行为函数4AF_follow追尾行为函数5AF_dist计算鱼群个体距离函数6AF_foodconsistence当前位置的食物浓度函数算法流程图开始设定N,Step,Visual,try_number,delta,MAXGEN,gen=1i=1Xi聚群行为,得到(Xnext1,Ynext1)Xi追尾行为,得到(Xnext2,Ynext2)Xi=Xnext1Ynext1Ynext2Xi=Xnext2i=Ni=i+1gen=gen+1GenMAXGEN确定最优解结束YESNOYESNOYESNO在给定范围内初始化鱼群{X1,X2,...Xn}算法实现鱼群中的每条人工鱼均为一组实数,是在给定范围内产生随机数组。例如,鱼群大小为N,有两个待优化的参数x,y,范围分别为[x1,x2]和[y1,y2],则要产生一个2行N列的初始鱼群,每列表示一条人工鱼的两个参数人工鱼Xi在其视野内随机选择一个状态Xj,分别计算它们的目标函数值进行比较,如果发现Yj比Yi优,则Xi向Xj的方向移动一步否则,Xi继续在其视野内选择状态Xj,判断是否满足前进条件,反复尝试Try-number次后,仍没有满足前进条件,则随机移动一步使Xi到达一个新的状态Xi|n=0Xj=Xi+rand()*Visualn=n+1YiYjXi|next=Xi+rand*Step*||||jijiXXXXn=try_numberXi|next=Xi+rand*StepYESNOYESNO聚群的规则:1.尽量向临近伙伴的中心移动2.避免过分拥挤人工鱼Xi搜索当前邻域内(dijVisual)的伙伴数目nf及中心位置Xc,若Yc/nfδYi,表明伙伴中心位置状态较优且不太拥挤,则Xi朝伙伴的中心位置移动一步,否则,执行觅食行为Xi确定di,jVisual的伙伴数目nf及他们的中心位置XcδYicfYnXi|next=Xi+rand*Step*||||ciciXXXXXi进行觅食行为YESNO人工鱼Xi搜索当前邻域内(dijVisual)的伙伴中的函数Yj最优伙伴Xj,如果Yj/nfδYi,表明最优伙伴的周围不太拥挤,则Xi朝此伙伴移动一步:否则,执行觅食行为Xi确定di,jVisual的伙伴数目nf及其中Yj最大的伙食XjδYijfYnXi|next=Xi+rand*Step*||||jijiXXXXXi进行觅食行为YESNO目标函数(即食物浓度函数)是用来求人工鱼当前位置的食物浓度,其实就是求给定变量的函数值,例如计算以下函数的最大值:f(x)=xsin(10π𝑥)+2.0,-1≤x≤1此时的食物浓度函数如下:function[Y]=AF_foodconsistence(X)fishnum=size(X,2);fori=1:fishnumY(1,i)=X(i)*sin(10*pi*X(i))+2;endEX:f(x)=xsin(10π𝑥)+2.0,-1≤x≤1一元函数优化参数选择参数取值参数取值人工鱼数50感知距离1最大迭代次数50拥挤度因子0.618觅食最大试探次数100移动步长0.1EX:f(x1,x2)=sin(𝑥1)/x1*sin(𝑥2)/x2,-1≤x1,x2≤1一元函数优化参数选择参数取值参数取值人工鱼数100感知距离2.5最大迭代次数50拥挤度因子0.618觅食最大试探次数100移动步长0.3算法分析在求极大值问题中:δ=1/(αnmax),α∈(0,1]其中α为极值接近水平,nmax为期望在该邻域内聚集的最大人工鱼数目。在求极小值问题中:δ=αnmax,α∈(0,1]拥挤度因子与nf相结合,通过人工鱼是否执行追尾和聚群行为对优化结果产出影响对追尾行为的描述图中af0为人工鱼af1-5在各自视野内的最优人工鱼,其实物浓度为Yj,C1为以af0为圆心,以视野为半径的圆,即能探知af0的最远距离,人工鱼越靠近af0,状态越优极大值情况下:当δnf≤1时,所有人工鱼af1-5都执行追尾行为,向af0游动;当δnf>1时,若C2的食物浓度为Yj/δnf的等浓度食物圈,则C2与C1间的人工鱼af1、af2、af3执行追尾行动,向af0游动,人工鱼af4、af5执行觅食行为。此时δnf越大执行追尾行动的人工鱼越少,反之越多以极大值为例(极小值的情况正好和极大值相反),δ越大,表明允许的拥挤程度越小,人工鱼摆脱局部极值的能力越强;但是收敛的速度会有所减缓,这主要因为人工鱼在逼近极值的同时,会因避免过分拥挤而随机走开或者受其它人工鱼的排斥作用,不能精确逼近极值点。可见,δ的引入避免了人工鱼过度拥挤而陷入局部极值,另一方面,该参数会使得位于极值点附近的人工鱼之间存在相互排斥的影响,而难以向极值点精确逼近,所以,对于某些局部极值不是很严重的具体问题,可以忽略拥挤的因素,从而在简化算法的同时也加快了算法的收敛速度和提高结果的精确程度1)只需比较目标函数值,对目标函数的性质要求不高。2)对初值的要求不高,随机产生或设为固定值均可。3)对参数设定的要求不高,容许范围大。4)具备并行处理能力,寻优速度较快。5)具备全局寻优能力,能快速跳出局部极值点。6)具有较快的收敛速度,可以用于解决有实时性要求的问题;7)对于一些精度要求不高的场合,可以用它快速的得到一个可行解;8)不需要问题的严格机理模型,甚至不需要问题的精确描述,这使得它的应用范围得以延伸.综上所述,该算法是一种基于集群智能的新型的高效寻优方法⑴具有克服局部极值,取得全局极值的能力⑵算法中仅使用目标问题的函数值,对搜索空间有一定的自适应能力⑶具有对初值与参数选择不敏感,鲁棒性强,简单易实现,收敛速度快和使用灵活等特点,可以解决经典方法不能求解的带有绝对值且不可导二元函数的极值问题⑴视野的改进⑵分段优化方法⑶混合优化方法Thankyou!