【智能算法】蜜獾算法(HBA)原理及实现

目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
1.背景
2021年,FA Hashim等人受到自然界中蜜獾狩猎行为启发,提出了蜜獾算法((Honey Badger Algorithm,HBA)。
2.算法原理
2.1算法思想
蜜獾以其独特的狩猎方式而闻名,它利用嗅觉定位猎物,通过挖掘来捕获目标。虽然蜜獾喜欢蜂蜜,但并不擅长找到蜂巢。与此不同的是,蜂蜜向导鸟擅长定位蜂巢,却无法获得蜂蜜。因此,蜜獾会依靠蜂蜜向导鸟的帮助找到蜂巢,并与其共享收获。HBA主要分为挖掘阶段和采蜜阶段。

2.2算法过程
定义强度:
蜜獾的嗅觉强度不仅与猎物的集中强度有关,还与猎物和蜜獾之间的距离有关。Ii是猎物的气味强度,气味强度越高,蜜獾运动越快:
I i = r 2 × S 4 π d i 2 S = ( x i − x i + 1 ) 2 d i = x p rey − x i (1) \begin{aligned}I_i&=r_2\times\frac{S}{4\pi d_i^2}\\S&=(x_i-x_{i+1})^2\\d_i&=x_{p\text{rey}} - x_i\end{aligned}\tag{1} IiSdi=r2×4πdi2S=(xi−xi+1)2=xprey−xi(1)
更新密度因子:
密度因子w控制时变随机化,以确保勘探到开发的平稳过渡。当更新随着迭代次数减少时,密度因子w也会减少随机化:
w = C exp ( − t t m a x ) (2) w=\text{C}\exp(\frac{-t}{t_{\mathrm{max}}})\tag{2} w=Cexp(tmax−t)(2)
挖掘阶段:
在挖掘阶段,蜜獾运动范围类似于心形:
X n e n , = x p r e y + F × β × I × x p r e y + F × r 3 × w × d i × ∣ cos ( 2 π r 4 ) × [ l − cos ( 2 π r 5 ) ] ∣ (3) \begin{aligned} X_{nen}, =x_{prey}+F\times\beta\times I\times x_{prey}+F\times r_{3}\times w\times d_{i}\times |\cos(2\pi r_{4})\times[\text{l}-\cos(2\pi r_{5})]| \end{aligned}\tag{3} Xnen,=xprey+F×β×I×xprey+F×r3×w×di×∣cos(2πr4)×[l−cos(2πr5)]∣(3)

其中 x p r e y x_{prey} xprey是猎物的全局最优位置, β \beta β是蜜獾获取食物的能力。F是改变搜索方向参数:
F = { 1 i f − 1 e l s e , r 6 ≤ 0.5 (4) F=\begin{cases}1&if\\-1&else,\end{cases}r_6\leq0.5\tag{4} F={1−1ifelse,r6≤0.5(4)
采蜜阶段:
蜜獾跟随导蜜鸟找到蜂巢:
x n e w = x p v e y + F × r 7 × w × d i (5) x_{new}=x_{pvey}+F\times r_{7}\times w\times d_{i}\tag{5} xnew=xpvey+F×r7×w×di(5)
伪代码:

3.结果展示

4.参考文献
[1] Hashim F A, Houssein E H, Hussain K, et al. Honey Badger Algorithm: New metaheuristic algorithm for solving optimization problems[J]. Mathematics and Computers in Simulation, 2022, 192: 84-110.
相关文章:
【智能算法】蜜獾算法(HBA)原理及实现
目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,FA Hashim等人受到自然界中蜜獾狩猎行为启发,提出了蜜獾算法((Honey Badger Algorithm,HBA)。 2.算法原理 2.1算法思想 蜜獾以其…...
9、鸿蒙学习-开发及引用静态共享包(API 9)
HAR(Harmony Archive)是静态共享包,可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。…...
[Pytorch]:PyTorch中张量乘法大全
在 PyTorch 中,有多种方法可以执行张量之间的乘法。这里列出了一些常见的乘法操作: 总结: 逐元素乘法:*ortorch.mul()矩阵乘法:ortorch.mm()ortorch.matmul()点积:torch.Tensor.dot()批量矩阵乘法ÿ…...
【软考】防火墙技术
目录 1. 概念2. 包过滤防火墙3. 应用代理网关防火墙4. 状态检测技术防火墙 1. 概念 1.防火墙(Firewall)是建立在内外网络边界上的过滤封锁机制,它认为内部网络是安全和可信赖的,而外部网络是不安全和不可信赖的。2.防火墙的作用是防止不希望的、未经授权…...
OpenHarmony实战:Makefile方式组织编译的库移植
以yxml库为例,其移植过程如下文所示。 源码获取 从仓库获取yxml源码,其目录结构如下表: 表1 源码目录结构 名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件,及测试脚本yxml/Makefile编译组织文件yxml/.gitat…...
嵌入式C语言--GPT通用定时器
嵌入式C语言–GPT通用定时器 嵌入式C语言--GPT通用定时器 嵌入式C语言--GPT通用定时器一. GPT基本概念二. GPT的作用三. GPT通道的四个状态四. Continuous/One-Shot模式3.1)Continuous模式3.2)One-Shot模式 一. GPT基本概念 GPT即General Purpose Timer…...
『Apisix系列』破局传统架构:探索新一代微服务体系下的API管理新范式与最佳实践
一、『Apisix安装部署』 🚀 1.1 手把手教你从零部署APISIX高性能API网关 二、『Apisix入门篇』 🚀 2.1 从零到一掌握Apache APISIX:架构解析与实战指南 三、『Apisix进阶篇』 🚀 3.1 动态负载均衡:APISIX的实战演练…...
如何在极狐GitLab 自定义 Pages 域名、SSL/TLS 证书
本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户…...
React Native 应用打包
引言 在将React Native应用上架至App Store时,除了通常的上架流程外,还需考虑一些额外的优化策略。本文将介绍如何通过配置App Transport Security、Release Scheme和启动屏优化技巧来提升React Native应用的上架质量和用户体验。 配置 App Transport…...
单链表就地逆置
算法思想:构建一个带头结点的单链表L,然后访问链表中的每一个数据结点,将访问到的数据结点依此插入到L的头节点之后。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef s…...
MTU/TCPMSS/VLAN/ACCESS/TRUNK/HYBRID
MTU RFC标准定义以太网的默认MTU值为1500 最小64字节是为了保证最极端的冲突能被检测到,64字节是能被检测到的最小值;最大不超过1518字节是为了防止过长的帧传输时间过长而占用共享链路太长时间导致其他业务阻塞。所以规定以太网帧大小为64~1518字节&am…...
Spring Boot的基础知识和应用
在快速发展的软件开发领域,Spring Boot已经成为了一个广受欢迎的框架,它极大地简化了Spring应用的初始搭建以及开发过程。Spring Boot遵循“约定优于配置”的原则,通过默认配置减少了开发者的配置工作量,使得开发者能够更专注于业…...
【Linux】详解动静态库的制作和使用动静态库在系统中的配置步骤
一、库的作用 1、提高开发效率,让开发者所有的函数实现不用从零开始。 2、隐藏源代码。 库其实就是所有的.o文件用特定的方式进行打包形成一个文件,各个.o文件包含了源代码中的机器语言指令。 二、动态库和静态库的制作和使用 2.1、静态库的制作和使用…...
开源模型应用落地-qwen1.5-7b-chat-LoRA微调(二)
一、前言 预训练模型提供的是通用能力,对于某些特定领域的问题可能不够擅长,通过微调可以让模型更适应这些特定领域的需求,让它更擅长解决具体的问题。 本篇是开源模型应用落地-qwen-7b-chat-LoRA微调(一)进阶篇,学习通义千问最新1.5系列模型的微调方式。 二、术语介绍 …...
【现代企业管理】企业组织结构和组织文化的理论与实践——以华为为例
一、前言 管理是科学和艺术的统一体,它是企业成长的保证。企业管理中,管理者面对的往往不是一个完整的系统,而是各种不具有整体规律性的零碎信息的总和,因此进行信息的整合和研究是管理的重点和关键。 组织管理作为管理的四大职…...
【Kotlin】Sequence简介
1 前言 序列(Sequence)是 Kotlin 中为方便操作集合及其元素而定制的接口,是一个延迟获取数据的集合,只有需要元素时才会生产元素。在处理大量数据时,序列可以显著地提升性能。 Sequence 类似 Java 中的 Stream…...
【Java】Thread详解
🍒前言 本文将从以下几方面来展开对Thread的介绍。 1.线程创建 2.线程中断 3.线程等待 4.线程休眠 在前面的文章中,已经总结了关于Thread的一些理解。 在阅读本文之前,最好对其有一些基础的了解。 文章链接: 【JavaSE】进程是什么?…...
QT TCP和UDP网络编程
代表网络概念的QTcpSocket,QTcpServer和QUdpSocket,以及QNetworkRequest,QNetworkReply和QNetworkAccessManager之类的高级类来执行使用通用协议的网络操作。 它还提供了QNetworkConfiguration,QNetworkConfigurationManager和QNetworkSession等,实现承载…...
Maven入门指南:构建与管理Java项目的利器
引言 在Java开发领域,项目构建和管理是一个至关重要的环节。随着项目规模和复杂度的不断增加,有效地管理项目的依赖、构建过程以及部署流程变得尤为关键。在这样的背景下,Apache Maven作为一款优秀的项目管理工具应运而生,成为了…...
EXCEL-VB编程实现自动抓取多工作簿多工作表中的单元格数据
一、VB编程基础 1、 EXCEL文件启动宏设置 文件-选项-信任中心-信任中心设置-宏设置-启用所有宏 汇总文件保存必须以宏启动工作簿格式类型进行保存 2、 VB编程界面与入门 参考收藏 https://blog.csdn.net/O_MMMM_O/article/details/107260402?spm1001.2014.3001.5506 二、…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
