一区算法MPA|海洋捕食者算法原理及其代码实现(Matlab/Python))

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.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…

MCU复位时GPIO是什么状态?

大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启,至此有经验的工程师就会经常关心一个问题,MCU复位时GPIO是什么状态?什么电路需要外部加上下拉? MCU从上电到启动,实际可分为复位前和复位后、初始…

【WPF】Windows系统桌面应用程序编程开发新手入门-打造自己的小工具

电脑Windows系统上的桌面程序通常是用Visual Studio 开发工具编写出来的,有两种开发方式供选择,一种是WindowForm,简称WinForm,另一种是Windows Presentation Foundation,简称WPF,这里将学习WPF项目。 文章…

大物3错题整理

平衡位置:在O点上的位置 相位: 当N很大的时候,wxwywz。因此,平均平动动能除以3,就是能量均分定理。 W F在x上的积分 Π时无单位 180,就是单位 1rad,rad就是单位 左手定则、右手定则、安培定…

如何解决三菱软件提示 起动MELSOFT Mediative Server失败

前言: 注意,这篇文章仅针对如何解决 起动MELSOFT Mediative Server失败 的问题。对于其他相关的问题,请搜索其他相应的解决办法。 本人是在重装三菱GX Works软件时遇到此问题的。后来搜索发现无人能妥善的关闭这个提示。因此本文介绍如何关…

【Web3项目案例】Ethers.js极简入门+实战案例:实现ERC20协议代币查询、交易

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 目录 简介 前景科普-ERC20 Ethers极简入门教程:HelloVitalik(非小白可跳) 教程概览 开发工具 V…

魔行观察-烤匠麻辣烤鱼-开关店监测-时间段:2011年1月 至 2024年6月

今日监测对象:烤匠麻辣烤鱼,监测时间段:2011年1月 至 2024年6月 本文用到数据源获取地址 魔行观察http://www.wmomo.com/ 品牌介绍: 2013年,第一家烤匠在成都蓝色加勒比广场开业,随后几年成都国金中心店…

超详细的tomcat安装以及简略项目的部署

一、安装包 安装路径: 链接:https://pan.baidu.com/s/1JzPQQ2zUdnXi_FaTTG0pvg?pwdriht 提取码:riht 安装完之后我们打开,可看见以下目录结构 二、环境变量配置 首先打开我们电脑的高级环境变量配置 我们先配置一个系统变量…

Variables Reference for vscode

Predefined variables Visual Studio Code 支持在调试、任务配置文件以及一些特定的设置中使用变量替换。这些变量可以使用 ${variableName} 语法在 launch.json 和 tasks.json 文件的某些键和值字符串中使用。 Predefined variables Visual Studio Code 支持以下预定义变量…

Zookeeper:Zookeeper JavaAPI操作与分布式锁

文章目录 一、Zookeeper JavaAPI操作1、Curator介绍2、创建、查询、修改、删除节点3、Watch事件监听 二、Zookeeper分布式锁原理 一、Zookeeper JavaAPI操作 1、Curator介绍 Curator是Apache Zookeeper的Java客户端。常见的Zookeeper Java API: 原生Java API。ZkC…

天气网站爬虫及可视化

摘要:随着互联网的快速发展,人们对天气信息的需求也越来越高。本论文基于Python语言,设计并实现了一个天气网站爬虫及可视化系统。该系统通过网络爬虫技术从多个天气网站上获取实时的天气数据,并将数据进行清洗和存储。同时&#…

【简易版tinySTL】 哈希表与移动语义

基本概念 哈希表(HashTable)是一个重要的底层数据结构, 无序关联容器包括unordered_set, unordered_map内部都是基于哈希表实现。 哈希表是一种通过哈希函数将键映射到索引的数据结构,存储在内存空间中。哈希函数负责将任意大小的输入映射到…

【C++】内存分区

目录 内存分区代码运行前后区别各分区详细解释C内存申请和释放 内存分区 不同的操作系统对程序内存的管理和划分会有所不同。 此处是C内存区域划分主要是针对通用的情况,并不限定在某个特定操作系统上 一般分为4个区(有时把全局区拆分成数据区未初始化…

微服务之服务保护策略【持续更新】

文章目录 线程隔离一、滑动窗口算法二、漏桶算法三、令牌桶算法 面试题1、Sentinel 限流和Gateway限流的区别 线程隔离 两种实现方式 线程池隔离(Hystix隔离),每个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU…

【C语言】C语言-体育彩票的模拟生成和兑奖(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【涵子来信科技潮流】——WWDC24回顾与暑假更新说明

期末大关,即将来袭。在期末之前,我想发一篇文章,介绍有关WWDC24的内容和暑假中更新的说明。本篇文章仅为个人看法和分享,如需了解更多详细内容,请通过官方渠道或者巨佬文章进行进一步了解。 OK, Lets go. 一、WWDC24 …

力扣每日一题 6/30 记忆化搜索/动态规划

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 494.目标和【中等】 题目: 给你一个非负整数数组 nums 和一个…

VMware17.0 安装过程

VMware17.0 VMware 17.0 是一款功能强大的虚拟机软件,用于在计算机上创建和管理虚拟机。它能够同时运行多个操作系统,如 Windows、Linux 等,并且在这些虚拟机之间提供无缝的切换和共享功能。 VMware 17.0 支持最新的硬件和操作系统&#xf…

Chrome浏览器web调试(js调试、css调试、篡改前置)

目录 1. 打开开发者工具(Dev Tool) 2. 打开命令菜单 截图 3. 面板介绍 4. CSS调试 右键检查快速到达元素处 查找DOM数 利用面板Console查找DOM节点 内置函数查找上一个选择点击的元素 5. 调试JS代码(Javascript调试) 日志调试 选择查看日志等级 眼睛观测变量 …

数据资产铸就市场竞争优势:运用先进的数据分析技术,精准把握市场脉搏,构建独特的竞争优势,助力企业实现市场领先地位,赢得持续成功

目录 一、引言 二、数据资产的重要性 三、先进数据分析技术的应用 1、大数据分析技术 2、人工智能与机器学习 3、数据可视化技术 四、精准把握市场脉搏 1、深入了解客户需求 2、预测市场趋势 3、优化资源配置 五、构建独特的竞争优势 1、定制化产品和服务 2、精准营…