双语!性能优越|融合黏菌和差分变异的量子哈里斯鹰算法SDMQHHO

在这里插入图片描述

前面的文章里卡卡介绍了哈里斯鹰优化算法(Harris Hawks Optimization, HHO).HHO是 Heidari等[1]于2019年提出的一种新型元启发式算法,设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突然袭击的狩猎风格,具有需调参数少、原理简单易实现、局部搜索能力强等优点,在许多工程领域得到广泛的应用。

然而,HHO算法虽然在CEC2005中有较好的性能,但HHO在CEC2017等更复杂的基准函数问题中的能力还缺乏科学证据,这类基准函数不仅包含单模和多模,而且还包括混合和复合函数,对算法在摆脱局部最优的能力以及全局寻优能力都是极大的考验。而由作者前面文章中的分析可知,虽然HHO的开发能力强,但HHO存在全局/局部搜索不平衡,在迭代后期HHO将只进行开发,若面对复杂问题其在迭代后期易陷入局部最优,因此本文作者将对HHO进行改进,并在CEC2017、CEC2020和CEC2022中进行测试(Matlab/Python),以验证其在复杂问题中优越性能。(PS:最近由于学业繁忙以及开发Python代码,更新比平时慢了点,以后对Python熟悉了后更新速度会快上来)

00 文章目录

1 哈里斯鹰优化算法原理

2 融合黏菌算法和差分进化的量子哈里斯鹰优化算法

3 代码目录

4 实验结果

5 源码获取

01 哈里斯鹰优化算法原理

关于哈里斯鹰算法原理及其优缺点分析作者在前面的文章中已经作了介绍

02 融合黏菌算法和差分进化的量子哈里斯鹰优化算法

本文基于哈里斯鹰优化算法的特点及其缺陷进行如下改进。

2.1 基于量子计算和佳点集的种群初始化

阶段1:佳点集

HHO通过随机生成初始种群的方法,容易出现种群分布不均匀,会导致种群多样性减少,种群质量不高,影响算法的收敛速度。

佳点集是一种有效的均匀选点方法。该理论由华罗庚先生提出[2],在许多群智能优化算法中都得到了应用,由佳点集的定义,设GD是D维欧式空间中的单位立方体,若r∈GD,形为:
在这里插入图片描述

其偏差满足:

在这里插入图片描述

则称Pn(k)为佳点集,r为佳点,其中C(r, ε)是是只与r、ε(ε>0)有关的常数。取rk={2cos(2pir/p)},1≤k≤n,p是满足(p-D/2)≥D的最小素数,理论[3]上已证明,用n个佳点构成的加权和比采用任何其他n个点所得到的误差都要小,并尤其适用于高维空间的近似计算。以二维单位搜索空间为例,随机取点与佳点集方法取点的对比如下:
在这里插入图片描述

显然,随机取点并不均匀,并且许多取点位置重合,会造成解的可利用率不高,而佳点集方法能够使得取点更为均匀地分布在搜索空间中,其在全局中的搜索效率将更高。

阶段2:量子计算

量子计算(Quantum Computation,QC)是1982年首先由 Richard Feynman 提出[4],是目前国内外学者比较关注的前沿学科之一,量子计算理论源于量子力学理论,而量子力学理论、混沌理论与相对论同被列为二十世纪最伟大的发现和科学佳作,可见量子计算的前沿性也是非常突出的。

经典计算与量子计算中的两种基本状态区别在于量子比特还可以表示成叠加态,即两个极化状态的线性组合。根据量子计算的这一特点,可以在初始化阶段引入量子计算的概念,基于一组量子比特,获得更多的初始种群。

…(理论略)

则根据两个阶段的初始化策略,在佳点集初始化得到的初始种群基础上,再进行量子计算的变换,以提高和改善初始种群在搜索空间上的分布质量,加强其全局搜索能力。

2.2 非线性猎物逃逸能量

由前面文章中作者的分析可以知道,控制哈里斯鹰算法探索与开发阶段的重要参数——猎物逃逸能量E在迭代后期(t>Tmax/2)恒小于1,这会导致算法后期仅进行开发,若前期没有探索到全局最优附近的点,则算法可能会陷入局部最优无法跳出,因此本文对开发与探索的转换策略进行改进。公式略

本文采取了一种基于随机数的转换策略,且猎物逃逸能量E在前期下降慢,使得算法能够进行广泛的区域探索,同时,迭代后期猎物逃逸能量E虽然较小,但算法仍有进行全局探索的可能,提高了算法跳出局部最优的能力。改进前后算法进行探索与开发策略的对比示意图如下:
在这里插入图片描述

由图可以看到,改进前HHO在迭代前期探索和开发都有一定概率进行,而到了后期则只有开发操作,若面对复杂问题,前期可能并不能探索到全局最优点附近,因此会陷入局部最优。改进后在后期也有一定概率进行全局探索,因此增强了算法跳出局部最优的能力。

2.3 融合准反向学习与黏菌算法的探索阶段

黏菌算法(slime mould algorithm, SMA)[5]是一种具有优秀全局寻优性能的优化算法,SMA会根据适应度值调整不同的搜索模式,同时会分离出一部分有机物向其他领域探索,并且vb的振荡作用也增加了全局探索的可能性。因此,SMA的多重探索机制使该算法具有强大的全局寻优能力。

针对HHO优化算法面对复杂问题易陷入局部最优的问题,本文将黏菌算法的多重搜索机制引入其搜索阶段以增强HHO算法的全局搜索能力。同时考虑到传统SMA中,当rand<z时,黏菌种群由解空间随机生成黏菌个体,模拟黏菌分离部分个体探索其他可能存在的食物源的行为,此方法虽可以避免算法早熟,但并没有充分利用当前解的信息。准反向学习(Quasi-oppositional learning,QOL)[6]是在传统反向学习改进的基础上,用于提升个体当前质量的一种方法。由于原反向学习变换跨度过大,搜索精度不高,且生成的解容易停滞在邻域最优解。为了获得质量有明显提高的解,准反向学习被提出,并在后来被证明其更接近最优解[7]。公式略。

准反向解的图示如下:

在这里插入图片描述

由图可以看出,准反向解能够实现更广泛和更合理的探索范围,具有更大几率接近搜索空间中的最优点或次优点,因此本文将准反向学习替换黏菌算法中r<z时的随机个体策略,该策略不仅有助于避免早熟,更有机会接近食物源。

结合哈里斯鹰算法中探索阶段的更新策略,本文改进的哈里斯鹰算法探索阶段的搜索策略为,公式略

将探索阶段进行以上改进,将提升算法在全局寻优上的搜索性能,提高搜索精度。

2.4 平均差分变异策略

由于种群中的哈里斯鹰在迭代过程中向最优个体聚集,若存在一个局部最优,随着迭代次数的增加,哈里斯鹰聚集在局部最优周围,易导致种群多样性下降。为避免算法陷入局部最优,防止早熟现象,本文引入平均差分变异[8]对种群个体和全局最优进行修正,其根据迭代的不同阶段采取了两种不同策略,具体如下:公式略

该变异策略在前期在个体附近进行搜索,而在后期倾向于在全局最优附近勘探,有助于算法跳出局部最优。

2.5 算法总流程
在这里插入图片描述

其中,红色部分为本文改进部分。

03 代码目录

在这里插入图片描述

代码包含了Matlab和Python,由于作者是首次将原创改进用Python写,所以这次开发周期长了些,并且只找到了CEC2017函数的调用,因此Python代码会比Matlab便宜些~,也期待大家使用的反馈。

MATLAB和Python的代码目录如下,作者在使用了Python后的最大感受就是Python的函数管理可以做的很方便,从两方的代码文件数的对比就可以看出。

MATLAB:Main_SDMQHHO_perf.m和Main_Only_SDMQHHO.m为主程序,关于这两个主程序的使用在Readme.txt中作者做了解释:

在这里插入图片描述

代码注释详细,一键运行Main_ SDMQHHO _perf.m即可得到所有运行结果,运行结果包括佳点集比较图、收敛因子比较图、算法在CEC2017/2020/2022测试函数上的迭代图,最后将生成excel表,包含算法在各函数迭代n次的平均值,均值、运行时间、最优解。

同时,文件也有乱码解决,给出了主要代码的txt文件。部分程序如下(perf_SDM_QHHO.m)

在这里插入图片描述

Python:Main_SDMQHHO_perf.py和Main_Only_SDMQHHO.py为主程序,关于这两个主程序的使用在Readme.txt中作者做了解释:
在这里插入图片描述

代码注释详细,一键运行Main_ SDMQHHO _perf.py即可得到所有运行结果,运行结果包括佳点集比较图、收敛因子比较图、算法在CEC2017测试函数上的迭代图,最后将生成excel表,包含算法在各函数迭代n次的平均值,均值、运行时间、最优解。部分程序如下(perf_SDM_QHHO.py)
在这里插入图片描述

04 实验结果

在本节中,MATLAB使用 CEC2017/2020/2022测试SDMQHHO性能,而Python使用CEC2017测试性能(因为作者只找到了CEC2017的测试函数)。结果如下:

MATLAB(由于结果太多了,作者这里对各测试函数都贴出一部分)

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

CEC2020
在这里插入图片描述

在这里插入图片描述

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

从结果看出,改进后的算法精度与收敛速度都得到了很大提升,同时可以发现HHO在一些函数表现欠佳,也反映出其面对复杂问题存在一定的早熟的问题。

Python(因为Python不能像matlab可以gui调整legend,也可能是我不会…因此3x3的子图中图例会把图盖住,作者这里用的1x2,也展示部分图)

Python部分(仅有 CEC2017)

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

在这里插入图片描述

​​
在这里插入图片描述

在这里插入图片描述

python代码的运行速度比matlab慢很多,可能是我在python里用了很多矩阵运算​

05 源码获取

GZH(KAU的云实验台)后台回复 SDMQHHO (Matlab与Python版本)

含完整改进算法的理论与公式信息的pdf

参考文献

[1] Heidari A A, Mirjalili S, Faris H, et al. Harris Hawks Optimization Algorithm and Applications[J]. Future Generation Computer Systems,2019,97(8):849-872.

[2] 华罗庚,王元.数论在近似分析中的应用[M].北京:科学出版社. 1978: 83-86.Hua LG,Wang Y.Application of number theory in approximate analysis[M. Beijing: Science Press,1978:83-86.

[3] Kiefer J. On large deviations of the empiric D. F. of vector chance variables and a law of the iterated logarithm[J].Pacific Journal of Mathematics,1961,11(2):649-660.

[4] Feynman,R. P.(1982).Simulating physics with computers. International Journal of Theoretical Physic,21(6),22.https: //doi.org/10.1007/bf02650179

[5] LI Shimin, CHEN Huiling, WANG Mingjing, et al. Slime mould algorithm: a new method for stochastic optimization[J]. Future generation computer systems, 2020, 111:300–323.

[6] BASE M.Quasi-oppositional differential evolution for optimal reactive power dispatch[J].International Journal of Electrical Power and Energy Systems,2015,78: 29-40.

[7] T. Si, P.B.C. Miranda, D. Bhattacharya, Novel enhanced Salp Swarm Algorithms using opposition-based learning schemes for global optimization problems, Expert Syst. Appl. 207 (2022), 117961.

[8] Abdesslem Layeb. Differential Evolution Algorithms with Novel Mutations, Adaptive Parameters and Weibull Flight Operator, 08 September 2022, PREPRINT (Version 1) available at Research Square [https://doi.org/10.21203/rs.3.rs-1898342/v1]

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

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看 (ง•̀_•́)ง(不点也行)

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

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

相关文章

4.20 构建onnx结构模型-Reduce

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Reduce 结点进行分析 方式 方法…

002文章解读与程序——中国电机工程学报EI\CSCD\北大核心《计及源荷不确定性的综合能源生产单元运行调度与容量配置两阶段随机优化》已提供下载资源

&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;下载资源链接&#x1f4…

Java——猫猫图鉴微信小程序(前后端分离版)

目录 一、开源项目 二、项目来源 三、使用框架 四、小程序功能 1、用户功能 2、管理员功能 五、使用docker快速部署 六、更新信息 审核说明 一、开源项目 猫咪信息点-ruoyi-cat: 1、一直想做点项目进行学习与练手&#xff0c;所以做了一个对自己来说可以完成的…

【Linux系统化学习】进程终止的奥秘

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Liunx系统化学习 代码仓库&#xff1a;Gitee 目录 获取函数返回值 退出码 进程退出的场景 错误码 信号终止异常代码 进程的终止 main函数直接return exit函数 _exit函数 获取函数返回值 在C语言学…

Linux驱动开发学习笔记6《蜂鸣器实验》

目录 一、蜂鸣器驱动原理 二、硬件原理分析 三、实验程序编写 1、 修改设备树文件 &#xff08;1&#xff09;添加pinctrl节点 &#xff08;2&#xff09;添加BEEP设备节点 &#xff08;3&#xff09;检查PIN 是否被其他外设使用 2、蜂鸣器驱动程序编写 3、编写测试AP…

uniapp多级动态表单规则

最近有个新的业务、主要涉及多层级的动态表单提交&#xff0c;其中又涉及很多类型&#xff0c;踩了很多坑之后&#xff0c;终于研发完毕。 传来的数据格式处理 传来的数据格式涉及比较多的内容&#xff0c;以下举例一个&#xff0c;涉及到规则的填写 规则写法有两种&#xff…

数据结构(一)

本文是在原本数据结构与算法闯关的基础上总结得来&#xff0c;加入了自己的理解和部分习题讲解 原活动链接 邀请码: JL57F5 目录 算法和数据结构1、什么是算法?2、什么是数据结构&#xff1f;3、算法和数据结构之间的关系4、时间复杂度5、数据结构 : 什么是数组&#xff1f…

帆软FineBi V6版本经验总结

帆软FineBi V6版本经验总结 BI分析出现背景 ​ 现在是一个大数据的时代&#xff0c;每时每刻都有海量的明细数据出现。这时大数据时代用户思维是&#xff1a;1、数据的爆炸式增长&#xff0c;人们比起明细数据&#xff0c;更在意样本的整体特征、相互关系。2、基于明细的“小…

城市分站优化系统源码:提升百度关键排名 附带完整的搭建教程

城市分站优化已成为企业网络营销的重要手段&#xff0c;今天来给大家分享一款城市分站优化系统源码。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.多城市分站管理&#xff1a;该系统支持多个城市分站的管理&#xff0c;用户可以根据业务需求&#xff0c;…

Uniapp软件库全新带勋章功能(包含前后端源码)

源码介绍&#xff1a; Uniapp开发的软件库全新带勋章功能&#xff0c;搭建好后台 在前端找到 util 这个文件 把两个js文件上面的填上自己的域名&#xff0c;电脑需要下载&#xff1a;HBuilderX 登录账号 没有账号就注册账号&#xff0c; 然后上传文件&#xff0c;打包选择 “…

企业私有云容器化架构

什么是虚拟化: 虚拟化&#xff08;Virtualization&#xff09;技术最早出现在 20 世纪 60 年代的 IBM 大型机系统&#xff0c;在70年代的 System 370 系列中逐渐流行起来&#xff0c;这些机器通过一种叫虚拟机监控器&#xff08;Virtual Machine Monitor&#xff0c;VMM&#x…

Unity中Shader裁剪空间推导(在Shader中使用)

文章目录 前言一、在Shader中使用转化矩阵1、在顶点着色器中定义转化矩阵2、用 UNITY_NEAR_CLIP_VALUE 区分平台矩阵3、定义一个枚举用于区分当前是处于什么相机 二、我们在DirectX平台下&#xff0c;看看效果1、正交相机下2、透视相机下3、最终代码 前言 在上一篇文章中&…

图像的颜色及Halcon颜色空间转换transfrom_rgb/trans_to_rgb/create_color_trans lut

图像的颜色及Halcon颜色空间转换 文章目录 图像的颜色及Halcon颜色空间转换一. 图像的色彩空间1. RGB颜色 2. 灰度图像3. HSV/ HSI二. Bayer 图像三. 颜色空间的转换1. trans_from_rgb算子2. trans_to_rgb算子3. create_color_trans_lut算子 图像的颜色能真实地反映人眼所见的真…

关于“Python”的核心知识点整理大全51

目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&a…

Visual Studio 配置DLL

我们在用Visual Studio进行开发时&#xff0c;如果没有正确配置DLL&#xff0c;就会出现类似“丢失***.dll”的错误。DLL配置有哪些方法&#xff1f; 1、手动复制 将dll文件拷贝到生成的.exe所在的文件夹里 2、配置环境 在右键属性->配置属性->调试->环境&#xf…

鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化

鸿蒙&#xff08;HarmonyOS 3.1&#xff09; DevEco Studio 3.1开发环境汉化 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、设置过程 打开IDE&#xff0c;在第一个菜单File 中找到Settings...菜单 在Setting...中找到Plugins…

使用Jenkins和单个模板部署多个Kubernetes组件

前言 在持续集成和部署中&#xff0c;我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本&#xff0c;我们可以自动化这个过程。在本文中&#xff0c;我将演示如何使用Jenkins Pipeline及单个YAML模板文件&#xff08;.tpl&#xff09;来部署多个类似的…

Livox-Mid-360 固态激光雷达ROS格式数据分析

前言&#xff1a; Livox-Mid-360 官方采用livox_ros_driver2ROS功能包发布ROS格式的数据&#xff0c;livox_ros_driver2可以把Livox原始雷达数据转化成ROS格式并以话题的形式发布出去。 下面列举一些雷达的基本概念&#xff1a; 点云帧&#xff1a;雷达驱动每次向外发送的一…

使用 pytest 相关特性重构 appium_helloworld

一、前置说明 在 pytest 基础讲解 章节,介绍了 pytest 的特性和基本用法,现在我们可以使用 pytest 的一些机制,来重构 appium_helloworld 。 appium_helloworld 链接: 编写第一个APP自动化脚本 appium_helloworld ,将脚本跑起来 代码目录结构: pytest.ini 设置: [pyt…

扭蛋机小程序搭建:打造互联网“流量池”

随着互联网科技的发展&#xff0c;扭蛋机小程序成为了市场发展的重要力量。 扭蛋机市从日本发展流行起来的&#xff0c;玩法就是根据设置的概率&#xff0c;让玩家体验扭蛋机的乐趣。扭蛋机中有隐藏款和稀有款&#xff0c;为了获得稀有款商品&#xff0c;玩家便会进行扭蛋&…