【智能算法】蛾群算法(MSA)原理及实现

在这里插入图片描述

目录

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


1.背景

2017年,AAA Mohamed等人受到飞蛾趋光行为启发,提出了蛾群算法(Moth Swarm Algorithm, MSA)。

2.算法原理

2.1算法思想

MSA设待优化问题的可行解和适应度函数值分别由光源位置和光源发光强度表示,主要分为:勘探蛾、探测蛾和观察蛾

  • 勘探蛾:能够在优化空间上发现新的区域,引导作用
  • 探测蛾:在光源附近区域内漫游到随机螺旋路径中一组已被勘探蛾标识的蛾群
  • 观察蛾:一组由探测蛾获得并直接向最佳全局解漂游的蛾群

在每次迭代中,粒子群算法中,蛾群中最佳适应度值被视为勘探蛾空间位置的发光强度,领导下一次更新迭代;而次优的适应度值分别定义为探测蛾和观察蛾。(有点像灰狼算法GWO机制)

2.2算法过程

MSA提出交叉点多样性指数,对于第t次迭代j维蛾群个体归一化分散度:
σ j t = 1 n p ∑ i = 1 n p ( x i j t − x j t ‾ ) 2 x j t ‾ (1) \sigma_j^t=\frac{\sqrt{\frac1{n_p}\sum_{i=1}^{n_p}(x_{ij}^t-\overline{x_j^t})^2}}{\overline{x_j^t}}\tag{1} σjt=xjtnp1i=1np(xijtxjt)2 (1)
x j t ‾ = ∑ i = 1 n p x i j t (2) \overline{x_j^t}=\sum_{i=1}^{n_p}x_{ij}^t\tag{2} xjt=i=1npxijt(2)
其中,np表示勘探蛾数量。
相对分散度表述为:
μ t = 1 d ∑ j = 1 d σ j t (3) \mu^t=\frac1d\sum_{j=1}^d\sigma_j^t\tag{3} μt=d1j=1dσjt(3)
任何勘探蛾的组成都会受到低分散度的影响,即勘探蛾数量在交叉点cp中被确认:
i ∈ c p i f σ j t ⩽ μ t (4) i\in c_{p}if\sigma_{j}^{t}\leqslant\mu^{t}\tag{4} icpifσjtμt(4)
差异向量莱维突变:
v p t → = L p 1 t ∙ ( x r t 2 → , x r t 3 → ) + L p 2 t ∙ ( x r t 4 → , − , x r t 5 → ) ∀ r 1 ≠ r 2 ≠ r 3 ≠ r 4 ≠ r 5 ≠ p ≠ ∈ { 1 , 2 , … , n p } x r 1 t → (5) \begin{gathered} \\ \overrightarrow{v_{p}^{t}}=L_{p1}^{t}\bullet(\overrightarrow{x_{r}^{t_{2}}},\overrightarrow{x_{r}^{t_{3}}})+L_{p2}^{t}\bullet(\overrightarrow{x_{r}^{t_{4}}},-,\overrightarrow{x_{r}^{t_{5}}}) \\ \forall r^1\neq r^2\neq r^3\neq r^4\neq r^5\neq p\neq\in \{1,2,\ldots,n_p\} \overrightarrow{x_{r^1}^t} \end{gathered}\tag{5} vpt =Lp1t(xrt2 ,xrt3 )+Lp2t(xrt4 ,,xrt5 )r1=r2=r3=r4=r5=p={1,2,,np}xr1t (5)
自适应交叉操作,为了获得全局最优解,勘探蛾个体通过子跟踪向量交叉操作更新其位置:
V p j t = { v p j t if j ∈ c p x p j t if j ∉ c p (6) V_{pj}^t = \begin{cases}v_{pj}^t \text{if} j \in c_p\\x_{pj}^t \text{if} j \notin c_p\end{cases}\tag{6} Vpjt={vpjtifjcpxpjtifj/cp(6)
选择策略,利用适应度函数值选择下一次迭代操作:
x p t + 1 → = { x p t → if f ( V p t → ) ⩾ f ( x p t → ) v p t → if f ( V p t → ) < f ( x p t → ) (7) \overrightarrow{x_p^{t+1}}=\begin{cases}\overrightarrow{x_p^t}\text{if}f(\overrightarrow{V_p^t})\geqslant f(\overrightarrow{x_p^t})\\\overrightarrow{v_p^t}\text{if}f(\overrightarrow{V_p^t})<f(\overrightarrow{x_p^t})\end{cases}\tag{7} xpt+1 = xpt iff(Vpt )f(xpt )vpt iff(Vpt )<f(xpt )(7)
概率值Pp与发光强度fitp成比例:
P p = f i t p ∑ p = 1 n p f i t p (8) P_p=\frac{fit_p}{\sum_{p=1}^{n_p}fit_p}\tag{8} Pp=p=1npfitpfitp(8)
MSA通过将锥形顶点保持在固定角度,将蛾群朝向光源的飞行路径描述为围绕锥体表面的一组轨迹,将具有次发光强度的蛾群定义为探测蛾:
n f =   r o u n d ( ( n − n p ) × ( 1 − t T ) ) (9) n_f=\mathrm{~round}\Big((n-n_p)\times(1-\frac tT)\Big)\tag{9} nf= round((nnp)×(1Tt))(9)
探测蛾个体xi根据下式螺旋飞行路径更新其位置:
x i t + 1 = ∣ x i t − x p t ∣ ∙ e θ ∙ c o s 2 π θ + x p t ∀ p ∈ { 1 , 2 , ⋅ ⋅ ⋅ , n p } ; i ∈ { n p + 1 , n p + 2 , ⋅ ⋅ ⋅ , n f } (10) x_{i}^{t+1} = | x_{i}^{t}-x_{p}^{t} | \bullet e^{\theta} \bullet \mathrm{cos}2\pi\theta+x_{p}^{t}\\\forall p\in\{1,2,\cdotp\cdotp\cdotp,n_p\};i\in\{n_p+1,n_p+2,\cdotp\cdotp\cdotp,n_f\}\tag{10} xit+1=xitxpteθcos2πθ+xptp{1,2,⋅⋅⋅,np};i{np+1,np+2,⋅⋅⋅,nf}(10)
每种飞蛾类型是动态变化的,任何探测蛾发现比当前位置更佳的光源位置,探测蛾将被替换为勘探蛾。
在这里插入图片描述

蛾群中具有最低发光强度的蛾被认为是 观察蛾,这些蛾群旨在直接向最佳全局解漂游,新观察蛾进行高斯游走:
x i t + 1 = x i t + ε 1 + [ ε 2 × b e s t g t − ε 3 × x i t ] ∀ i ∈ { 1 , 2 , ⋯   , n G } ε 1 ∼ r a n d o m ( s i z e ( d ) ) ⊕ N ( b e s t g t , log ⁡ t t × ( x i t − b e s t g t ) ) (11) \begin{gathered} x_{i}^{t+1} = x_{i}^{t}+\varepsilon_{1}+\left[\varepsilon_{2}\times best_{g}^{t}-\varepsilon_{3}\times x_{i}^{t}\right] \\ \forall i\in\{1,2,\cdots,n_{G}\} \\ \varepsilon_{1}\sim\mathrm{random}(\mathrm{size}(d))\oplus \\ N\left(best_g^t,\frac{\log t}{t}\times(x_i^t-best_g^t) \right) \end{gathered}\tag{11} xit+1=xit+ε1+[ε2×bestgtε3×xit]i{1,2,,nG}ε1random(size(d))N(bestgt,tlogt×(xitbestgt))(11)
观察蛾位置更新:
x i t + 1 = x i t + 0.001 ∙ T [ x i t − x i min ⁡ , x i max ⁡ − x i t ] + ( 1 − t / T ) ∙ r 1 ∙ ( b e s t p t − x i t ) + 2 t / T ∙ r 2 ∙ ( b e s t p t − x i t ) (12) x_{i}^{t+1}=x_{i}^{t}+0.001\bullet T[x_{i}^{t}-x_{i}^{\min},x_{i}^{\max}-x_{i}^{t}]+\\(1-t/T)\bullet r_{1}\bullet(best_{p}^{t}-x_{i}^{t})+2t/T\bullet r_{2}\bullet(best_{p}^{t}-x_{i}^{t})\tag{12} xit+1=xit+0.001T[xitximin,ximaxxit]+(1t/T)r1(bestptxit)+2t/Tr2(bestptxit)(12)

流程图:
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Mohamed A A A, Mohamed Y S, El-Gaafary A A M, et al. Optimal power flow using moth swarm algorithm[J]. Electric Power Systems Research, 2017, 142: 190-206.

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

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

相关文章

Spring 如何优雅的灵活的Http重试

1、背景说明 在互联网时代&#xff0c; 不同系统之间大多数是通过http调用&#xff0c;调用过程中会超时、异常等过种问题。为了保证业务稳定&#xff0c;http 重试是常用方案。下面列举几种方案。 2、Http重试方案介绍 2.1 传统方案 1、使用传统的递归调用&#xff0c;实现方…

Java Lambda 表达式(详细)

Java Lambda 表达式 Lambda 的发展史 Java Lambda 表达式是在 Java 8 版本中引入的重要特性&#xff0c;它描述了一种更简洁、更灵活的方式来处理函数式编程。 在 Java 8 之前&#xff0c;要实现函数式编程&#xff0c;需要通过匿名类实现接口的方式。这样的代码通常比较冗长…

R语言数据可视化:基本绘图系统

目录 plot函数 par函数 hist函数 boxplot函数 plot函数应用实战 R语言中有三大绘图系统包括基本绘图系统&#xff0c;Lattice绘图系统&#xff0c;ggplot2绘图系统 基本绘图系统 在R语言中&#xff0c;以下函数通常用于创建和定制图形&#xff1a; plot 函数&#xff…

VMware Intel i5-10400 安装Mac 14 Sonoma

目录 安装完后的效果安装前的准备创建虚拟机创建虚拟机&#xff0c;选择典型安装。选择ISO文件选择系统类型命名虚拟机设置磁盘完成 配置虚拟机文件修改配置文件 第一次运行虚拟机选择语言选择磁盘工具格式磁盘安装macOS Sonoma 其他问题登录Apple帐户 &#xff1a; MOBILEME_C…

Unity类银河恶魔城学习记录12-7-1 p129 Craft UI - part 1源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftList.cs using System.Collections; using System.Collections.Gen…

Composer Windows 安装

Composer 的下载地址为&#xff1a;Composer 1 运行安装程序 当启动安装程序后单击下一步继续。 选择 PHP 路径 如果你的计算机上没有安装 PHP 的话&#xff0c;Composer 的安装无法继续。 你需要选择你本地安装的 PHP 路径。 配置代理地址 默认的情况下&#xff0c;可以不…

一个项目的SpringCloud微服务改造过程

SSO是公司一个已经存在了若干年的项目&#xff0c;后端采用SpringMVC、MyBatis&#xff0c;数据库使用MySQL&#xff0c;前端展示使用Freemark。今年&#xff0c;我们对该项目进行了一次革命性的改进&#xff0c;改造成SpringCloud架构&#xff0c;并且把前后端分离&#xff0c…

ES6中 Promise的详细讲解

文章目录 一、介绍状态特点流程 二、用法实例方法then()catchfinally() 构造函数方法all()race()allSettled()resolve()reject() 三、使用场景# 参考文献 一、介绍 Promise&#xff0c;译为承诺&#xff0c;是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;…

四大生成式模型的比较——GAN、VAE、归一化流和扩散模型

比较四大模型的本质 four modern deep generative models: generative adversarial networks, variational autoencoders, normalizing flows, and diffusion models 待写

Android 14 NotificationChannels与Notification的加载流程

前言 这部分我觉得三方应用使用的较多&#xff0c;分析的时候也是源码与三方应用结合分析的。 一. NotificationChannel 的创建 在源码中&#xff0c;我看到了一个很怪的类&#xff1a;NotificationChannels.java。这个类继承了 CoreStartable。 注&#xff1a;CoreStartabl…

mysqldump: Got error: 1049: Unknown database ‘root‘ when selecting the datab

1.问题描述 MySQL版本号&#xff1a;MySQL Server 8.3MySQL持久化到处数据库结构及数据 mysqldump: Got error: 1049: Unknown database root when selecting the datab2.问题解决 cmd 切换本地路径 cd /d D:\Program Files\MySQL\MySQL Server 8.3\bin执行数据库备份命令 …

uniapp vue2 时钟 循环定时器

效果展示&#xff1a; 时钟 写在前面&#xff1a;vue2有this指向&#xff0c;没有箭头函数 实验操作&#xff1a;封装一个时钟组件 uniapp vue2 封装一个时钟组件 核心代码&#xff1a; this指向的错误代码&#xff0c;在下&#xff1a; start() { this.myTimer setInterval(…

复习知识点整理

零碎语法 1.导入某个文件夹的index文件&#xff0c;index可以省略&#xff08;这里导入的是router和store文件下的index.js文件&#xff09; 2.路由懒加载 this 1.在vue文件中使用router\store对象时 this&#xff1a;普通函数的this指向vue实例对象(在没有明确指向的时候…

大语言模型上下文窗口初探(下)

由于篇幅原因&#xff0c;本文分为上下两篇&#xff0c;上篇主要讲解上下文窗口的概念、在LLM中的重要性&#xff0c;下篇主要讲解长文本能否成为LLM的护城河、国外大厂对长文本的态度。 3、长文本是护城河吗&#xff1f; 毫无疑问&#xff0c;Kimi从一开始就用“长文本”占领…

加载infercnv报错“../JAGS/modules-4/basemod.so”

library(infercnv) Error: package or namespace load failed for ‘infercnv’:.onLoad failed in loadNamespace() for rjags, details:call: load.module("basemod", quiet TRUE)error: File not found: /opt/R/4.3.2/lib64/R/../JAGS/modules-4/basemod.so 一、…

揭开Spring Bean生命周期的神秘面纱

目录 一、Spring IOC 1.1 Spring IOC 的加载过程 二、Spring Bean 生命周期 2.1 实例化前置 2.2 实例化后置 2.3 属性赋值 2.4 初始化前置 2.5 初始化 2.6 初始化后置 2.7 Bean 销毁 Spring 是一个开源的企业级Java应用程序框架&#xff0c;它简化了企业级应用程序开…

k8s资源监控_bitnami metrics-server v0(1),2024一位Linux运维中级程序员的跳槽面经

错误3 也有可能会遇到以下错误&#xff0c;按照下面提示解决 Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io) 如果metrics-server正常启动&#xff0c;没有错误&#xff0c;应该就是网络问题。修改…

基于SpringBoot的“自习室预订系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“自习室预订系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 管理员登录界面 座位预订管理界面图 自习室管理…

13 Python进阶:pip及其他常用模块

pip 是 Python 包管理工具&#xff0c;它提供了对 Python 包的查找、下载、安装、卸载的功能。 包地址&#xff1a; https://pypi.org/ 最新的 Python 版本已经预装了 pip。 pip 各种命令 查看是否已经安装 pip 可以使用以下命令&#xff1a; pip --version下载安装包使用…

Leetcode 581. 最短无序连续子数组

心路历程&#xff1a; 本以为这道题要用动态规划求解&#xff0c;因为题目中这几个关键字与动态规划太匹配了&#xff0c;结果想了半天也没发现dp(i)和dp(i-1)的递推关系。 这道题本意考察双指针的做法&#xff0c;也可以用排序后做比较的方式来做。 注意的点&#xff1a; 1…