【智能算法】蜉蝣算法(MA)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2020年,K Zervoudakis等人受到自然界蜉蝣交配繁殖行为启发,提出了蜉蝣算法(Mayfly Algorithm, MA)。
在这里插入图片描述
在这里插入图片描述

2.算法原理

2.1算法思想

MA灵感来自蜉蝣交配过程, 每只蜉蝣在空间位置上代表了问题的可行解。MA 先产生两组蜉蝣, 分别代表雄性和雌性种群,蜉蝣的飞行方向是个体和社会经验的交互作用, 而每只蜉蝣会调整自己的轨迹, 朝着个体最优以及全局最优位置移动。

2.2算法过程

雄性蜉蝣运动更新

雄性蜉蝣成群地聚集, 每只雄性蜉蝣的位置是根据临近经验调整自身位置:
x i ι + 1 = x i t + v i ι + 1 (1) x_i^{\iota+1} = x_i^t + v_i^{\iota+1}\tag{1} xiι+1=xit+viι+1(1)
雄性蜉蝣在水面上表演舞蹈,蜉蝣不断的移动,速度更新为:
v i t + 1 = v i t + a 1 e − β r p 2 ( p b e s t i − x i t ) + a 2 e − β r g 2 ( g b e s t − x i t ) (2) \boldsymbol{v}_{i}^{t+1} =\boldsymbol{v}_{i}^{t} + a_{1} \mathrm{e}^{-\beta r_{\mathrm{p}}^{2}}\left(\boldsymbol{p}_{\mathrm{best}_{i}}-\boldsymbol{x}_{i}^{t}\right) + a_{2} \mathrm{e}^{-\beta r_{\mathrm{g}}^{2}}\left(\boldsymbol{g}_{\mathrm{best}}-\boldsymbol{x}_{i}^{t}\right)\tag{2} vit+1=vit+a1eβrp2(pbestixit)+a2eβrg2(gbestxit)(2)

PS:和PSO速度更新类似,权重系数为自适应参数

其中, β \beta β为蜉蝣定能见度系数; rp 为当前位置和 pbesti 之间的笛卡尔距离; rg 为当前位置和gbest之间的笛卡尔距离:
∥ x i − X i ∥ = ∑ j = 1 n ( x i − X i ) 2 (3) \parallel\boldsymbol{x}_i -\boldsymbol{X}_i\parallel = \sqrt{\sum_{j=1}^n (\boldsymbol{x}_i -\boldsymbol{X}_i)^2}\tag{3} xiXi∥=j=1n(xiXi)2 (3)
为了得到更好的位置, 团队中最好的蜉蝣继续表演舞蹈, 更新速度:
v i t + 1 = v i t + d r (4) v_i^{t+1} = v_i^t + dr\tag{4} vit+1=vit+dr(4)
其中,d为舞蹈系数。

雌性蜉蝣运动更新

雄性蜉蝣容易聚集而雌性蜉蝣不会群体聚集,但是雌性蜉蝣会飞来与雄性蜉蝣交配繁殖。雌性蜉蝣的位置通过增加速度来更新, 位置更新:
y i t + 1 = y i t + v i t + 1 (5) y_i^{t+1}=y_i^t+v_i^{t+1}\tag{5} yit+1=yit+vit+1(5)
最好的雌性吸引最优秀的雄性, 次优的雌性吸引次优的雄性,速 度更新:
ν i t + 1 = ν i t + α 2 e − β r m f 2 ( x i j t − y i j t ) , f ( y i ) > f ( x i ) ν i t + 1 = ν i t + f 1 r , f ( y i ) ≤ f ( x i ) (6) \begin{aligned}&\boldsymbol{\nu}_i^{t+1}=\boldsymbol{\nu}_i^t+\alpha_2\mathrm{e}^{-\beta r_{mf}^2}(\boldsymbol{x}_{ij}^t-\boldsymbol{y}_{ij}^t)\text{,}f(\boldsymbol{y}_i)>f(\boldsymbol{x}_i)\\&\boldsymbol{\nu}_i^{t+1}=\boldsymbol{\nu}_i^t+f_1\boldsymbol{r},f(\boldsymbol{y}_i)\leq f(\boldsymbol{x}_i)\end{aligned}\tag{6} νit+1=νit+α2eβrmf2(xijtyijt),f(yi)>f(xi)νit+1=νit+f1r,f(yi)f(xi)(6)
其中,a2为吸引力常数,rmf为雌性蜉蝣距离。

蜉蝣交配

雄性蜉蝣根据适应度函数选择雌性蜉蝣进行交配:
o f f 1 = L m a l e + ( 1 − L ) f e m a l e o f f 2 = L f e m a l e + ( 1 − L ) m a l e (7) \mathrm{off}_1 = Lm_{\mathrm{ale}} + (1 - L)f_{\mathrm{emale}}\\\mathrm{off}_2 = Lf_{\mathrm{emale}} + (1 - L) m_{\mathrm{ale}}\tag{7} off1=Lmale+(1L)femaleoff2=Lfemale+(1L)male(7)

伪代码

在这里插入图片描述

3.结果展示

使用测试框架,测试MA性能 一键run.m

  • 【智能算法】省时方便,智能算法统计指标——一键运行~

CEC2017-F1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Zervoudakis K, Tsafarakis S. A mayfly optimization algorithm[J]. Computers & Industrial Engineering, 2020, 145: 106559.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“天才程序员”拼起命来有多狠?

本周 第四届ATEC科技精英赛(ATEC2023)线下赛——“燃烧吧!天才程序员” 在杭州蚂蚁A空间落幕了 这个比赛同时挑战16名选手脑力和体力的上限 连续三天三夜独立答题,末尾淘汰、组团PK,吃住赛场,每天仅睡4…

超实用的电脑桌面便签+待办清单app

对于上班族来说,桌面便签加待办清单软件是提升工作效率的得力助手。想象一下,在繁忙的工作中,你能够快速记录重要事项,设置待办任务提醒,一切都能有条不紊地进行。这种便捷性,尤其在处理多项任务和紧急事务…

VMware17Pro虚拟机安装macOS教程(超详细)

目录 1. 前言2. 下载所需文件3. 安装VMware3.1 安装3.2 启动并查看版本信息3.3 虚拟机默认位置配置 4. 安装补丁4.1 解压补丁4.2 结束VMware相关进程4.3 运行补丁包 5. 安装macOS5.1 新建虚拟机5.2 修改虚拟机配置5.3 安装操作系统5.3.1 选择 ISO 映像文件5.3.2 开启虚拟机5.2.…

Windows上在DLL中嵌入自定义/XML文件

Windows上在DLL中嵌入自定义文件(如:xml文件) 1、前言 最近都在开发适配Genicam项目,在开发CTI(Windows上可以看作DLL)时发现需要将多个XML文件嵌入到DLL文件中方便内部代码调用。 2、前期准备 一个xml…

java接口加密解密

这里写目录标题 controller加解密工具类加密(本质是对ResponseBody加密)解密(本质是对RequestBody传参解密)注解 controller Controller public class PathVariableController {GetMapping(value "/test")ResponseBod…

【Mysql】mysql本地环境变量的配置

mysql本地环境变量的配置 1.找到Mysql的安装位置 前面步骤完成后安装好MySQL,为MySQL配置环境变量。MySQL默认安装在C:\Program Files下。 2.选择此电脑 右键属性 3.选择 高级系统设置 环境变量 4.配置环境变量 1)新建MYSQL_HOME变量,并配置: C:\Program Fi…

李沐-28 批量归一化【动手学深度学习v2】

记录关于批量归一化的理解,如有出入还请批评指正。 一、批量归一化层主要作用在以下两种情况: 全连接层和卷积层的输出上,同时要在激活函数之前还可以是全连接层和卷积层的输入上 二、关于“批量归一化对于全连接层时,是作用在特…

vue 实现项目进度甘特图

项目需求: 实现以1天、7天、30天为周期(周期根据筛选条件选择),展示每个项目不同里程碑任务进度。 项目在Vue-Gantt-chart: 使用Vue做数据控制的Gantt图表基础上进行了改造。 有需要的小伙伴也可以直接引入插件,自己…

基于springboot实现企业级工位管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现企业级工位管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了企业级工位管理系统的开发全过程。通过分析企业级工位管理系统管理的不足,创建了一个计算机管理企业级工…

【深度学习】YOLOv5,金属表面的缺陷检测,GC10-DET数据集

目录: 文章目录 数据集数据集转换下载yolov5创建 dataset.yaml训练参数开始训练数据分布问询、帮助 数据集 数据集地址: https://github.com/lvxiaoming2019/GC10-DET-Metallic-Surface-Defect-Datasets 数据集下载方式: Download link&…

transformer 最简单学习3, 训练文本数据输入的形式

1、输入数据中,源数据和目标数据的定义 def get_batch(source,i):用于获取每个批数据合理大小的源数据和目标数据参数source 是通过batchfy 得到的划分batch个 ,的所有数据,并且转置列表示i第几个batchbptt 15 #超参数,一次输入多少个ba…

Spring事务回滚核心源码解读

记一次Springboot事务超时不回滚的分析过程 在Springboot中,我用的xml进行事务管理,DataSourceTransactionManager作为事务管理器,配置了事务控制在Service层;在事务管理器中,配置了defaultTimeout事务超时时间为5秒&…

云香印象终端自动化工具(监听农行收款云音箱)

项目成品 支持自动挂单✅完成监控收款云音箱✅完成卷烟盘点✅完成补单✅完成自动入库✅完成监控微信支付✅完成自动提交会员信息✅完成 用到的技术栈:PythonMQTT5.0PHP 云香印象终端自动收款工具 ​​​​​ 当顾客扫了三合一二维码且支付完成时,监控收到…

精酿啤酒:酿造工艺的自动化与智能化发展

随着科技的不断进步,自动化与智能化已成为啤酒酿造工艺的重要发展方向。Fendi Club啤酒紧跟时代潮流,积极推动酿造工艺的自动化与智能化发展,旨在提高生产效率、确保产品品质和满足市场需求。 Fendi Club啤酒引入自动化生产设备。他们采用自动…

Mybatis-plus 字段结果为NULL

问题 Mybatis-plus 字段结果为NULL 详细问题 笔者使用SpringBootMybatis-plus 进行项目开发。进行接口请求测试,在确定SQL语句没有问题的前提下,返回记录部分字段(譬如字段name)为空。 解决方案 修改Mybatis-plus中mapper的xml文件,使re…

CentOS7版本安装mysql

文章目录 1.安装mysql的前置条件2.清理原有的mysql数据库3.查看是否安装mariadb4.安装mysql依赖包5.解压缩mysql包6.安装目录赋权限(注:R必须是大写)7.创建MySQL组8.将mysql目录的权限授给mysql用户和mysql组9.创建mysql安装初始化配置文件10…

APP广告变现项目

我们提供的服务可以简化为以下几点: 我们将为您开发一款应用程序(APP),该APP能够连接市场上的主要广告联盟平台。 我们将指导您完成整个“养机”流程,并确保您的单台设备每条广告能产生大约1元的收益。若您拥有10台设备,每日收益…

ElasticSearch搜索引擎中,在Kibana客户端使用命令的时候,千万不要加分号结尾

ElasticSearch搜索引擎中,在Kibana客户端使用命令的时候,千万不要加分号结尾 今天遇到了一个非常难发现的bug 由于经常写java代码,因此常常会在一句代码结尾之处写上一个分号,并且潜意识里觉得这就是非常正常的事情 不会有什么问…

c++的智能指针(5) -- weak_ptr

概述 我们在使用shared_ptr会出现以下的问题&#xff0c;会导致内存泄露。 代码1: 类内指针循环指向 #include <iostream> #include <memory>class B;class A { public:A() {std::cout << "Construct" << std::endl;}~A() {std::cout <…

鸿蒙入门11-DataPanel组件

数据面板组件 用于将多个数据的占比情况使用 占比图 进行展示 参数 参数形式 &#xff1a; DataPanel( options:{ values: number[], max?: number, type?: DataPanelType } ) 参数名 参数类型 是否必填 默认值 参数描述 values number[] 是 - 数据值列表 最大支持…