基于混合策略的改进哈里斯鹰优化算法-附代码

news2024/11/20 14:42:17

基于混合策略的改进哈里斯鹰优化算法

文章目录

  • 基于混合策略的改进哈里斯鹰优化算法
    • 1.哈里斯鹰优化算法
    • 2.改进哈里斯鹰优化算法
      • 2.1 Sobol 序列初始化种群
      • 2.2 limit 阈值执行全局搜索阶段
      • 2.4 动态反向学习
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:针对原始哈里斯鹰优化算法(HHO)存在的收敛精度低、收敛速度慢、易陷入局部最优等不足,提出了一种基于混合策略的改进哈里斯鹰优化算法(HSHHO).首先,在种群初始化阶段引入Sobol序列,生成均匀分布的种群,提高种群的多样性,有利于提高算法的收敛速度;其次,引入limit阈值,令算法在一定迭代次数没有获得更优值后执行全局探索操作,提高算法跳出局部最优解的能力,改善HHO在迭代后期只执行开发阶段而易陷入局部最优的缺陷;最后,提出一种动态的反向学习机制,提高算法的收敛精度以及跳出局部最优的能力.

1.哈里斯鹰优化算法

基础哈里斯鹰优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108528147

2.改进哈里斯鹰优化算法

2.1 Sobol 序列初始化种群

种群初始状态的分布极大地影响着算法的收敛速 度和收敛精度. 在原始的 HHO 算法中, 种群采用随 机化的方式产生. 然而, 这种伪随机方式产生的种群个 体分不均匀, 使得算法难以对整个搜索空间进行搜索, 影响了算法的收玫速度和精度. 相比之下, Sobol 序列 是一种用确定性拟随机数产生的低差异化序列, 它能 尽可能地将点均匀分布在搜索空间中. 用 Sobol 序列生成种群的表达式如下:
X i = L B + S n × ( U B − L B ) (15) X_i=L B+S_n \times(U B-L B)\tag{15} Xi=LB+Sn×(UBLB)(15)
其中, L B L B LB U B U B UB 为搜索空间的下界和上界, S n ∈ [ 0 , 1 ] S_n \in[0,1] Sn[0,1] 是 Sobol 序列所产生的随机数.

2.2 limit 阈值执行全局搜索阶段

受人工蜂群算法 (artificial bee colony algorithm, A B C ) [ 24 ] \mathrm{ABC})^{[24]} ABC)[24] 中引入 limit 阈值观察解的停滞次数而舍弃食 物源的启示, 将 limit 阈值机制引入 HHO 算法中. limit 阈值机制是指预先设定好一个限制次数 (limit), 观察在 这个限制次数内最优解是否停滞, 如果算法在 limit 阈 值的迭代次数内没有获得更好的最优解, 则进行一定 操作. 通过分析, HHO 算法在迭代的后期只执行局部 开发阶段, 不执行全局搜索阶段而容易陷入局部最优. 因此加入 limit 阈值机制, 在一定迭代次数后, 算法仍 无法获得更好的解, 则使用式 (1) 对个体执行全局搜索 操作生成新个体, 如果新个体的适应度比原个体好, 就 用新个体取代原个体, 帮助算法跳出局部最优. 本文的 limit 取值为 5 .

2.4 动态反向学习

反向学习是 Tizhoosh [ 25 ] { }^{[25]} [25] 于 2005 年提出的, 其基本 思想是为当前解产生一个基于反向学习的解, 同时考 虑当前解以及其反向解, 扩大搜索范围.在该解的位置 上和其相反位置上同时进行搜索, 能提高获得更优解 的可能性. 假设搜索空间为 D D D 维, 那么个体 X i X_i Xi 在第 j j j 维的反向解定义为:
X ~ i j = L B j + U B j − X i j (16) \tilde{X}_{i j}=L B_j+U B_j-X_{i j} \tag{16} X~ij=LBj+UBjXij(16)
其中, X i j ∈ ( L B j , U B j ) , j ∈ 1 , 2 , ⋯   , D , U B j X_{i j} \in\left(L B_j, U B_j\right), j \in 1,2, \cdots, D, U B_j Xij(LBj,UBj),j1,2,,D,UBj L B j L B_j LBj 是第 j j j 维的上下限. 反向学习能够利用自身位置信息生成反 向解, 在当前解的反方向上进行探索, 使候选解更有可 能获得高质量的解.
但是, 基础的反向学习也有一定局限性. 考虑到在 迭代前期自身位置信息的不可靠, 参考价值不大, 因此 利用自身位置信息生成的反向解质量也不高. 随着迭 代次数的增加, 自身位置信息越来越好, 那么生成的反 向解也越来越能够达到真正的反向效果.
因此, 本文提出一种动态的反向学习机制, 给自身 位置信息加入动态因子以更好地引导反向解的产生, 表达式如下:
X ~ i j = L B j + U B j − r × X i j ( 17 ) r = sin ⁡ ( t T ) ( 18 ) \begin{gathered} \tilde{X}_{i j}=L B_j+U B_j-r \times X_{i j} \quad (17)\\ r=\sin \left(\frac{t}{T}\right)\quad (18) \end{gathered} X~ij=LBj+UBjr×Xij(17)r=sin(Tt)(18)
随着迭代次数 t t t 的增加, 动态系数 r r r 的值也非线性 地越来越大, 代表着个体自身位置随着迭代次数的增 加越来越有参考价值. 相比原始的反向学习, 本文所提 出的动态反向学习能够生成更好的反向解.

在这里插入图片描述

3.实验结果

在这里插入图片描述

4.参考文献

[1]张海林,陈泯融.基于混合策略的改进哈里斯鹰优化算法[J].计算机系统应用,2023,32(01):166-178.DOI:10.15888/j.cnki.csa.008911.

5.Matlab代码

6.python代码

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch-Kibana的安装

Kibana的安装 什么是ELK? ELK是Elasticsearch,Logstash,Kibana三大开源框架首字母大写简称,ELK属于大数据,是拆箱即用的,上手比较快 什么是Kibana? Kibana是一个针对ES的开源分析以及可视化平台,用来搜索,查看交互存储在ES索引中的数据,使用Kibana可以通过各类图标进行高级…

Flink(1)-概述

1.1 Apache Flink是什么? 在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题。目前比较流行的大数据处理引擎Apache Spark,…

SpringBoot第14讲:SpringBoot 如何统一异常处理

SpringBoot第14讲:SpringBoot 如何统一异常处理 本文是SpringBoot第14讲,SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢 文章目录 Sp…

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此伪装成客观意见,但无一例外的是,他们想…

网络安全就业前景如何?是否还能入行?

网络安全专业是2015年新设立的专业,作为新兴专业吸引了很多人准备入行,那么它的就业前景怎么样?大致可以分为3个版块来介绍。 1.就业领域前景广阔 目前互联网、通信、新能源、房地产、金融证券、电子技术等行业迫切需要网络安全人才&#x…

22. 算法之图的最短路径

前言 关于图的最短路径问题,是图这种数据结构中的经典问题。也是与我们的生活息息相关的,比如上海四通八达的地铁线路,从一个地铁站,到另一个地铁站,可能有很多种不同的路线。那么,我们选哪种路线&#xf…

JavaFX第五篇 Image图片加载处理

JavaFX第五篇 Image图片加载处理 1. 代码2. 讲解3. 代码仓 图片已经成为每个网站的必备了,不仅可以提升个人网站的标识度而且还可以美化网站, 所以这里需要讲解一下如何加载图片,展示到前台给用户查看。 本次只是简单的讲解如何展示使用&…

【算法证明 七】深入理解深度优先搜索

深度优先搜索包含一个递归,对其进行分析要复杂一些。与上一篇文章一样,还是给节点定义几个状态,然后详细分析深度优先搜索算法有哪些性质。 算法描述 定义状态 v . c o l o r :初始状态为白色,被发现时改为灰色&…

Mysql的SQL性能分析【借助EXPLAIN分析】

性能分析 要说sql有问题,需要拿出证据,因此需要性能分析 Mysql查询优化器(Mysql Query Optimizer) Mysql中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息&#xf…

Xline v0.4.1: 一个用于元数据管理的分布式KV存储

Xline是什么?我们为什么要做Xline? Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低&a…

python机器学习——分类模型评估 分类算法(k近邻,朴素贝叶斯,决策树,随机森林,逻辑回归,svm)

目录 分类模型的评估模型优化与选择1.交叉验证2.网格搜索 【分类】K近邻算法【分类】朴素贝叶斯——文本分类实例:新闻数据分类 【分类】决策树和随机森林1.决策树2.决策树的算法3.代码实现实例:泰坦尼克号预测生死 【集成学习】随机森林1.集成学习2.随机…

LOMO:在受限资源上全参数微调

LOMO:Full Parameter Fine-Tuning for large language models with limited resources IntroductionMethodRethink the functionality of optimizerUsing SGD LOMO: LOw-Memory Optimization 实验参考 Introduction 在这篇文章中,作者的目的…

Go 语言进阶 - 工程进阶

前言: \textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 今天的内容包括以下两个内容。关于实践的内容我会在后续发布出来。 01.语言…

新零售破局丨2023年探索全新电商运维模式——永倍达模式深度解析

新零售破局丨2023年探索全新电商运维模式——永倍达模式深度解析 大家好!我是微三云胡佳东,一家专业的电商软件开发公司的负责人。 近年来,随着电商的高速发展,不少电商平台成为了市场经济的优质榜样,互联网市场竞争也…

设计模型学习-UML图

1,简介 UML图有很多种类型,但掌握其中的类图、用例图和时序图就可以完成大部分的工作。其中最重要的便是「类图」,它是面向对象建模中最常用和最重要的图,是定义其他图的基础。 类图主要是用来显示系统中的类、接口以及它们之间的…

Ubuntu环境下读取罗技G29方向盘信息

本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客 引言 实验室有这么酷的驾驶设备,来了一年还没有实际操作过,早就蠢蠢欲试了,哈哈哈不过之前负责的师兄还在就一直没敢用,现在他毕业了就可…

rust abc(2): 从 hello world 到整数、浮点类型

文章目录 1. 目的2. 搞懂 hello world2.1 代码2.2 fn 的含义2.3 main() 的含义2.4 println! 的含义2.5 行尾分号是必要的吗?2.6 左花括号可以放下一行吗? 3. 数据类型的例子3.1 代码3.2 rust 的注释3.3 编译运行结果3.4 基本数据类型 4. 整数类型的例子4…

SpringMVC系列-3 拦截器

背景 本文作为 SpringMVC系列 的第三篇,以SpringMVC系列-2 HTTP请求调用链为基础,介绍Spring MVC的拦截器。 1.拦截器 SpringMVC的核心实现是DispatcherServlet,本质是一个Servlet实现类,拦截器位于DispatcherServlet逻辑中&am…

MySQL进阶SQL语句2之表连接

目录 1.连接查询 1.1inner(内连接) 1.2left join(左连接) 1.3right join(右连接) 1.4直接查询两个表相同的字段值的数据 2. VIEW(视图) 2.1create view(创建视图…

设计模式之迭代器模式笔记

设计模式之迭代器模式笔记 说明Iterator(迭代器)目录迭代器模式示例类图学生类抽象迭代器角色接口具体迭代器角色类抽象聚合角色接口具体聚合角色类测试类 说明 记录下学习设计模式-迭代器模式的写法。JDK使用版本为1.8版本。 Iterator(迭代器) 意图:提供一种方法顺序访问一…