获取更多资讯,赶快关注上面的公众号吧!

文章目录

  • 雄性蜉蝣的移动
  • 雌性蜉蝣的移动
  • 蜉蝣交配
  • 伪代码

蜉蝣算法(Mayfly Algorithm,MA)是由Konstantinos Zervoudakis于2020年提出的一种新型智能优化算法,该算法模拟了蜉蝣的飞行行为和交配过程,综合了群体智能和进化算法的优势。本文将带来该算法的原理介绍,扫码关注公众号,后台回复“蜉蝣”可以获取Matlab代码。

蜉蝣是蜉蝣目昆虫,在从卵中孵化出来后,蜉蝣幼虫肉眼可见,它们要花几年的时间作为水生若虫生长,直到成年后才可以上升到水面。成年蜉蝣在完成繁殖的最终目标前只能存活几天时间。为了吸引雌性,大多数成年雄性会聚集在水面上方几米的地方,通过特有的上下运动模式来表演一种婚礼舞蹈>雌性飞入这些种群中以与空中的雄性交配。交配可能只持续几秒钟,当交配完成后,雌性把卵排到水面上,以延续下一代。

蜉蝣算法就是受上述启发而提出的一种新型优化算法, 其可以认为是粒子群优化算法()的一种改进,综合了粒子群PSO、遗传算法GA和萤火虫算法FA的各大优势。

假设:

  1. 蜉蝣从卵中孵化出来就已经是成虫,无论活多久,最适应的蜉蝣都能存活下来;
  2. 每只蜉蝣在搜索空间中的位置代表了问题的一个可行解;
  3. 初始时,随机生成两个蜉蝣种群,分别代表雄性和雌性种群,即每只蜉蝣作为一个候选解被随机置于问题空间中,该候选解可通过一个d维向量x=(x1,⋯,xd)\mathbf{x}=\left(x_{1}, \cdots, x_{d}\right)x=(x1​,⋯,xd​)来表达,且其性能可根据预定义的目标函数f(x)f(\mathbf{x})f(x)评估得到;
  4. 蜉蝣的速度定义为其位置的变化,飞行方向是个体和社会飞行经验的动态交互。特别地,蜉蝣会根据当前的个体最优位置(pbestpbestpbest)以及当前种群的最优位置(gbestgbestgbest)调整其轨迹。

雄性蜉蝣的移动

雄蜉蝣的群居,意味着每只雄蜉蝣的位置是根据自己的经验和邻居的经验调整的。假设xitx_i^txit​是时间步ttt蜉蝣iii在搜索空间中的当前位置,通过在当前位置上添加一个速度vii+1v_i^{i+1}vii+1​来改变位置:

xit+1=xit+vit+1(1)x_i^{t+1}=x_i^{t}+v_i^{t+1}\tag{1}xit+1​=xit​+vit+1​(1)

其中xi0∈U(xmin,xmax)x_i^0\in U(x_{min},x_{max})xi0​∈U(xmin​,xmax​)

考虑到雄蜉蝣通常是在水面以上几米的位置跳舞,可以假设它们不会有太大的速度,且它们是不断移动的,所以雄蜉蝣的速度可以计算为:
vijt+1=vijt+a1e−βrp2(pbestij−xijt)+a2e−βrg2(gbestj−xijt)(2)\left.v_{i j}^{t+1}=v_{i j}^{t}+a_{1} e^{-\beta r_{p}^{2}}\left( pbest_{i j}-x_{i j}^{t}\right)+a_{2} e^{-\beta r_{g}^{2}}\left( gbest _{j}\right.-x_{i j}^{t}\right)\tag{2} vijt+1​=vijt​+a1​e−βrp2​(pbestij​−xijt​)+a2​e−βrg2​(gbestj​−xijt​)(2)
其中vijtv_{i j}^{t}vijt​是时间步ttt蜉蝣iii在维度j=1,...,nj=1,...,nj=1,...,n上的速度,xijtx_{i j}^{t}xijt​是时间步ttt蜉蝣iii在维度jjj上的位置,a1a_1a1​和a2a_2a2​是正吸引常数,分别用于缩放认知和社会部分的贡献。pbestipbest_ipbesti​是蜉蝣iii访问过的最优位置,考虑最小化问题,下一时间步t+1t+1t+1的个体最优位置pbestijpbest_{ij}pbestij​可计算为:
KaTeX parse error: Unknown column alignment: * at position 37: …{\begin{array}{*̲{20}{c}} {lx_i^…
其中f:Rn→Rf: \mathbb{R}^{n} \rightarrow \mathbb{R}f:Rn→R为目标函数,时间步ttt的全局最优位置gbestgbestgbest定义为:

gbest∈{pbest1,pbest2,⋯,pbestN∣f(cbest)}=min⁡{f(pbest1),f(pbest2),⋯,f(pbestN)}(4)\begin{aligned} & { gbest } \in\left\{ { pbest }_{1}, { pbest }_{2}, \cdots, { pbest }_{N} \mid f( { cbest })\right\} \\ &\quad=\min \left\{f\left(p b e s t_{1}\right), f\left(p b e s t_{2}\right), \cdots, f\left(p b e s t_{N}\right)\right\} \end{aligned}\tag{4} ​gbest∈{pbest1​,pbest2​,⋯,pbestN​∣f(cbest)}=min{f(pbest1​),f(pbest2​),⋯,f(pbestN​)}​(4)
其中NNN是种群中雄性蜉蝣总数。β\betaβ是固定的可见度系数,用于限制蜉蝣的可见度,而rpr_{p}rp​和rgr_grg​分别是是xix_ixi​与pbestipbest_ipbesti​,xix_ixi​与gbestgbestgbest之间的笛卡尔距离:
∥xi−Xi∥=∑j=1n(xij−Xij)2(5)\left\|x_{i}-X_{i}\right\|=\sqrt{\sum_{j=1}^{n}\left(x_{i j}-X_{i j}\right)^{2}}\tag{5} ∥xi​−Xi​∥=j=1∑n​(xij​−Xij​)2​(5)
其中xijx_{ij}xij​为蜉蝣iii的第jjj个元素,XiX_iXi​对应pbestipbest_ipbesti​或gbestgbestgbest。

种群中最优蜉蝣继续表演它们特有的上下婚礼舞蹈,这对算法的功能是很重要的。因此,最优蜉蝣必须不断改变它们的速度:
vijt+1=vijt+d∗r(6)v_{i j}^{t+1}=v_{i j}^{t}+d * r\tag{6} vijt+1​=vijt​+d∗r(6)
其中ddd为婚舞距离系数,rrr为[-1,1]范围内的随机数。通过这种上下移动就为算法引入了随机元素。

雌性蜉蝣的移动

不同于雄性蜉蝣,雌性蜉蝣并不会成群结队,而是飞向雄性以进行繁殖。假设yity_i^tyit​是时间步ttt雌性蜉蝣iii在搜索空间中的当前位置,那在当前位置上增加一个速度vit+1v_i^{t+1}vit+1​就可以改变这个位置,即:
yit+1=yit+vit+1(7)y_{i}^{t+1}=y_{i}^{t}+v_{i}^{t+1}\tag{7} yit+1​=yit​+vit+1​(7)
其中y_{i}^{0} ∈\in∈ U(ymin,ymax)U(y_{min},y_{max})U(ymin​,ymax​)。

尽管吸引过程是随机的,但为了简便可以将其视为确定过程,也就是说,可以根据其适应度值,最优雄性吸引最优雌性,第二优雄性吸引第二有雌性,以此类推。那么考虑最小化问题时,其速度按如下计算:
vijt+1={vijt+a2e−βrmf2(xijt−yijt),if f(yi)>f(xi)vijt+fl∗r,if f(yi)≤f(xi)(8)v_{i j}^{t+1}=\left\{\begin{array}{l} v_{i j}^{t}+a_{2} e^{-\beta r_{m f}^{2}}\left(x_{i j}^{t}-y_{i j}^{t}\right), \text { if } f\left(y_{i}\right)>f\left(x_{i}\right) \\ v_{i j}^{t}+f l * r, \text { if } f\left(y_{i}\right) \leq f\left(x_{i}\right) \end{array}\right.\tag{8} vijt+1​={vijt​+a2​e−βrmf2​(xijt​−yijt​), if f(yi​)>f(xi​)vijt​+fl∗r, if f(yi​)≤f(xi​)​(8)
其中,vijtv_{i j}^{t}vijt​是时间步ttt雌性蜉蝣iii在维度j=1,...,nj=1,...,nj=1,...,n上的速度,yijty_{i j}^{t}yijt​是时间步ttt雌性蜉蝣iii在维度jjj上的位置,a2a_{2}a2​是正吸引常数,β\betaβ是固定可见度常数,rmfr_{m f}rmf​是雄性和雌性之间的笛卡尔距离,flflfl是随机游走系数,当雌性没有被雄性吸引时使用,此时雌性随机飞行,且rrr是[-1,1]范围内的随机值。

蜉蝣交配

交叉算法表达了两只蜉蝣之间的交配过程:从雄性种群和雌性种群中分别选择一个父代,选择方式同雄性吸引雌性的方式相同。特别地,选择可以是随机的也可以是基于适应度值的,如果是后者,则最优雌性与最优雄性交配,第二优之间交配,以此类推。交叉的结果就是生成如下两个子代:
offspring1=L∗male+(1−L)∗femaleoffspring2=L∗female+(1−L)∗male(9)\begin{aligned} \ { offspring } 1 &=L * \ { male }+(1-L) * \ { female } \\ \ { offspring2 } &=L * \ { female }+(1-L) * \ { male } \end{aligned}\tag{9}  offspring1 offspring2​=L∗ male+(1−L)∗ female=L∗ female+(1−L)∗ male​(9)
其中malemalemale是雄性父代,#female是雌性父代,是雌性父代,是雌性父代,L$是特定范围内的随机值,子代初始速度为0。

伪代码

目标函数f(x),x=(x1,…,xd)Tf(\mathbf{x}), \mathbf{x}=\left(x_{1}, \ldots, x_{d}\right)^{T}f(x),x=(x1​,…,xd​)T

初始化雄性蜉蝣种群xi(i=1,2,…,N)x_{i}(i=1,2, \ldots, N)xi​(i=1,2,…,N)及速度vmiv_{mi}vmi​

初始化雌性蜉蝣种群yi(i=1,2,…,M)y_{i}(i=1,2, \ldots, M)yi​(i=1,2,…,M)及速度vfiv_{fi}vfi​

评估各蜉蝣适应度值

找到全局最优解gbestgbestgbest

Do While 未满足终止准则

更新雄性和雌性的速度和解

评估解

蜉蝣排序

蜉蝣交配

评估子代

随机将子代分为雄性和雌性

更新pbestpbestpbest和gbestgbestgbest

end while

结果后处理及可视化。

智能优化算法(源码)-蜉蝣算法(Mayfly Algorithm,MA)相关推荐

  1. 【老生谈算法】matlab实现census算法源码——census算法

    census算法matlab程序 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]census算法matlab程序.docx ...

  2. linux页面算法源码,LRU算法原理解析

    LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的. 现代操作系统提供了一种对主存的抽象概念虚拟内存,来对主存进行更好地管理.他将主存 ...

  3. 【老生谈算法】matlab实现AHP算法源码——AHP算法

    用Matlab实现AHP的算法 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]用Matlab实现AHP的算法.doc 2.算 ...

  4. 【老生谈算法】matlab实现匈牙利算法源码——匈牙利算法

    matlab匈牙利算法代码实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab匈牙利算法.doc 2.算法详解: ...

  5. 【老生谈算法】matlab实现LMS算法源码——LMS算法

    matlab的LMS算法详解 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab的LMS算法.doc 2.算法详解: ...

  6. 【老生谈算法】matlab实现最短路径算法源码——最短路径算法

    每对顶点之间的最短路径 matlab程序 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]最短路径的Floyd算法的Matla ...

  7. 【老生谈算法】matlabAP近邻传播聚类算法源码——聚类算法

    AP近邻传播聚类算法原理及Matlab实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]AP近邻传播聚类算法原理及Matl ...

  8. 【老生谈算法】matlab实现RSA算法源码——RSA算法

    RSA算法的matlab实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]RSA算法的matlab实现-doc 2.算法详 ...

  9. 【老生谈算法】matlab实现K-means算法源码——K-means算法

    K-means算法matlab是实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]K-means算法matlab是实现.d ...

  10. Metis异常检测算法源码概要

    Metis异常检测算法源码概要 算法源码目录 算法层目录 基于指数移动平均算法(EWMA) 孤立森林 xgboost gbdt 3-Sigma 多项式回归 特征层目录 拟合特征 分类特征 统计特征 其 ...

最新文章

  1. 急招 Golang 熟手,来做 5G 事业。
  2. 和jwt_秒懂 JWT
  3. boost::histogram::histogram::fill用法的测试程序
  4. 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元
  5. android 进制转换
  6. 【BootStrap】初步教程
  7. BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游(LCT,泰勒展开,二项式定理)
  8. java 内存分布_一图看懂JVM内存分布,永久记住!
  9. python processpoolexector 释放内存_python之ThreadPoolExecutor
  10. gradle入门(1-7)eclipse和gradle集成插件的安装和使用
  11. AI+教育落地,百度大脑如何让校园更智能?
  12. ENVI实验教程(6)实验六、遥感图像分类
  13. 廖雪峰Python基础练习作业
  14. 【win10专业版】ultraiso如何制作光盘启动盘
  15. 当初我要是这么学习计算机网络就好了「附图文解析」
  16. 如何设置通过PMU的gpio来唤醒系统
  17. 七、最短路径——弗洛伊德(Floyd)算法
  18. c语言中以追加只写方式打开文本文件,C语言文本方式和二进制方式打开文件区别...
  19. 软件包下载地址(一)
  20. Java面试题(外包公司)

热门文章

  1. 阿里沈询直播 分布式事务一
  2. 【Flink源码篇】Flink 1.15.0源码编译
  3. 洛谷 最大食物链计数 python题解
  4. Mac系统解决ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘方法
  5. 【Python技巧】(虚拟环境报错、pycharm)无法加载文件 ...\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。
  6. 关于代码复制到IDEA上空格变成`NBSP`的解决办法
  7. 全新的Nuke 13 mac版来啦!nuke13全新功能 (支持big sur)
  8. PostgreSQL 11 1000亿 tpcb、1000W tpcc 性能测试 - on 阿里云ECS + ESSD (含quorum based 0丢失多副本配置与性能测试)...
  9. java swt课程设计_Java-SWT怎么做图片水印和文字水印?
  10. 逗号算命系统 v1.02