2020年智能算法之海洋捕食者算法(MPA),原理公式详解,附matlab代码 您所在的位置:网站首页 捕食者设定 2020年智能算法之海洋捕食者算法(MPA),原理公式详解,附matlab代码

2020年智能算法之海洋捕食者算法(MPA),原理公式详解,附matlab代码

2024-07-08 06:33| 来源: 网络整理| 查看: 265

海洋捕食者算法(Marine Predators Algorithm,MPA)由Afshin Faramarzi等人于2020年提出。该算法的主要灵感来自海洋捕食者觅食策略,即海洋捕食者的Lévy和Brownian运动,以及捕食者和猎物之间的最佳相遇率策略,模拟了海洋中适者生存理论,具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2020年10月发表在一区SCI期刊Expert systems with applications上。目前在谷歌学术上共被引1376次。

2d181252238116c122f18c500833f3af.png

MPA优化过程包含三个主要优化阶段,以模拟捕食者和猎物在其整个生命周期中的运动行为。每个阶段考虑不同的速度比,这种设计使得MPA能够更准确地模拟捕食者和猎物之间的运动关系,并在优化过程中提供更好的性能。

算法原理

(1)初始化阶段

MPA首先通过一组随机解作为初始化搜索空间,根据搜索空间限制的范围由如下公式产生初始解:  其中,Xmax和Xmin分别表示求解问题中变量的最大值和最小值,rand表示(0,1)中的均匀随机数。

当捕食者在寻找食物时,猎物也在寻找食物,因此,需要定义两个矩阵。选取最优解作为顶端捕食者,构造一个名为Elite的矩阵,该矩阵数组监视搜索过程,并根据猎物的位置信息搜索猎物。第二个矩阵是Prey矩阵,它的维数与Elite相同,捕食者基于这个矩阵进行更新。在每次迭代结束时,如果出现适应度值更高的捕食者,当前顶端的捕食者会被替换,精英矩阵随之更新。Elite矩阵和Prey矩阵定义如下:    其中,XIn,d表示顶端捕食者Elite矩阵中第n维的第d个变量,Xn,d表示Prey矩阵中第n维的第d个变量。

(2)优化阶段

海洋捕食者算法在优化过程中有三种更新方式。每种方式都定义一个特定的速度比范围。第一种方式处于猎物与捕食者速度比较高的阶段,在这个更新方式中,猎物得到运动速度比捕食者更快;第二种更新方式中,猎物与捕食者运动速度相近,假定两者为单位速度比;第三种方式是假定两者速度比较低,捕食者的速度比猎物快

方式1:第一种更新方式处于算法迭代次数的前三分之一,在这期间执行算法的探索。因为,这个期间的猎物运动速度比捕食者快,所以,捕食者采取等待策略。猎物位置更新公式如下:    其中,Iter表示当前迭代次数,Max_Iter表示算法最大迭代次数,stepsize表示猎物的移动步长,RB表示布朗运动,是基于正态分布的随机数向量,P表示一个常量取0.5,R表示[0,1]中的均匀随机数向量。

方式2:这个更新方式处于在算法更新迭代的中期,这时算法从探索开始向开发转变。其中,捕食者遵循布朗运动,猎物遵循莱维运动。在这个时期,探索和开发都很重要。所以,一半的种群用于探索,另一半种群被用于开发。种群更新公式如下所示:    RL表示模拟莱维运动的随机数向量,通过RL与Prey相乘模拟猎物进行莱维运动,这一部分表示猎物开发,后一半种群更新公式如下所示:    通过RB与Elite相乘模拟捕食者进行布朗运动,猎物根据捕食者的运动来更新自己位置,CF是控制捕食者移动步长的自适应参数,更新公式如下所示:  方式3:该更新方式处于算法总迭代次数的最后三分之一,属于算法寻优的最后时段,主要是提高算法的开发能力。在这个时段,猎物的移动速度比捕食者慢,捕食者的策略是莱维运动。捕食者位置更新公式如下: 

通过RL与Elite相乘模拟捕食者进行莱维运动,以此来更新猎物的位置。

(3)FADs效应阶段

导致海洋捕食者行为改变的还有环境因素,如涡流形成或鱼群聚集装置(FADs)效应。在这些因素的影响下,它们可能需要在不同的维度上进行更长时间的跳跃,以寻找另一个猎物分布的环境。FADs可以表示探索区域的局部最优。通过在算法优化过程中设置更长的跳跃可以避免陷入局部最优。  

其中,FADs表示影响算法优化过程的概率,通常情况下取0.2;U是包含0和1的二进制向量,通过在[0,1]中生成一个随机数组,如果随机数组小于0.2,则U转换为0,如果随机解大于0.2,则U转换为1,r表示[0,1]中产生的一个随机数,Xmax和Xmin表示包含维数下限的向量,r1和r2是Prey矩阵的随机指数。当r≤FADs时,捕食者会在不同的维度上进行更长时间的跳跃,以此来寻找其他最优解分布空间,从而达到跳出局部最优的效果。当r FADs >时,捕食者会在当前的捕食者空间内随机移动。

结果展示

1d886516e707cebe360b4713e513d4d6.png

835799f3958d31599e0ecb3a7ed5956f.png

246e0d6c8c3d4225ce207f0f54052159.png

64adcaf2680e391ee19100f88b85320f.png

ba3815ca483569bd8e61cfb330793c3f.png

 MATLAB核心代码

function [Top_predator_fit,Top_predator_pos,Convergence_curve]=MPA(SearchAgents_no,Max_iter,lb,ub,dim,fobj) Top_predator_pos=zeros(1,dim); Top_predator_fit=inf; Convergence_curve=zeros(1,Max_iter); stepsize=zeros(SearchAgents_no,dim); fitness=inf(SearchAgents_no,1); Prey=initialization(SearchAgents_no,dim,ub,lb); Xmin=repmat(ones(1,dim).*lb,SearchAgents_no,1); Xmax=repmat(ones(1,dim).*ub,SearchAgents_no,1); Iter=0; FADs=0.2; P=0.5; while Iterub; Flag4lb=Prey(i,:)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有