Matlab/Python:
本文KAU将介绍一个2020年发表在1区期刊ESWA上的优化算法——海洋捕食者算法 (Marine Predators Algorithm,MPA)[1]
该算法由Faramarzi等于2020年提出,其灵感来源于海洋捕食者之间不同的觅食策略、最佳相遇概率策略、海洋记忆存储与海洋漩涡以及鱼类聚集效应影响。
算法性能上,在通风和建筑能源性能领域的29个测试函数、CEC2017及3个工程基准和2个工程实际问题等上进行评估,对比算法包含3类:
(1)GA、PSO-研究最充分的启发式算法;
(2)GSA、CS、SSA-最近开发的算法;
(3)CMA-ES、SHADE、LSHADE-高性能与CEC优胜算法
MPA性能排名第二!
MPA算法共分为三个阶段,设计的挺有意思,如果有想做算法改进的朋友也可以看下去,本文将介绍该算法的相关原理并给出其MATLAB和Python实现。
00 目录
1 海洋捕食者算法(MPA)原理
2 代码目录
3 算法性能
4 源码获取
01 海洋捕食者算法(MPA)原理
MPA算法的灵感来自海洋生物的捕食行为和捕食策略,MPA 算法中海洋生物以莱维运动(Lévy flight/walk)和布朗(Brownian)运动两种捕食策略进行捕食。在海洋捕食者算法的优化过程中,算法针对不同的阶段,通过平衡莱维运动和布朗运动增加海洋捕食者和猎物之间相遇的可能性(做算法改进时,这点可以作参考!)。
在介绍算法步骤前,KAU先介绍海洋捕食者的觅食策略,即莱维飞行与布朗运动,再对MPA的算法原理进行介绍:
1.1 布朗运动
海洋捕食者在在猎物丰富的区域使用布朗运动策略。MPA 使用的是标准布朗运动,其随机生成的步长由零均值((u=0)和单位方差(σ2=1)的高斯分布定义的概率函数得出。在点 x 的可能概率函数:
1.2 莱维飞行
海洋捕食者在猎物数量稀少的海洋环境中采用莱维飞行策略。莱维飞行本质上是一种随机游走策略,其步长遵循莱维分布。为了生成稳定的莱维分布,通常根据 Mantegna 算法生成服从莱维分布的随机数。步长 S 的计算方式如下:
式中:α表示在0到2范围内的指数分布,x和y是两个正态分布变量:
标准差σx和σy定义如下:
式中:Γ是伽玛函数,整数z的函数定义为:
两种分布的轨迹如下:
1.3 MPA算法步骤
海洋捕食者算法寻优主要通过三个主要阶段来执行;其中,包括初始化、优化和FADs效应三个阶段。
1.3.1 初始化
MPA 是一种基于种群的方法,其初始解与其他元启发式算法一样,均匀分布在搜索空间中:
其中,Xmin和Xmax分别表示求解问题中变量的最小值和最大值,rand 表示(0,1)中的均匀随机数。
捕食者在寻找食物时,猎物也在寻找食物,因此,需要定义两个矩阵。选取最优解作为顶端捕食者,构造一个名为 Elite 矩阵,该矩阵数组监视搜索过程,并根据猎物的位置信息搜索猎物。第二个矩阵是 Prey 矩阵,它的维数与 Elite 相同,捕食者基于这个矩阵进行更新。在每次迭代结束时,如果出现适应度值更高的捕食者,当前顶端的捕食者会被替换,精英矩阵随之更新。Elite 矩阵和 Prey 矩阵定义如下:
其中,n为种群数量,d为问题维度。
1.3.2 优化
MPA 考虑了捕食者和猎物的速度比例,定义了三个阶段的位置更新公式。v 表示了猎物和捕食者的速度比例,并明确了三个阶段及其对应的公式,每种方式都
有一个预设的迭代周期,具体如下:
阶段 1:高速度比
该阶段处于算法迭代次数的前三分之一,在这期间执行算法的勘探。猎物比捕食者游得更快(v>10 ),捕食者因自身速度远低于猎物而放弃捕猎,不移动,猎物执行布朗运动,该阶段数学模型为:
在公式(2.4)中,RB表示布朗运动,该向量是服从正态分布的随机向量。RB与猎物点乘表示模拟猎物的布朗运动;P 表示一个常数通常取 P =0.5,R表示服从[0,1]均匀分布的随机向量。 Iter为当前的迭代次数, Max_ Iter为最大迭代次数。
阶段 2:相同速度比
该阶段处于算法迭代次数的三分之一到三分之二,在这期间算法从勘探向开发的过渡。猎物和捕食者的速度基本相同(v≈1),此时捕食者和猎物都在寻找各自的猎物,整个种群被分为两个部分,其中一部分代表捕食者用于勘探(布朗运动),另一部分代表猎物用于开发(莱维飞行)。该阶段的数学模型可用如下公式表示:
前一半种群,猎物开发:
其中,RL表示模拟莱维运动的随机数向量,通过RL 与 Prey 相乘模拟猎物进行莱维运动。
后一半种群,捕食者勘探:
通过RB与 Elite 相乘模拟捕食者进行布朗运动,猎物根据捕食者的运动来更新自己位置,CF 是控制捕食者移动步长的自适应参数,更新公式如下.
阶段 3:低速度比
该阶段处于算法总迭代次数的最后三分之一,主要是提高算法的开发能力。在这个时段,猎物的移动速度比捕食者慢(v=0.1),捕食者的策略是莱维运动:
1.3.3 FADs效应
导致海洋捕食者行为改变的还有环境因素,如涡流形成或鱼群聚集装置(FADs)效应。在这些因素的影响下,它们可能需要在不同的维度上进行更长时间的跳跃,以寻找另一个猎物分布的环境。FADs 可以表示探索区域的局部最优。通过在算法优化过程中设置更长的跳跃可以避免陷入局部最优。
其中,FADs 表示影响算法优化过程的概率,通常情况下取 0.2;U是随机生成的0或1的二进制向量序列;R为[0,1]之间的随机数;r1和r2为猎物矩阵的随机索引。当 r ≤FADs 时,捕食者会在不同的维度上进行更长时间的跳跃,以此来寻找其他最优解分布空间,从而达到跳出局部最优的效果。当 r >FADs时,捕食者会在当前的捕食者空间内随机移动。
1.4 算法流程图
MPA算法核心在于莱维飞行与布朗运动的转换应用,其在不同阶段的更新思路都可以作为算法改进的学习之处,同时,MPA算法还设计了一种跳出局部最优的策略,同样也可作为参考。MPA算法的流程图如下:
02 代码目录
包含Matlab、Python文件以及MPA算法源文献
代码都经过作者重新注释,代码更清爽,可读性强,其中Readme给出了一些注意:
部分代码:
03 算法性能
采用CEC测试函数初步检验其寻优性能
在MATLAB中,执行程序结果如下:
在PYTHON中,执行程序结果如下:
04 源码获取
在公众号(KAU的云实验台)后台回复 MPA 即可~
参考文献
[1] FARAMARZI A,HEIDARINEJAD M,MIRJALILI S,et al.Marine predators algorithm:a nature-inspired metaheuristic[J].Expert Systems with Applications,2020,152:113377.
另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。