1 觅食行为
指鱼循着食物多的方向游动的一种行为,人工鱼X i X_iXi在其视野内随机选择一个状态X j X_jXj,分别计算它们的目标函数值进行比较,如果发现Y j Y_jYj比Y i Y_iYi优(Y j Y_jYj和Y i Y_iYi分别为X j X_jXj和X i X_iXi的适应度值),则Xi向Xj的方向移动一步;否则,X i X_iXi继续在其视野内选择状态X j X_jXj,判断是否满足前进条件,反复尝试t r y n u m b e r trynumbertrynumber次后,仍没有满足前进条件,则随机移动一步使X i X_iXi到达一个新的状态。表达式如下:
X j = X i + r a n d ( ) ∗ v i s u a l (1) X_j=X_i+rand()*visual \tag{1}Xj=Xi+rand()∗visual(1)
X n e x t = X i + r a n d ( ) ∗ s t e p ∗ X j − X i ∣ ∣ X j − X i ∣ ∣ (2) X_{next}=X_i+rand()step\frac{X_j-X_i}{\left | \left | X_j-X_i \right | \right |}\tag{2}Xnext=Xi+rand()∗step∗∣∣Xj−Xi∣∣Xj−Xi(2)
X n e x t = X i + r a n d ( ) ∗ s t e p (3) X_{next}=X_i+rand()*step \tag{3}Xnext=Xi+rand()∗step(3)
其中rand()是介于0和1之间的随机数。

人 工 鱼 的 视 觉 描 述 人工鱼的视觉描述人工鱼的视觉描述
框架图如下所示:
伪代码段如下:
2 聚群行为
鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群 。人工鱼X i X_iXi搜索其视野内(d i j < v i s u a l d_{ij}<visualdij<visual)的伙伴数目n f n_fnf及中心位置X c X_cXc,若Y c / n f < δ Y i Y_c/n_f< δY_iYc/nf<δYi(求极小值时使用小于号,在求极大值时则相反;Y c Y_cYc和Y i Y_iYi分别为X c X_cXc和X i X_iXi的适应度值),表明伙伴中心位置状态较优且不太拥挤,则X i X_iXi朝伙伴的中心位置移动一步,否则执行觅食行为;
3 追尾行为
指鱼向其视野区域内的最优方向移动的一种行为。人工鱼X i X_iXi搜索其视野内(d i j < v i s u a l d_{ij}<visualdij<visual)适应度最高的个体X j X_jXj,其适应度值为Y j Y_jYj,并探索人工鱼X j X_jXj视野内的伙伴数目n f n_fnf,若Y j / n f < δ Y i Y_j/n_f< δY_iYj/nf<δYi,表明X j X_jXj状态较优且不太拥挤,则X i X_iXi朝X j X_jXj位置移动一步,否则执行觅食行为;
4 算法总述
综上所述,算法在运算过程中,会同时进行聚群和追尾行为。而觅食行为属于这两种行为中发现聚群对象或者追尾对象附近拥挤度过大时,人工鱼选择的行为方式,若在觅食过程中,未发现比自身适应度高的人工鱼,则按步长step随机移动。最后对聚群行为和追尾行为得到的适应度值进行比较,选择优秀的人工鱼作为下一代的个体。其总框架图如下:
2 分析拥挤度因子δ δδ
2.1 拥挤度因子的取值
在求极小值问题中:δ = α n m a x , α ∈ ( 0 , 1 ] δ=αn_{max}, α∈(0,1]δ=αnmax,α∈(0,1]
在求极大值问题中:δ = 1 α n m a x , α ∈ ( 0 , 1 ] δ=\frac{1}{αn_{max}},α∈(0,1]δ=αnmax1,α∈(0,1]
其中α αα为极值接近水平,n m a x n_{max}nmax为期望在该邻域内聚集的最大人工鱼数目。
2.2 拥挤度因子的作用机理
对追尾行为的描述
图中af0为人工鱼af1-5在各自视野内的最优人工鱼,其实物浓度为Y j Y_jYj,C1为以af0为圆心,以视野范围为半径的圆,即能探知af0的最远距离,人工鱼越靠近af0,状态越优。
求极大值情况下:当δ n f ≤ 1 δn_f\leq 1δnf≤1时,所有人工鱼af1-5都执行追尾行为,向af0游动;
δ = 1 α n m a x δ=\frac{1}{αn_{max}}δ=αnmax1
δ n f = n f α n m a x ≤ 1 δn_f =\frac{n_f}{αn_{max}}\leq 1δnf=αnmaxnf≤1
当α αα=1的时候,可以明显看出来n f ≤ n m a x n_f \leq n_{max}nf≤nmax,即说明人工鱼视野范围内不拥挤。
当δ n f > 1 δn_f >1δnf>1时,若C2的食物浓度为Y j δ n f \frac{Y_j}{δn_f }δnfYj的等浓度食物圈,则C2与C1间的人工鱼af1、af2、af3执行追尾行动,向af0游动,人工鱼af4、af5执行觅食行为。此时δnf 越大执行追尾行动的人工鱼越少,反之越多。
2.3 拥挤度因子的影响
以极大值为例(极小值的情况正好和极大值相反), δ δδ越大,表明允许的拥挤程度越小,人工鱼摆脱局部最优的能力越强;但是收敛的速度会有所减缓,这主要因为人工鱼在逼近极值的同时,会因避免过分拥挤而随机走开或者受其它人工鱼的排斥作用,不能精确逼近极值点。可见,δ δδ的引入避免了人工鱼过度拥挤而陷入局部极值,另一方面,该参数会使得位于极值点附近的人工鱼之间存在相互排斥的影响,而难以向极值点精确逼近,所以,对于某些局部极值不是很严重的具体问题,可以忽略拥挤的因素,从而在简化算法的同时也加快了算法的收敛速度和提高结果的精确程度。
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.