双语!性能优越|融合黏菌和差分变异的量子哈里斯鹰算法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]

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

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

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

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

相关文章

Spring AOP<一>简介与基础使用

spring AOP 基础定义 含义使用切面组织多个Advice,Advice放在切面中定义。也就是说是定义通知的自定义类。自定义的AOP类Aspect连接点方法调用&#xff0c;异常抛出可以增强的点JoinPoint &#xff1a;也就是**被增强的方法的总称&#xff0c;可以获取具体方法的信息&#xff…

(2023,3D NeRF,无图像变分分数蒸馏,单步扩散)SwiftBrush:具有变分分数蒸馏的一步文本到图像扩散模型

SwiftBrush : One-Step Text-to-Image Diffusion Model with Variational Score Distillation 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 方法 1.1 基础 1.2 SwiftBrus…

图像分割实战-系列教程2:Unet系列算法

图像分割实战-系列教程 总目录 语义分割与实例分割概述 Unet系列算法 1、Unet 整体结构&#xff1a;概述就是编码解码过程简单但是很实用&#xff0c;应用广起初是做医学方向&#xff0c;现在也是 语义分割与实例分割概述 Unet系列算法

MYSQL 深入探索系列六 SQL执行计划

概述 好久不见了&#xff0c;近期一直在忙项目的事&#xff0c;才有时间写博客&#xff0c;近期频繁出现sql问题&#xff0c;今天正好不忙咱们看看千万级别的表到底该如何优化sql。 案例 近期有个小伙伴生产环境收到了告警&#xff0c;有个6千万的日志表&#xff0c;查询耗时大…

unity学习笔记----游戏练习0

一、修复植物种植的问题 1.当手上存在植物时&#xff0c;再次点击卡片上的植物就会在手上添加新的植物&#xff0c;需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。 public bool AddPlant(PlantType plantType) { //防止手上出现多个植…

香橙派 ubuntu实现打通内网,外网双网络,有线和无线双网卡

当香橙派 ubuntu 连了有线&#xff0c;和无线时&#xff0c;默认请求外网时&#xff0c;只走一个网卡&#xff0c;如走了内网网卡&#xff0c;就只能访问内访问&#xff0c;访问不了外网&#xff1b;走了外网网卡就只能访问外网&#xff0c;访问不了内网&#xff1b; 实现双网…

显示器与按键(LCD 1602 + button)

一、实验目的&#xff1a; &#xff08;1&#xff09;学习lcd 1602的编程与使用、 &#xff08;2&#xff09;机械式复位开关button软件消抖的方法。 二、实验内容&#xff1a; 1、必做&#xff1a;先显示开机画面&#xff0c;&#xff1a;在1602显示器上&#xff0c;分两行…

Linux报错:audit: backlog limit exceeded

今天&#xff0c;一台虚拟机上操作昨天打开的连接一直没响应&#xff0c;新打开连接连接不上。SSH校验不通过。 通过IT的后台&#xff0c;可以看到满屏的audit: backlog limit exceeded。 问题原因&#xff1a;audit服务记录的审计事件超出默认(或设置)数量 &#xff0c;达到或…

.一文带你了解Kylin:大数据框架开源分布式分析型数据仓库学习网站全攻略!

介绍&#xff1a;Apache Kylin是一个开源的分布式分析引擎&#xff0c;它为Hadoop和Apache Kylin是一个开源的分布式分析引擎&#xff0c;它为Hadoop和Spark提供SQL查询接口和多维分析&#xff08;OLAP&#xff09;能力&#xff0c;以支持超大规模的数据处理。Kylin最初由eBay …

HDFS客户端UnknownHostException事故解析

文章目录 前言事故现场问题分析是否是整个域名解析服务当时都出问题了是否是出问题的pods本身的域名解析有问题 异常发生的全部过程域名的解析是什么时候发生的&#xff0c;怎么发生的域名解析的详细流程 重试发生在什么地方为什么重试会无效 Bugfix代码详解关于StandardHostRe…

【神预言】2024年最具颠覆性的十大技术,每一条都令人咋舌!

大数据产业创新服务媒体 ——聚焦数据 改变商业 回首2023年&#xff0c;我们见证了数据智能领域的一场重要变革&#xff1a;数据智能的三大核心要素——数据、算法、和算力&#xff0c;如今已升级演化为大数据、大模型和大计算的全新范式。 在这个变革的十字路口上&#xff0c…

js实现前端下载图片和文件资料

说明&#xff1a;下载图片和文档资料是两种不同的方式&#xff0c;所以需要先判断下载的是图片还是word&#xff0c;excel等文件资料 目录 1.文件资料下载&#xff1a; 2.图片资源下载 1.文件资料下载&#xff1a; window.location.href 文件路径; handleClick(item) {let…

【黑产攻防道04】利用pow工作量证明降低黑产的破解效率

上一期我们提到&#xff0c;黑产有三种常见的破解方式&#xff1a; 1.通过识别出验证码图片答案实现批量破解验证&#xff0c;即图片答案识别&#xff1b; 2.在了解通讯流程之后直接携带相关参数发请求&#xff0c;即协议破解&#xff1b; 3.使用各种客户端模拟器来模拟真人…

在Linux上搭建Maven仓库的实战教程

引言 在Java开发中&#xff0c;Maven作为项目构建和依赖管理的重要工具&#xff0c;其仓库的搭建至关重要。本文将手把手教你如何在Linux系统上安装并配置Nexus Repository Manager 3&#xff08;简称Nexus 3&#xff09;&#xff0c;从而创建一个私有的Maven仓库。 步骤一&a…

Vue小练习--任务列表

这是一个非常实用的例子&#xff0c;主要实用的是v-model、v-on、v-for指令&#xff0c;javaScript的数组也会涉及一些&#xff0c;javaScript数组方法有很多&#xff0c;本文使用的添加元素和删除元素非常实用&#xff0c;可以记下来。 设计思路 很多例子看起来很难&#xf…

代码随想录刷题 | Day1

今日学习目标 一、基础 数组 array类 模板类vector 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 需要两点注意的是 数组下标都是从0开始的。 数组内存空间的地址是连续的 而且大家如果使用C的话&…

【华为数据之道学习笔记】7-5通过感知能力推进企业业务数字化

感知数据在华为信息架构中的位置 感知可以应用于广泛的物理世界和数字世界&#xff0c;感知范围可以从人、物、作业、地点扩展到复杂环境。成熟的用例倾向于以物和人为中心。而在企业中&#xff0c;只有将感知数据纳入整体的数据体系中&#xff0c;才能发挥感知数据的价值。 华…

javaWeb学生信息管理系统2

一、学生信息管理系统SIMS 一款基于纯Servlet技术开发的学生信息管理系统&#xff08;SIMS&#xff09;&#xff0c;在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息&#xff0c;实现了信息的有效存储、检索和更新&#xf…

【eclipse】eclipse开发springboot项目使用入门

下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 安装eclipse 其他一步一步即可 我们是开发java web选择如下 界面修改 Window->Preferences-> 修改eclipse风格主题 Window->Preferences->General->Appearance 修改字体和大小…

Docker 入门 ------容器互通以及Dockerfile

1. 端口映射以及容器互联 Docker 除了通过网络访问&#xff0c;还提供了两种很方便的功能来满足服务访问的基本需求&#xff1a; 允许映射容器内应用的服务端口到本地宿主主机互联机制实现多个容器间通过容器名来快速访问 1.1 容器映射实现访问容器 1.1.1 从外部访问容器应…