mpa算法是2020年提出来的新型群体智能算法,原文Marine Predators Algorithm: A nature-inspired metaheuristic的doi:https://doi.org/10.1016/j.eswa.2020.113377,直接搜索sci hub输入DOI编号即可下载阅读阅文。

MPA算法流程如图

图1 MPA算法流程图

通过阅读文献和代码,对整体流程用自己的话解读一遍,初学若有错误,请及时提出,万分感谢!

首先所有的优化算法,都有共同的第一步,那就是种群初始化。

其中Xmin和Xmax是上边界与下边界,rand生成(0,1)范围内的随机数。

种群初始化matlab代码

function Positions=initialization(SearchAgents_no,dim,ub,lb)Boundary_no= size(ub,2); % numnber of boundaries size(a,2)返回矩阵a的列数% If the boundaries of all variables are equal and user enter a signle
% number for both ub and lb
if Boundary_no==1Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;
end% If each variable has a different lb and ub
if Boundary_no>1for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;      end
end

上面展示的代码为种群初始化代码,问题1,size函数返回数组A的行数和列数,但是我在分步运行的时候,遇到以下问题。

那么,初始种群的结果是生成(SearchAgents_no,dim)矩阵,结果如下:

图2 初始种群

图2显示的结构与原文中的结构一样,但是出现问题2:根据猎物的位置在二维坐标系的分布来看,其位置是有x和y同时决定的,那么比如第一行第一列的这个数据怎么能表示其位置呢?根据Xi,j的物理意义来看,其代表第i只捕食者在j维问题中数值。如若能解答一下,非常感谢。

构建完初始种群,根据物竞天择规律,将适应度较好的捕食者构建一个新的集合,名为Elite。其矩阵如图3所示。

其中代表精英捕食者向量,复制N次构建精英矩阵。在每次迭代时,若出现适应度高于精英捕食者时,原精英捕食者会被捕食者代替,构建形成新的精英矩阵。

while Iter<Max_iter    %------------------- Detecting top predator -----------------    for i=1:size(Prey,1)  Flag4ub=Prey(i,:)>ub;Flag4lb=Prey(i,:)<lb;    Prey(i,:)=(Prey(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;                    fitness(i,1)=fobj(Prey(i,:));if fitness(i,1)<Top_predator_fit Top_predator_fit=fitness(i,1); Top_predator_pos=Prey(i,:);end          end

上面的那段代码是精英矩阵的构建过程,首先在迭代次数内,对每个捕食者进行循环,以第一只捕食者为例子,Prey(1,:)代表第一个捕食者在所有维度的位置,判断其是否超过设定的边界值,若没有则输出0,然后对位置进行更新,一般情况下,每个捕食者不会超过设定的边界范围,则Flag4ub以及Flag4lb均为0,~为逻辑值判断,~(0)则输出1,~(1)输出为0,所以Prey(i,:)不会变,依然为图2所示的结构,然后将所有维度的值带入目标方程,计算适应度值,初始的Top_predator_fit为无穷大量,若计算的适应度值小于Top_predator_fit,则进行替换,并将捕食者的位置存储到精英捕食者的位置。

精英矩阵构建完后,根据matlab代码的顺序,我们要回到海洋捕食者最优觅食、互动、和记忆的控制策略,主要分为七点,概括的来讲捕食者和猎物的运动规律。

①捕食者在食物丰富的地区采用布朗运动,反之采用莱维飞行。

②在捕食者穿越不同栖息地的过程中,布朗运动和莱维飞行所占比例相同。

③由于周围环境的影响捕食者改变搜索策略以期望找到猎物分布不同的地区。

④速度比(捕食者对猎物的速度比)很小时,即捕食者速度很慢,猎物速度很快时,对于捕食者最好的搜索策略是莱维飞行,反之为布朗运动。

⑤速度比越等1时,如果猎物以莱维运动方式行进,则对于捕食者最好的布朗运动。

⑥速度比较高时,捕食者最好不动。

⑦他们能很好的利用记忆提醒自己和同伴成功觅食的地点。

从第七点我们还需要一段种群记忆的代码,即适应度进行比较,较小的保存位置,不断更替直到迭代满足最终要求。

个人理解:如果iter==0,并且第一次循环i=0,那么if语句就是保存初始值,随着迭代次数的增加,保存最优的适应度值以及最优个体的适应度值。

随后开始海洋捕食者算法的主体部分,MPA优化过程分为三个主要过程,考虑不同的速度比,同时模拟捕食者与猎物的整个生命周期。第一阶段:速度比较大,即猎物比捕食者移动速度快的情况下;第二阶段:速度比相同;第三阶段:速度比较小的情况,捕食者比猎物运动得较快。每个阶段占整个迭代的⅓。

第一阶段:

捕食者代表搜索的意思,因此速度比较大的情况一般发生在迭代初期,这时对于捕食者最好的运动策略即不动,符合之前运动规律第六点的描述。上图中的蓝线代表布朗运动轨迹。因此该阶段的数学模型应用如下。

for i=1:size(Prey,1)for j=1:size(Prey,2)        R=rand();%------------------ Phase 1 (Eq.12) ------------------- if Iter<Max_iter/3 stepsize(i,j)=RB(i,j)*(Elite(i,j)-RB(i,j)*Prey(i,j));                    Prey(i,j)=Prey(i,j)+P*R*stepsize(i,j); 

首先是步长的计算,RB代表布朗运动方程,随后将步长运用到猎物的位置更新中。

第二阶段:

第二阶段为速度比约等为1,捕食者和猎物速度一样,这一阶段由勘探向开采阶段转变,因此,开发和勘探都尤为重要,种群的一半负责开采,另外一半负责勘探,由原文可以看到作者将猎物用来开发,捕食者用来勘探。基于这一准则,如果猎物以莱维飞行运动,则捕食者以布朗运动进行移动。如上图所示,绿色代表莱维飞行的轨迹。

   %--------------- Phase 2 (Eqs. 13 & 14)----------------elseif Iter>Max_iter/3 && Iter<2*Max_iter/3 if i>size(Prey,1)/2stepsize(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); elsestepsize(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    

运行整段代码可以得到原文中关于测试方程的复现,但是对于搜索历史图、平均适应度历史

一维轨迹图和种群多样性分布图在matlab官网上没有源代码,只有三维图像和收敛曲线。对于方程F1,其结果如下:

对于莱维飞行和布朗运动的运动方程以及机理,在本篇就不再详细介绍!

MPA海洋捕食者算法学习笔记相关推荐

  1. 基于海洋捕食者算法的无线传感器网络覆盖优化

    文章目录 一.理论基础 1.节点覆盖模型 2.海洋捕食者算法(MPA) (1)初始化阶段 (2)MPA优化阶段 (3)FADs效应或涡流 二.实验仿真与结果分析 三.参考文献 一.理论基础 1.节点覆 ...

  2. 海洋捕食者算法 MPA

    前言 这个算法介绍很少,所以想边学习边记录一下.可能更新有点慢(近期大概率不更新),各位小伙伴们见谅. 原论文: Marine Predators Algorithm: A nature-inspir ...

  3. MATLAB:海洋捕食者算法(MPA)优化BP神经网络权值和阈值用于月径流预测

    海洋捕食者算法(Marine Predators Algorithm,MPA)是Afshin Faramarzi等人于2020年提出的一种新型元启发式优化算法,其灵感来源于海洋"适者生存&q ...

  4. MATLAB实战系列(三十九)-matlab多目标优化之海洋捕食者算法

    前言 文中涉及代码可参见 matlab多目标优化之海洋捕食者算法 海洋捕食者算法(Marine Predators Algorithm, MPA)是Afshin Faramarzi等人于2020年提出 ...

  5. 基于非线性参数的海洋捕食者算法

    文章目录 一.理论基础 1.海洋捕食者算法(MPA) 2.非线性海洋捕食者算法(NMPA) 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.海洋捕食者算法(MPA) 请参考这里. 2.非线性海 ...

  6. 多子群改进的海洋捕食者算法-附代码

    多子群改进的海洋捕食者算法 文章目录 多子群改进的海洋捕食者算法 1.海洋捕食者算法 2.改进海洋捕食者算法 2.1 高斯变异 2.2 MSMPA 算法 3.实验结果 4.参考文献 5.Matlab代 ...

  7. 海洋捕食者算法介绍及TSP求解代码实现

    海洋捕食者算法介绍及TSP求解代码实现 前言 一.海洋捕食者算法是什么? 二.MPA的具体内容 1.思想 2.相关术语 3.过程 三.用MPA求解旅行商(TSP)问题 1.TSP简介 2.过程与问题 ...

  8. 大顶堆删除最大值_算法学习笔记(47): 二叉堆

    堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...

  9. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

最新文章

  1. 第三十五课:多普勒效应和宇宙大爆炸
  2. php怎样输出多个空格,【整理】解决php输出时出现多余的空格或者换行
  3. 关于async与await的FAQ 转
  4. React Native : 自定义视图
  5. java面向对象编程集合边框_第六章使用java实现面向对象-集合框架
  6. java系列4:数组的默认值
  7. 自学Python:批量转换WORD文档为PDF
  8. 【专题5: 硬件设计】 之 【62.案例四:简易空气净化器,完整原理图】
  9. mysql 索引失效的7种情况
  10. 「小车看百度,大车看深兰」,自动驾驶公交驶向千亿蓝海市场
  11. MySQL下载压缩包安装详细过程
  12. AutoCAD无法显示虚线的解决方法
  13. Sentinel流量防控卫兵
  14. ppt设置同一张幻灯片中图片或文字的播放顺序
  15. Nginx -- SSL模块
  16. (1)Kurento之WebRTC通信架构
  17. MAC系统 如何显示隐藏的文件(文件夹)
  18. 能用计算机做什么作文,电脑的用途作文(九篇)
  19. 电声测试仪 音频分析仪 rta噪声频谱分析仪 噪音计 声压级表 麦克风录音系统动态范围 音频采集系统输入动态范围 噪声 最大声压级 放大器增益
  20. python 爬虫:下载小说

热门文章

  1. BlueTooth Android开发基础
  2. 苹果退款48小时审核结果_金苹果花园车辆审核结果20191102
  3. 【ML】第二章 端到端机器学习项目
  4. 骑行从脚下,健康你我他之第一篇-----杭城骑行路线参考图
  5. 近世代数概论------整数
  6. 用uniapp实现微信小程序的电子签名效果
  7. 推荐几个办公软件的神器
  8. 2020上海全国计算机一级考试时间,2020全国等级计算机考试时间(全国计算机一级报名时间)...
  9. String 翻转字符串
  10. 给定一个字符类型的数组chas[]