第四弹——鲸鱼优化算法
鲸鱼优化算法(Whale Optimization Algorithm,WOA)同样是由Mirjalili教授提出,不过它比灰狼优化算法晚一些,所以在鲸鱼身上能看到一些灰狼的影子。相对而言,鲸鱼优化算法最大的特点就是用随机个体或最优个体来模拟座头鲸的捕猎行为,并用螺旋线来模拟座头鲸的泡泡网攻击机制。话不多说,进入正题。
在自然界中,座头鲸通常以群居为主。在捕食过程中,座头鲸会成群的将猎物围住,在螺旋运动的过程中不断吐出气泡,由此形成螺旋状的“泡泡网”,进而将猎物越逼越紧,直至能一口吞下。图1、图2分别为座头鲸的实际行为、模拟行为:
1.包围猎物
这一部分实际上与灰狼算法相同:
详情可见:
valley:就智能优化算法的个人学习简述,希望能帮助到前行路上的你——以灰狼优化算法开篇图3展示了2D、3D状态下座头鲸个体相对于当前种群内最优个体的趋近位置:
2.泡泡网捕食模式(局部搜索行为)
因为座头鲸是一边螺旋游动一边吐泡泡,所以整个泡泡网捕食模式分为两部分:
a.收缩包围机制(直线游动,还没吐泡泡)
当随机值A 的值介于[-1,1]内时,座头鲸的下一个位置可能在其与猎物位置之间的任何一个位置。图4展现了当A 处于[0,1]时座头鲸个体(X,Y )趋向于当前最优个体(X *,Y *)的随机位置:
b.螺旋吐泡机制(螺旋游动,吐泡泡)
本阶段个体先计算自身与当前种群内最优个体的间距,然后座头鲸在螺旋游动的同时吐出气泡:
其中,b 是定义对数螺线形状的常数,l 为[-1,1]内一随机数。这种螺旋趋近的行为可由图5表示:
鉴于每只座头鲸的行为存在异步性,故原文假设座头鲸执行两种捕食行为的概率各为50%:
3.座头鲸随机游动捕食(全局搜索行为)
在群体捕食的同时,座头鲸还会根据彼此的位置进行随机游动。群体搜索是向最优值趋近的过程,代表着局部搜索;而随机游动的趋近目标为一随机个体,故而代表着座头鲸的全局搜索。这种行为也可在一定程度上避免算法陷入局部最优值。该行为的前提为|A|>1,模型与直向游动相同:
这种随机搜索的位置更新方式中的位置分布如图6所示:
按照图6、图4、图5的顺序可看出随A的不断减小,算法的整体搜索空间随之缩小,这样就保证了算法对最优值的获取。WOA的迭代伪代码如下所示:
本次测试选用PSO与WOA进行对比测试。设定种群规模为30,最大迭代次数500,针对两种标准测试函数、两种CEC2015测试函数、两种CF测试函数,三种工程优化设计问题进行对比测试。
标准测试函数
总体来说WOA在标准测试函数上的总体性能还是不错的。
CEC2015测试函数
本次选取CEC2015复合函数类的第一、二个函数进行测试:
CF测试函数
本次选取CF1、CF3进行测试:
不同于CEC2015测试函数存在大面积求解平面,CF测试函数具有更多的局部最优值,峰状突出更多。值得一提的是,针对某些类型的函数,尤其是局部极值特别多的函数,元启发式算法模型越复杂效果反而不好。因为其独特的机制可能使算法在解决空间梯度大等状态问题时具有一定优势,但是其他的却难以适应。
工程优化设计问题
本次选取GWO进行对比测试,鉴于目前还没找到新的工程优化设计问题,故仍然测试焊接梁优化设计问题、压缩弹簧优化设计问题、压力容器优化设计问题:
可以认为,WOA就是GWO的改版。收缩包围机制那部分提出的数学模型我认为是蛮好的,很具有普适性,但对于螺旋吐泡机制中的螺旋模型设置,这就见仁见智了。像是海鸥优化算法中的捕食模型,就涉及到了飞行角度等参数,这样就能够更好的理解这个“螺旋”是怎么回事,WOA中反而并没有怎么解释。不过WOA中对全局搜索向局部搜索过渡的整个过程描述的比较清晰,值得我们学习。