当前位置: 首页 > news >正文

超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)

测试函数为F9

在MATLAB中执行程序结果如下:

在这里插入图片描述

在Python中执行程序结果如下:

在这里插入图片描述

哈里斯鹰优化算法(Harris Hawks Optimization , HHO)是 Heidari等[1]于2019年提出的一种新型元启发式算法,设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突然袭击的狩猎风格,算法的寻优过程包括探索、探索与开发转换和开发三个阶段。具有需调参数少、原理简单易实现、局部搜索能力强等优点。在数值和工程优化、图像识别、故障诊断、电网优化设计、等工程领域得到广泛的应用。

本文作者将详细介绍其原理、代码实现,并分析可以进行改进的方向。

00 目录

1 哈里斯鹰优化算法(HHO)原理

2 代码目录

3 算法性能

4 算法的改进与利用

5 源码获取

01 哈里斯鹰优化算法(HHO)原理

HHO算法通过模仿哈里斯鹰在捕食猎物过程中的合作行为以及突然袭击的狩猎风格。HHO算法共有三个阶段,全局探索阶段、全局探索向局部开发转换阶段和局部开发阶段。在HHO 算法中,哈里斯鹰的位置被当作为候选解,迭代的最佳候选解为猎物。

1.1 探索阶段

探索阶段,哈里斯鹰种群个体随机栖息在各地,根据其敏锐的眼睛在沙漠空间中跟踪和探测猎物,通过两种策略对猎物进行等概率的全局搜索,P<0.5时,每只鹰会根据其他成员和猎物位置进行移动,P>=0.5时,哈里斯鹰会随机栖息在种群范围内的某棵树上,其表达式如下:

在这里插入图片描述

其中, Urand为第t代种群中随机选择的哈里斯鹰个体;Uprey表示猎物位置;Um表示当前哈里斯鹰种群的平均位置;ub, lb分别为搜索范围上限和下限;rand1234和P均为(0,1)区间内的随机数。

1.2 探索与开发转换阶段

HHO算法根据哈里斯鹰捕猎习性将其捕猎过程划分为探索行为和开发行为,猎物在逃跑过程中能量会逐渐降低,因此采用猎物逃逸能量动态选取探索行为或开发行为进行捕猎,猎物逃逸能量定义为:

在这里插入图片描述

其中,E0为猎物的初始逃逸能量,是在(-1,1)之间的随机数,t为当前进化代数,M为种群最大进化代数。当|E|>=1时进入探索阶段,|E|<1时进入开发阶段。

1.3 开发阶段

在找到目标猎物后,哈里斯鹰在开发阶段发起攻击,其会在猎物周围形成一圈围攻,等待突然袭击的机会。然而,实际的捕食过程是复杂的,例如,被围困的猎物可能会逃脱包围圈,哈里斯鹰可以根据猎物的行为作出必要的调整。因此,HHO采用四种策略来模仿哈里斯鹰的狩猎行为,这四种策略分别是软包围、硬包围、渐进式快速俯冲的软包围和渐进式快速俯冲的硬包围。

定义Sp为猎物逃逸概率,其为(0,1)之间的随机数,Sp<0.5表示有逃脱机会,结合猎物逃逸能量|E|和猎物逃逸概率Sp确定狩猎策略。

a. 当0.5 ≤ |E| < 1且Sp ≥ 0.5时-软包围

猎物仍然有逃逸的能量,试图通过随机的跳跃逃出包围圈,此时,鹰使用软包围捕食猎物以使其精疲力尽,从而使鹰可以突击突袭,其更新公式为:

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

其中,ΔU为猎物位置和当前个体位置之差,J~U(0,2)。

b. 当|E| < 0.5且Sp ≥ 0.5时-硬包围

猎物没有逃逸的能量,也没有逃脱的机会,哈里斯鹰使用硬包围捕食猎物以进行最后突击突袭,其更新公式为:
在这里插入图片描述

c. 当0.5 ≤ |E| < 1且Sp < 0.5时-渐进式快速俯冲软包围

猎物有机会从包围圈中逃脱,且有足够能量逃脱鹰的捕捉,但是哈里斯鹰会围绕猎物采用渐进式快速俯冲软包围,并根据猎物的欺骗性行为逐渐纠正其位置和方向,从而选择最佳位置来捕捉猎物,通过以下两个策略实施。当第一个策略无效时,执行第二个策略,其更新公式为:
在这里插入图片描述

其中,F(.)是适应度函数;S是元素为(0,1)之间d维随机向量;Levy为莱维飞行策略,其公式为:
在这里插入图片描述

d. 当|E| < 0.5且Sp < 0.5时-渐进式快速俯冲硬包围

猎物筋疲力尽,但仍有机会逃脱,哈里斯鹰通过渐进式快速俯冲硬包围猎物,此策略鹰的更新位置公式与渐进式快速俯冲的软包围中的公式相似。在这种情况下,哈里斯鹰群试图缩短它们与目标猎物的平均位置的距离,其更新公式为:

在这里插入图片描述

算法流程如下:

在这里插入图片描述

02 代码目录

在这里插入图片描述

代码包含MATLAB和Python,考虑到很多同学获取代码后,MATLAB代码部分有乱码(MATLAB版本问题),可以将MATLAB版本改为2020及以上,或使用乱码解决文件夹中的txt文件即可。

代码都经过作者重新注释编写,代码更清爽,可读性强。

部分代码:

MATLAB:

在这里插入图片描述

在这里插入图片描述

Python:

在这里插入图片描述

在这里插入图片描述

03 算法性能

采用标准测试函数初步检验其寻优性能

在MATLAB中执行程序结果如下:

在这里插入图片描述

Python中执行程序结果如下:
在这里插入图片描述

MATLAB和Python都进行了F9函数的测试,测试效果都不错,其收敛速度和精度很好。

04 算法的改进与利用

根据没有免费的午餐(NFL)定理[2],没有一个算法可以处理所有的优化问题,即每个算法都有其优势和局限性,这也激励着学者提出各种改进的算法来解决不同类型的优化问题,同时也为算法间的混合利用提供了参考。这一节作者就简要谈一下HHO的可改进之处及其可利用的优点。

4.1 改进

HHO算法通过4种策略进行局部开发,在开发阶段具有良好的表现,但其探索阶段对于更复杂的优化问题效率并不高,可能会过早收敛,因此可以对其探索阶段的更新方式进行改进,避免在探索阶段种群陷入局部最优。

其次,HHO依赖于一个线性递减方法来改变逃逸能量因子,这会导致勘探和开发不平衡,且无法准确表征实际情况下鹰与猎物多轮围捕逃逸过程,因为在迭代后期|E|必然小于1,只进行局部搜索,因此其搜索并不呈现全局性,若在前期种群接近局部最优,则可能导致后期算法陷入局部最优而无法跳出。可以通过一种非线性递减的方法来动态调整算法参数E。

4.2 利用

由HHO的理论可知,其在开发阶段采用了4种策略来围捕猎物,这样的策略能够使算法具有良好的局部搜索性能,可以作为其他算法提高局部搜索能力的方法之一。

05 源码获取

在GZH (KAU的云实验台) 后台回复 HHO

参考文献

[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] Wolpert DH, Macready WG. No free lunch theorems for optimization. IEEE transactions on evolutionary computation 67–82, 1997.

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

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!​

相关文章:

超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)

测试函数为F9 在MATLAB中执行程序结果如下&#xff1a; 在Python中执行程序结果如下&#xff1a; 哈里斯鹰优化算法(Harris Hawks Optimization , HHO)是 Heidari等[1]于2019年提出的一种新型元启发式算法&#xff0c;设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突…...

git 切换远程地址分支 推送到指定地址分支 版本回退

切换远程地址 1、切换远程仓库地址&#xff1a; 方式一&#xff1a;修改远程仓库地址 【git remote set-url origin URL】 更换远程仓库地址&#xff0c;URL为新地址。 git remote set-url https://gitee.com/xxss/omj_gateway.git 方式二&#xff1a;先删除远程仓库地址&…...

YOLOv3-YOLOv8的一些总结

0 写在前面 这个文档主要总结YOLO系列的创新点&#xff0c;以YOLOv3为baseline。参考(抄)了不少博客&#xff0c;就自己看看吧。有些模型的trick不感兴趣就没写进来&#xff0c;核心的都写了。 YOLO系列的网络都由四个部分组成&#xff1a;Input、Backbone、Neck、Prediction…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)控件的部分公共属性和事件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;控件的部分公共属性和事件 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、公共属性 常用的公共属性有&#xff1a; 宽(with)、高(height)、…...

最新同步云盘推荐:实现轻松管理与便捷同步的理想选择

同步云盘——可以轻松管理文件&#xff0c;同步不同设备之间的文件&#xff0c;受到了许多用户的青睐&#xff01;目前国内有什么值得推荐的同步云盘&#xff1f; Zoho Workdrive同步云盘&#xff0c;助您轻松管理文件&#xff0c;进行多设备同步&#xff0c;便捷使用文件&…...

(第27天)Oracle 数据泵转换分区表

在Oracle数据库中,分区表的使用是很常见的,使用数据泵也可以进行普通表到分区表的转换,虽然实际场景应用的不多。 创建测试表 sys@ORADB 2022-10-13 11:54:12> create table lucifer.tabs as select * from dba_objects;Table created.sys...

业务上需要顺序消费,怎么保证时序性?

消息传输和消费的有序性&#xff0c;是消息队列应用中一个非常重要的问题&#xff0c;在分布式系统中&#xff0c;很多业务场景都需要考虑消息投递的时序。例如&#xff0c;电商中的订单状态流转、数据库的 binlog 分发&#xff0c;都会对业务的有序性有要求。今天我们一起来看…...

ubuntu 开机提示 you are in emergency mode,journalctl -xb

进入系统界面 回车输入&#xff1a; journalctl -xb -p3 查看出问题的盘符类型。 然后 lsblk 查看挂载情况 我的是/dev/sda3没有挂载上&#xff0c;对应/home目录&#xff0c;注意这时候不要直接mount 需要先修复 fsck -y /dev/sda3等待修复完成&#xff0c;在重新挂载 moun…...

【Hadoop面试】HDFS读写流程

HDFS&#xff08;Hadoop Distributed File System&#xff09;是GFS的开源实现。 HDFS架构 HDFS是一个典型的主/备&#xff08;Master/Slave&#xff09;架构的分布式系统&#xff0c;由一个名字节点Namenode(Master) 多个数据节点Datanode(Slave)组成。其中Namenode提供元数…...

B01、JVM与Java体系结构-01

字节码与多语言混合编程 字节码概述&#xff1a; 我们平时说的java字节码&#xff0c;指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为&#xff1a;jvm字节码。不同的编译器&#xff0c;可以编译出相同的字节码文件&…...

Python:Jupyter

Jupyter是一个开源的交互式计算环境&#xff0c;由Fernando Perez和Brian Granger于2014年创立。它提供了一种方便的方式来展示、共享和探索数据&#xff0c;并且可以与多种编程语言和数据格式进行交互。Jupyter的历史可以追溯到2001年&#xff0c;当时Fernando Perez正在使用P…...

macos苹果电脑开启tftp server上传fortigate60e固件成功

cat /System/Library/LaunchDaemons/tftp.plist<?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist…...

如何使用ArcGIS Pro裁剪影像

对影像进行裁剪是一项比较常规的操作&#xff0c;因为到手的影像可能是多种范围&#xff0c;需要根据自己需求进行裁剪&#xff0c;这里为大家介绍一下ArcGIS Pro中裁剪的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像和行政区…...

Tekton 构建容器镜像

Tekton 构建容器镜像 介绍如何使用 Tektonhub 官方 kaniko task 构建docker镜像&#xff0c;并推送到远程dockerhub镜像仓库。 kaniko task yaml文件下载地址&#xff1a;https://hub.tekton.dev/tekton/task/kaniko 查看kaniko task yaml内容&#xff1a; 点击Install&…...

netty-daxin-4(httpwebsocket)

文章目录 学习链接http服务端NettyHttpServerHelloWorldServerHandler 客户端ApiPost websocket初步了解为什么需要 WebSocket简介 浏览器的WebSocket客户端客户端的简单示例客户端的 APIWebSocket 构造函数webSocket.readyStatewebSocket.onopenwebSocket.onclosewebSocket.ο…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《市场环境下考虑全周期经济效益的工业园区共享储能优化配置》

这个标题涉及到工业园区中共享储能系统的优化配置&#xff0c;考虑了市场环境和全周期经济效益。以下是对标题中各个要素的解读&#xff1a; 市场环境下&#xff1a; 指的是工业园区所处的商业和经济背景。这可能包括市场竞争状况、电力市场价格波动、政策法规等因素。在这一环…...

WPF——命令commond的实现方法

命令commond的实现方法 属性通知的方式 鼠标监听绑定事件 行为&#xff1a;可以传递界面控件的参数 第一种&#xff1a; 第二种&#xff1a; 附加属性 propa&#xff1a;附加属性快捷方式...

信息收集 - 域名

1、Whois查询: Whois 是一个用来查询域名是否已经被注册以及相关详细信息的数据库(如:域名所有人、域名注册商、域名注册日期和过期日期等)。通过访问 Whois 服务器,你可以查询域名的归属者联系方式和注册时间。 你可以在 域名Whois查询 - 站长之家 上进行在线查询。 2、…...

基于YOLOv8深度学习的路面标志线检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

leetCode算法—1.两数之和

难度&#xff1a;* 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你…...

oracle 设置访问白名单

有相关安全策略会要求部分 ip 禁止访问oracle数据库&#xff0c;那么如何实现对IP的白名单设置呢&#xff1f;又如何细分到对用户的限制访问呢&#xff1f;本文将介绍方法给大伙。 1、禁止IP访问数据库&#xff08;修改sqlnet.ora方式实现&#xff09; vi $ORACLE_HOME/network…...

Flink系列之:窗口关联

Flink系列之&#xff1a;窗口关联 一、窗口关联二、INNER/LEFT/RIGHT/FULL OUTER三、SEMI四、ANTI五、限制 一、窗口关联 适用于流、批窗口关联就是增加时间维度到关联条件中。在此过程中&#xff0c;窗口关联将两个流中在同一窗口且符合 join 条件的元素 join 起来。窗口关联…...

Eolink 两项产品入选 2023 年广东省名优高新技术产品名录!

近日&#xff0c;2023 年广东省名优高新技术产品正式名单已经发布&#xff0c;Eolink 旗下两项产品荣幸入选&#xff01; “广东省名优高新技术产品”是广东省对高新技术产品领域的升级和优化的重要措施。名优产品的评选不仅强调了技术的先进性&#xff0c;更对产品的质量、市…...

054:vue工具 --- BASE64加密解密互相转换

第054个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…...

自动驾驶学习笔记(二十)——Planning算法

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 参考线平滑 双层状态机 EM Planner …...

adb的使用

Adb windows 环境搭建 &#xff08;1&#xff09;将adb包安装或者解压到一个路径&#xff0c;并拿到adb.exe所在的路径值&#xff0c;例如,D:\Tools\adb &#xff08;2&#xff09;将路径值放进windows环境变量 我的电脑&#xff08;此电脑图标&#xff09;右键–》 选择“属…...

会旋转的树,你见过吗?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…...

Azure Machine Learning - 提示工程简介

OpenAI的GPT-3、GPT-3.5和GPT-4模型基于用户输入的文本提示工作。有效的提示构造是使用这些模型的关键技能&#xff0c;涉及到配置模型权重以执行特定任务。这不仅是技术操作&#xff0c;更像是一种艺术&#xff0c;需要经验和直觉。本文旨在介绍适用于所有GPT模型的提示概念和…...

服务器的安全包括哪些方面?服务器安全该如何去加固处理?

服务器安全包括如下几个方面&#xff1a; 系统安全&#xff1a;包括操作系统的安全性、系统的漏洞和补丁管理、用户管理、文件权限和访问控制等。 网络安全&#xff1a;包括网络拓扑结构、网络设备的安全性、网络协议的安全性、防火墙和入侵检测等。 数据安全&#xff1a;包括数…...

为什么在Android中需要Context?

介绍 在Android开发中&#xff0c;Context是一个非常重要的概念&#xff0c;但是很多开发者可能并不清楚它的真正含义以及为什么需要使用它。本文将详细介绍Context的概念&#xff0c;并解释为什么在Android应用中需要使用它。 Context的来源 Context的概念来源于Android框架…...

制作视频模板/应用宝aso优化

宣传官网 xb.exrick.cn在线Demo xboot.exrick.cn开源版Github地址 github.com/Exrick/x-bo…开发文档 www.kancloud.cn/exrick/xboo…获取完整版 xpay.exrick.cn/pay?xboot JWT JSON Web Token (JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑的、自包含的方式&am…...

阿里云做的网站如何发布/每日精选12条新闻

课程首页在&#xff1a;http://blog.csdn.net/sxhelijian/article/details/11890759【项目5-字符串统计】阅读下面的程序&#xff0c;完成类似的功能#include<iostream> #include<cstdio> using namespace std; int main() { char str[50]; int i0,n0; cout…...

哈尔滨做网站的oeminc/seo优化公司排名

据市场研究公司DellOro Group最新报道指出&#xff0c;数据中心和企业园区向更高速度以太网的过渡将带动未来五年以太网交换机的销售。 该调研公司表示&#xff0c;数据中心大部分支出都用于25 Gbps交换机&#xff0c;而企业园区升级则要使用大量2.5/5.0 Gbps交换机。 DellOro …...

个人可以备案几个网站/seo刷排名公司

摘要 Eclipse平台的设计目的是建立一个集成开发环境(IDE)以及其它任意的工具。本文是对Eclipse平台的一般性技术的介绍。第1部分展示了它的技术架构&#xff0c;第2部分展示了Eclipse平台如何被用于构建Java开发环境。 2001年7月17日 修订历史 1.02001年7月17日Jim des Ri…...

asp.net做网站源代码/站长统计app官方网站

来源&#xff1a;fhods Blog作者&#xff1a;fhod 小财说明&#xff1a;文章已发表于***手册07年10期&#xff0c;转载请注明出处&#xff01;对明小子QQ密码特工软件的分析 ----小财今天无聊给一朋友讲解QQ盗取原理&#xff0c;从网上找了一个工具 “明小子QQ密码特工”结果发…...

网站产品后台界面怎么做/seo专员的工作内容

1题目描述2题目要求3额外的信息 1、题目描述 问题C&#xff1a;“合作和导航” 由于道路的数量&#xff0c;美国许多地区的交通容量有限。例如&#xff0c;在大西雅图地区&#xff0c;司机在交通高峰时段遇到长时间的延误&#xff0c;因为交通流量超过了道路网络的设计容量。…...