鲸鱼算法
前言
鲸鱼算法(Whale Optimization Algorithm)是根据鲸鱼围捕猎物的行为而提出的算法。鲸鱼是一种群居的哺乳动物,在捕猎时它们也会相互合作对猎物进行驱赶和围捕。
鲸鱼算法中,每个鲸鱼的位置代表了一个可行解。在鲸鱼群捕猎过程中,每只鲸鱼有两种行为,一种是包围猎物,所有的鲸鱼都向着其他鲸鱼前进;另一种是汽包网,鲸鱼环形游动喷出气泡来驱赶猎物。在每一代的游动中,鲸鱼们会随机选择这两种行为来进行捕猎。在鲸鱼进行包围猎物的行为中,鲸鱼将会随机选择是向着最优位置的鲸鱼游去还是随机选择一只鲸鱼作为自己的目标,并向其靠近。
算法原理
在海洋活动中,座头鲸有着一种特殊的狩猎方法,这种觅食行为称为bubble-net 捕食策略,其狩猎行为如图所示。
包围猎物
座头鲸在狩猎时要包围猎物,为了描述这种行为,Mirjalili 提出了下面的数学模型:
式中:$t$ 是当前迭代次数;$A$ 和 $C$ 为表示系数,$X^{*}(t)$ 表示目前为止最好的鲸鱼位置向量,$X(t)$ 表示当前鲸鱼的位置向量,$A$ 和 $C$ 由下式可得到
其中,$r_{1}$和$r_{2}$是(0,1)中的随机数,$a$ 的值从 2到 0 线性下降,$t$ 表示当前的迭代次数,$T_{max}$ 为最大迭代次数。
狩猎行为
根据座头鲸的狩猎行为,它是以螺旋运动游向猎物,故狩猎行为的数学模型如下:
其中, $D_{p} = |X^{}(t)−X(t)|$ 表示鲸鱼和猎物之间的距离,$X^{}(t)$ 表示目前为止最好的位置向量,$b$ 是一个常数,用来定义螺线的形状, $l$ 是 $(−1,1)$ 中的随机数。值得注意的是,鲸鱼以螺旋形状游向猎物的同时还要收缩包围圈。因此,在这种同步行为模型中,假设有 $P_{i}$ 的概率选择收缩包围机制和 $1−P_{i}$ 的概率选择螺旋模型来更新鲸鱼的位置,其数学模型如下:
攻击猎物时,在数学模型上靠近猎物设定了减小 $a$ 的值,这样 $A$ 的波动范围也随$a$ 下降。在迭代过程中当$a$的值从2到0下降时,$A$ 是在$[−a,a]$内的随机值,当 $A$ 的值在[−1,1]内时,鲸鱼的下一个位置可以是它现在的位置和猎物的位置之间的任意位置,算法设定当 $A<1$ 时,鲸鱼向猎物发起攻击。
搜索猎物
在搜索猎物时,其数学模型如下:
其中,$X_{rand}$是随机选择的鲸鱼位置向量,算法设定当 $A≥1$ 时,随机选择一个搜索代理,根据随机选择的鲸鱼位置来更新其他鲸鱼的位置,迫使鲸鱼偏离猎物,借此找到一个更合适的猎物,这样可以加强算法的勘探能力使 WOA 算法能够进行全局搜索.
算法流程
(1)初始化参数:即鲸鱼种群规模大小 $SN$,最大迭代次数 $T_{max}$;
(2)算法初始化鲸鱼种群的位置;
(3)计算每一头鲸鱼相应的适应度值,根据适应度值的大小排序,并选取 $SN$ 个作为初始种群;
(4)计算出 $SN$ 个个体适应度值的大小,找出适应度值最小的个体位置作为最优位置;
(5)更新下一代的位置;
(6)若达到终止条件,则输出最优个体,即算法找到的最优解;否则,返回步骤(4)。
matlab代码
https://github.com/callmeLP/Optimization-Algorithm/tree/main/WOA
参考
Seyedali Mirjalili,Andrew Lewis. The Whale Optimization Algorithm[J]. Advances in Engineering Software,2016,95.
https://www.jianshu.com/p/916a1dcac282
https://blog.csdn.net/u011835903/article/details/107559167