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

news2024/10/6 1:46:37

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

文章目录

  • 混合策略改进的哈里斯鹰优化算法
    • 1.哈里斯鹰优化算法
    • 2.改进哈里斯鹰优化算法
      • 2.1 初始化种群的改进
        • 2.1.1 初始种群多样化
        • 2.1.2 初始种群精英化
      • 2.2 逃逸能量递减机制的改进
      • 2.4 拉普拉斯交叉算子策略
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要: 针对哈里斯鹰优化算法收敛精度低、易陷入局部最优空间等局限性,提出一种混合策略改进的哈里斯鹰优化算法。采用精英混沌反向学习策略初始化种群,增加初始种群多样性和精英个体数量,提高算法收敛性能;利用引入动态自适应权重的逃逸能量非线性递减策略替代哈里斯鹰算法的线性递减机制,提高算法全局探索和局部开发行为的平衡能力;采用拉普拉斯交叉算子策略生成适应度更高的新个体,提高算法抗停滞能力。

1.哈里斯鹰优化算法

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

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

2.1 初始化种群的改进

2.1.1 初始种群多样化

为增加算法初始种群的多样性, 利用具有较好 遍历均匀性的 Tent 混沌映射 [ 13 ] { }^{[13]} [13] 方法初始化哈里斯 鹰种群。由于 Tent 映射存在小周期和不稳定的周 期点, 因此在 Tent 映射函数中引人随机变量 rand ( 0 , 1 ) × 1 / N (0,1) \times 1 / N (0,1)×1/N, 改进后表达式如下:
y i + 1 = { 2 y i + rand ⁡ ( 0 , 1 ) × 1 N 0 ⩽ y i < 1 2 2 ( 1 − y i ) + rand ⁡ ( 0 , 1 ) × 1 N 1 2 < y i ⩽ 1 (8) y_{i+1}=\left\{\begin{array}{cc} 2 y_i+\operatorname{rand}(0,1) \times \frac{1}{N} & 0 \leqslant y_i<\frac{1}{2} \\ 2\left(1-y_i\right)+\operatorname{rand}(0,1) \times \frac{1}{N} & \frac{1}{2}<y_i \leqslant 1 \end{array}\right.\tag{8} yi+1={2yi+rand(0,1)×N12(1yi)+rand(0,1)×N10yi<2121<yi1(8)
式中: rand ⁡ ( 0 , 1 ) \operatorname{rand}(0,1) rand(0,1) 表示 ( 0 , 1 ) (0,1) (0,1) 之间的随机数; N N N 为 Tent 序列内粒子个数。
利用式 (9) 对 Tent 映射后均匀分布的混沌序列 进行逆映射得到种群个体,其表达式如下:
x i = y i ( u b − l b ) + l b (9) x_i=y_i(\mathrm{ub}-\mathrm{lb})+\mathrm{lb} \tag{9} xi=yi(ublb)+lb(9)
式中: y i y_i yi 为式 (8) 生成的混沌序列; x i x_i xi 为映射后的哈 里斯鹰个体; ub 和 lb 为搜索空间的上下界。

2.1.2 初始种群精英化

根据小孔成像反向学习方法可以增加算法 寻优位置的多样性和种群精英个体的数量, 帮助算 法扩大搜索区域, 从而提高选取更优解的概率。假 设 x j x_j xj x j ′ x_j^{\prime} xj 分别是当前哈里斯鹰最优解和小孔成像 后的反向最优解, a j a_j aj b j b_j bj 分别为第 j j j 维解的上下限, 根据小孔成像原理可得:
x j ′ = ( a j + b j ) 2 + ( a j + b j ) 2 n − x j n (10) x_j^{\prime}=\frac{\left(a_j+b_j\right)}{2}+\frac{\left(a_j+b_j\right)}{2 n}-\frac{x_j}{n} \tag{10} xj=2(aj+bj)+2n(aj+bj)nxj(10)
式中: n n n 为小孔成像调节因子。

2.2 逃逸能量递减机制的改进

猎物逃逸能量 E E E H H O \mathrm{HHO} HHO 平衡全局探索与局部 开发行为的重要参数。 H H O \mathrm{HHO} HHO 中对猎物逃逸能量 E E E 的描述是由最大值线性递减至最小值, 即探索阶段 和开发阶段逃逸能量变化量 Δ E \Delta E ΔE 相同,这种线性能 量递减策略导致算法的探索和发开平衡性较差, 且 无法准确表征实际情况下鹰与猎物多轮围捕逃逸过 程。为此, 在 H H O \mathrm{HHO} HHO 能量递减策略中引人动态自适 应权重 [ 15 ] { }^{[15]} [15], 提高猎物逃逸能量的非线性表达, 从而 平衡算法的探索和开发行为,表达式如下:
E = 2 E 0 ω ( 1 − t / T ) ( 11 ) ω = δ [ ω initial  − ( ω initial  − ω final  ) × 1 e − 1 × ( e t T − 1 ) ] ( 12 ) \begin{gathered} E=2 E_0 \omega(1-t / T) (11)\\ \omega=\delta\left[\omega_{\text {initial }}-\left(\omega_{\text {initial }}-\omega_{\text {final }}\right) \times \frac{1}{e-1} \times\left(\mathrm{e}^{\frac{t}{T}}-1\right)\right](12) \end{gathered} E=2E0ω(1t/T)(11)ω=δ[ωinitial (ωinitial ωfinal )×e11×(eTt1)](12)
式中: ω initial  \omega_{\text {initial }} ωinitial  为权重初值, ω final  \omega_{\text {final }} ωfinal  为权重终值; t t t 为当前迭 代次数; δ \delta δ [ 0 , 1 ] [0,1] [0,1] 之间的随机数; T T T 为最大迭代 次数。

2.4 拉普拉斯交叉算子策略

HHO 算法在迭代后期种群多样性降低且对最 优个体依赖性较大, 当最优个体陷人局部最优后种 群难以跳出局部极值空间。为此,采用拉普拉斯交 叉算子 [ 16 ] { }^{[16]} [16] 策略对迭代后期种群内部适应度最高的 两个个体进行交叉扰动, 然后对比交叉前后个体的 适应度值, 选择适应度值较高的个体进行下一次迭 代。拉普拉斯密度函数和交叉计算公式如下:
f ( x ) = 1 2 b e − ∣ x − a ∣ b ( 13 ) U 1 i = x 1 i + β ∣ x 1 i − x 2 i ∣ ( 14 ) U 2 i = x 2 i + β ∣ x 1 i − x 2 i ∣ ( 15 ) \begin{gathered} f(x)=\frac{1}{2 b} \mathrm{e}^{-\frac{|x-a|}{b}} \quad (13)\\ U_{1 i}=x_{1 i}+\beta\left|x_{1 i}-x_{2 i}\right| \quad (14)\\ U_{2 i}=x_{2 i}+\beta\left|x_{1 i}-x_{2 i}\right|\quad (15) \end{gathered} f(x)=2b1ebxa(13)U1i=x1i+βx1ix2i(14)U2i=x2i+βx1ix2i(15)
式中: U 1 i U_{1 i} U1i U 2 i U_{2 i} U2i 为拉普拉斯算子交叉后产生的子代 个体的位置; a ∈ R a \in R aR 为位置参数; b b b 为尺度参数; x 1 i x_{1 i} x1i x 2 i x_{2 i} x2i 分别为解空间中适应度最高的两个个体的位置; β \beta β 为分布随机数。

算法步骤:

Step 1: 初始化参数, 包括最大迭代次数 T T T 、种群 个体数 N N N 、目标函数的维数 D D D 、初始值上下界 l b 、 u b \mathrm{lb} 、 \mathrm{ub} lbub
Step 2: 利用精英混沌反向学习策略初始化种 群, 随机初始化生成个体数为 N N N 的哈里斯鹰种群 X = [ x i 1 , ⋯   , x i d ] , i = 1 , ⋯   , N , x i d \boldsymbol{X}=\left[x_{i 1}, \cdots, x_{i d}\right], i=1, \cdots, N, x_{i d} X=[xi1,,xid],i=1,,N,xid 表示第 i i i 只鹰在第 d d d 维的位置; 将种群 X \boldsymbol{X} X 代人式 (8), 对每一个个体在每 一维的位置进行迭代,生成均匀分布的混沌序列 Y Y Y; 将种群 X X X 代人式 (10) 得到小孔成像反向种群 Z Z Z, 根 据个体适应度对种群 Y Y Y Z Z Z 进行排序, 选择前 N N N 个 适应度较大的个体组成种群 P P P; 将哈里斯鹰种群 X \boldsymbol{X} X 和种群 P P P 按个体适应度从高到低进行排列, 选择前 N N N 个个体重新组成初始种群 X ′ \boldsymbol{X}^{\prime} X

Step 3 : 更新 E 0 E_0 E0 J J J 值,根据式 (11)计算猎物非线 性逃逸能量 E E E, 实现全局探索和局部搜索的转换。

Step 4: 当 ∣ E ∣ ⩾ 1 |E| \geqslant 1 E1 时,算法执行全局探索过程, 利用式 (1) 更新种群的位置。

Step 5 : 当 ∣ E ∣ < 1 |E|<1 E<1 时,算法执行局部开发过程,为 避免算法陷人局部极值空间,利用拉普拉斯交叉算 子策略对软围捕和硬围捕情况下种群最优和次优个 体的位置信息进行两种更新策略:

(1) 若 ∣ E ∣ ⩾ 0.5 |E| \geqslant 0.5 E0.5 r ⩾ 0.5 r \geqslant 0.5 r0.5 时, 算法执行软围捕策 略, 利用式 (3) 更新哈里斯鹰的位置; 若 ∣ E ∣ ⩾ 0.5 |E| \geqslant 0.5 E0.5 r < 0.5 r<0.5 r<0.5 时, 执行快速俯冲式软围捕, 利用式 (5) 和式 (6) 更新哈里斯鹰位置, 并采用式 (14)、式 (15) 对 两种策略下的解空间进行拉普拉斯算子交叉,更新 种群最优位置。
(2)若 ∣ E ∣ < 0.5 |E|<0.5 E<0.5 r ⩾ 0.5 r \geqslant 0.5 r0.5 时,算法执行硬围捕策 略, 利用式 (4) 更新哈里斯鹰的位置; 若 ∣ E ∣ < 0.5 |E|<0.5 E<0.5 r < 0.5 r<0.5 r<0.5 时, 执行快速俯冲式硬围捕, 利用式 ( 7) 对哈 里斯鹰位置进行更新, 并采用式 (14)、式 (15) 对两 种策略下的解空间进行拉普拉斯算子交叉,更新种 群最优位置。

Step 6: 比较整个搜索范围内所有个体的适应度 值, 不断更新当前全局最优解, 判断是否达到最大迭代次数 T T T, 若满足条件, 则转至步骤 7 , 否则转至步骤 2 。 Step 7:输出最优适应度和位置 X rabbit  X_{\text {rabbit }} Xrabbit 

3.实验结果

在这里插入图片描述

4.参考文献

[1]展广涵,王雨虹,刘昊.混合策略改进的哈里斯鹰优化算法及其应用[J].传感技术学报,2022,35(10):1394-1403.

5.Matlab代码

6.python代码

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

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

相关文章

6.17 、Java初级:锁

1 同步锁 1.1 前言 经过前面多线程编程的学习,我们遇到了线程安全的相关问题,比如多线程售票情景下的超卖/重卖现象. 上节笔记点这里-进程与线程笔记 我们如何判断程序有没有可能出现线程安全问题,主要有以下三个条件: 在多线程程序中 有共享数据 多条语句操作共享数据 多…

移动web-渐变

渐变 使用场景&#xff1a;使用background-image属性实现渐变背景效果 代码&#xff1a;background-image: linear-gradient(参数1,参数2,参数3...); (默认的方位从上到下) 参数1 方位名词: to right, to left 角度deg: 直接写度数 参数2 颜色1 参数3 颜色2... 注意&#xff…

看完这篇 教你玩转渗透测试靶机vulnhub—Corrosion:1

Vulnhub靶机Corrosion:1渗透测试详解 Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a; Vulnhub靶机渗透总结&#xff1a; Vulnhub靶机介绍&#xff1a; vulnhub是个提…

canvas详解01-绘制基本图形

既然我们已经设置了 canvas 环境&#xff0c;我们可以深入了解如何在 canvas 上绘制。到本文的最后&#xff0c;你将学会如何绘制矩形&#xff0c;三角形&#xff0c;直线&#xff0c;圆弧和曲线&#xff0c;变得熟悉这些基本的形状。绘制物体到 Canvas 前&#xff0c;需掌握路…

软件工程——第5章总体设计知识点整理

本专栏是博主个人笔记&#xff0c;主要目的是利用碎片化的时间来记忆软工知识点&#xff0c;特此声明&#xff01; 文章目录 1.总体设计的基本目的&#xff1f; 2.总体设计的任务&#xff1f; 3.总体设计过程由哪两个阶段组成&#xff1f; 4.总体设计的步骤&#xff1f; 5…

【Linux从入门到精通】进程地址空间(虚拟地址 vs 物理地址)

本篇文章会围绕三个问题&#xff08;什么是地址空间&#xff1f;地址空间是如何设计的&#xff1f;为什么要有地址空间&#xff1f;&#xff09;进行展开讲述。其中主要是了解虚拟地址和物理地址的区别。希望本篇文章会对你有所帮助。 文章目录 一、什么是地址空间&#xff1f;…

《机器学习公式推导与代码实现》chapter6-k近邻算法

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 k近邻算法 k近邻(k-nearest neighbor, k-NN)算法是一种经典的分类算法。k近邻算法根据新的输入实例的k个最近邻实例的类别来决定其分类。所以k近…

rust abc(1): 最小环境搭建

文章目录 1. 目的2. 命令集合3. 安装或更新 rust3.1 命令3.2 运行结果 4. 包管理工具 Cargo5. 创建 Rust 的 Hello World 程序: 单个文件6. 创建 Rust 的 Hello World 工程&#xff1a; 基于 Cargo6.1 cargo new 创建工程6.2 cargo run6.3 完整输出6.4 解释 7. IDE/编辑器8. Re…

Jetson安装Anaconda(miniforge3)

1 miniforge3 miniforge集成了Anaconda的核心工具&#xff1a;conda。conda是一个包和环境管理工具。因此&#xff0c; miniforge里面的conda和Anaconda里面的conda完全一样&#xff1b;你能用Anaconda做的安装、升级、删除包等功能&#xff0c;miniforge都能做&#xff1b;你…

angular实现自定义模块路由懒加载;配置自定义模块路由及子路由

图片中绿色表示新建的文件;黄色表示被更改的文件; 1、创建一个新的项目 ng new angularlazyload2、创建一个用户模块,并配置路由 ng g module module/user --routing如图: 3 、在module/模块下创建user组件 ng g component module/user如图: 4、实现路由懒加载 依次…

java00——类和对象

在Java中一切皆对象 什么是对象&#xff1f; 一个人、一只猫、一条狗…这些就是一个对象&#xff1b; 每个对象都有属性和行为。 什么是类&#xff1f; 类即同类别&#xff0c;例如不论男人、女人、黑人、白人…&#xff0c;都是人类&#xff0c;即同一类事务的统称。 类的…

HTB-Sandworm

HTB-Sandworm 立足altas -> silentobserversilentobserver -> 完整的atalsatlas -> rootexploit 扫描最常用的1000个端口。 80会重定向到443。 去看看443有什么吧。 目录扫描可能不会起作用。在concat上面找到了一个有趣的东西。 “如果不知道怎么PGP&#xff1…

Axure教程—折叠面板

本文介绍利用Axure中的动态面板制作折叠面板 一、效果 预览地址&#xff1a;https://3k8az1.axshare.com 二、功能 1、点击标题展开面板内容 2、点击标题折叠面板 三、制作 从默认元件库拖入一个动态面板&#xff0c;设置两个状态&#xff0c;一个状态面板标题&#xff0c;一…

【MySQL】不允许你还不了解创建计算字段

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集&#xff01; &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指…

【开源与项目实战:开源实战】82 | 开源实战三(中):剖析Google Guava中用到的几种设计模式

上一节课&#xff0c;我们通过 Google Guava 这样一个优秀的开源类库&#xff0c;讲解了如何在业务开发中&#xff0c;发现跟业务无关、可以复用的通用功能模块&#xff0c;并将它们从业务代码中抽离出来&#xff0c;设计开发成独立的类库、框架或功能组件。 今天&#xff0c;…

【后端】使用TS编写任务管理系统----Express

文章目录 常见的后端框架安装并且声明文件库项目基本配置编写任务管理后端API添加任务查看任务设置任务完成状态删除任务 总结 node -v v16.13.0https://github.com/dL-hx/server-side 常见的后端框架 expresskoa… 安装并且声明文件库 $ npm i express $ npm i types/exp…

前端vue入门(纯代码)14

内容创作不易&#xff0c;各位帅哥美女&#xff0c;求个小小的赞&#xff01;&#xff01;&#xff01; 【15.给todoList案例添加编辑按钮】 本篇内容在TodoList案例的基础上添加个编辑按钮&#xff0c;要求&#xff1a; &#xff08;1&#xff09;点击编辑按钮后&#xff0c…

轻松学会研华屏幕下载和上传

&#x1f525;一个人走得远了&#xff0c;就会忘记自己为了什么而出发&#xff0c;希望你可以不忘初心&#xff0c;不要随波逐流&#xff0c;一直走下去&#x1f3b6; &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; ✅ 如果觉得博主…

HashMap和HashSet的知识点总结

前言 在之前我们介绍过TreeMap和TreeSet&#xff1a; TreeMapTreeSet 知识点梳理总结_Crystal_bit的博客-CSDN博客 也知道Key-Value和Key模型&#xff0c;但是我们可能还对Hash不太了解&#xff0c;这里我们对Hash了解之后再对HashMap和HashSet的基本使用了解一下。 目录 1…