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

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

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

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

算法原理

(1)初始化阶段

MPA首先通过一组随机解作为初始化搜索空间,根据搜索空间限制的范围由如下公式产生初始解:  其中,XmaxXmin分别表示求解问题中变量的最大值和最小值,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.5R表示[0,1]中的均匀随机数向量。

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

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

(3)FADs效应阶段

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

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


结果展示

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

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

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

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

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

 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,:)Max_iter/3 && Iter<2*Max_iter/3 
         if i>size(Prey,1)/2
            stepsize(i,j)=RB(i,j)*(RB(i,j)*Elite(i,j)-Prey(i,j));
            Prey(i,j)=Elite(i,j)+P*CF*stepsize(i,j); 
         else
            stepsize(i,j)=RL(i,j)*(Elite(i,j)-RL(i,j)*Prey(i,j));                     
            Prey(i,j)=Prey(i,j)+P*R*stepsize(i,j);  
         end  
         %----------------- Phase 3 (Eq. 15)-------------------
       else 
           stepsize(i,j)=RL(i,j)*(RL(i,j)*Elite(i,j)-Prey(i,j)); 
           Prey(i,j)=Elite(i,j)+P*CF*stepsize(i,j);  
       end  
      end                                         
  end    
     %------------------ Detecting top predator ------------------        
  for i=1:size(Prey,1)  
    Flag4ub=Prey(i,:)>ub;  
    Flag4lb=Prey(i,:)

参考文献

[1]  Faramarzi A, Heidarinejad M, Mirjalili S, et al. Marine Predators Algorithm: A nature-inspired metaheuristic[J]. Expert systems with applications, 2020, 152: 113377.

完整代码获取方式:后台回复关键字:

TGDM101

你可能感兴趣的:(2020年智能算法之海洋捕食者算法(MPA),原理公式详解,附matlab代码)