【智能算法】蛾群算法(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.

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

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

相关文章

做抖店什么东西好卖?什么商品赚钱?抖音小店的选品标准来了!

哈喽~我是电商月月 做抖店&#xff0c;选品决定了一切&#xff01; 而从没接触过抖店的新手朋友&#xff0c;根本不知道什么样的商品才能算的上是好商品 在这里&#xff0c;我不敢告诉大家这个商品好卖&#xff0c;你们快去卖&#xff01;店铺的情况不同&#xff0c;运营方式…

机器学习-07-分类回归和聚类算法评估函数

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类回归和聚类算法中的评价函数。 参考 机器学习常见评价指标 Python sklearn机器学习各种评价指标——Sklearn.metrics简介及应用示例 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a…

蓝桥杯刷题-17-平方差-打表+数学⭐(⊙o⊙)

之前的题目:最大也就到2e5左右。1e9的数据范围就意味着&#xff0c;即使是O(n)的复杂度&#xff0c;也会超时。此时可以考虑使用数学方法进行解题。 ❗打表:利用电脑去找一些合法答案&#xff0c;然后在这些合法答案中找规律。 ⭐打表后找到的规律: (1)好像所有的奇数都是合法…

基于springboot+vue+Mysql的滴答拍摄影项目

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

第4章 Redis,一站式高性能存储方案,笔记问题

点赞具体要实现功能有哪些&#xff1f; 可以点赞的地方&#xff1a;对帖子点赞&#xff0c;对评论点赞点一次是点赞&#xff0c;再点一次是取消赞统计点赞的数量&#xff08;计数&#xff0c;string&#xff09;&#xff0c;帖子被点赞的数量&#xff0c;某个用户被点赞的数量…

聚道云连接器打通红圈CRM和金蝶云星辰,赋能环境科技公司数字化转型

一、客户介绍 某环境科技有限公司是一家专注于环保科技领域的领先企业&#xff0c;致力于为客户提供全方位的环境解决方案。公司拥有一支经验丰富、技术精湛的团队&#xff0c;不断推动环保技术的创新与应用。作为业内的佼佼者&#xff0c;该公司在环境治理、资源回收和节能减…

PC端音乐神器-解锁全网限制

打软件后就能发现&#xff0c;软件不需要我们登录&#xff0c;就可以使用,下载地址&#xff1a;PC端音乐神器.zip

Social Skill Training with Large Language Models

Social Skill Training with Large Language Models 关键字&#xff1a;社交技能训练、大型语言模型、人工智能伙伴、人工智能导师、跨学科创新 摘要 本文探讨了如何利用大型语言模型&#xff08;LLMs&#xff09;进行社交技能训练。社交技能如冲突解决对于有效沟通和在工作和…

共生共舞的期货黄金和现货黄金

期货黄金&#xff0c;作为一种在金融市场上备受关注的投资工具&#xff0c;其价值与价格走势深受现货黄金市场的直接影响和联动。期货黄金交易&#xff0c;本质上是投资者对未来某一特定时间内黄金价格的预期进行押注&#xff0c;而这背后的逻辑支撑和价格基准正是现货黄金市场…

ShardingSphere-JDBC使用时出现雪花算法id无法生成

出现报错&#xff1a; 这是sql 尝试1&#xff1a; 这里改成Long 还是报错 尝试2&#xff1a;将配置重写 删除 props: # 主键生成器属性配置worker-id: 1 # Snowflake算法中的workerId配置解决&#xff01;

Pandas分箱/离散化cut()与qcut()的区别

cut与qcut区别 1、pd.cut()2、pd.qcut()3、cut与qcut区别 Pandas提供了智能剪贴功能&#xff1a;pd.cut()与pd.qcut()&#xff0c;它们通常用于更方便直观地处理关系型或标签型数据&#xff0c;将数据进行分箱/离散化 1、pd.cut() 我们可以通过两种方式使用cut()函数&#xff…

废品回收小程序推动回收行业的发展趋势

回收在全球都是一个重要行业&#xff0c;它为全球的环保作出了重要贡献。 随着科技的不断发展创新&#xff0c;废品回收的方式也逐渐多样&#xff0c;全新的线上回收小程序也逐渐出现在大众的生活中&#xff0c;在当下的手机时代&#xff0c;线上回收也为大众提供了更加便利的…