【智能算法】河马优化算法(HO)原理及实现
目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
- 5.代码获取
1.背景
2024年,MH Amiri受到自然界河马社会行为启发,提出了河马优化算法(Hippopotamus Optimization Algorithm, HO)。


2.算法原理
2.1算法思想
HO从河马社会行为中汲取灵感,模拟了它们在河流或池塘中的位置更新、对捕食者的防御策略和逃避策略。

2.2算法过程
河马在河流或池塘中的位置更新(探索)
河马群体结构复杂,由若干成年雌性、幼崽、多只成年雄性以及一只占统治地位的雄性(即群体的领导)组成。群体中的领导雄性负责保护群体和领域免受外来威胁。在河马的社交结构中,雌性通常被置于雄性的保护之下。随着成年雄性河马的成长,它们往往会被领导雄性赶出原有的群体,这些雄性河马则需要通过吸引雌性或与其他成熟雄性竞争以建立自己的领导地位。

其中,χimhippo表示雄性河马的位置,Dhippo表示优势河马的位置。参数为:

式(6)和(7)描述了雌性或未成熟河马在兽群中的位置(χiFBhippo)。大多数未成熟的河马都靠近它们的母亲,但由于好奇,有时未成熟的河马会与兽群分开或远离它们的母亲。当T大于0.6时,表示未成熟的河马已经离开了母亲(式5)。当r6大于0.5时,表示未成熟的河马已经离开了母亲,但仍在兽群内或附近(式7),否则表示未成熟的河马已经离开了兽群。未成熟河马和雌性河马的这种行为是根据方程建立模型的。(6)、(7)。h1、h2是从h方程中五种场景中随机选取的数字或向量。在式(7)中,r7是0到1之间的随机数。式(8)、(9)描述了雄性和雌性或未成熟河马在群体中的位置更新。Fi为目标函数值。


使用h向量,I1和I2场景增强了算法的全局搜索,提高了算法的探索能力。
河马防御掠食者(探索)
河马采用的主要防御策略是迅速转向捕食者,并发出响亮的叫声,以阻止捕食者靠近它们。在这个阶段,河马可能会表现出接近捕食者的行为,以诱导其撤退,从而有效地抵御潜在的威胁。


式(11)表示第i只河马到捕食者的距离。在这段时间里,河马采取了一种基于fpredator因子的防御行为来保护自己免受捕食者的攻击。如果f捕食者j小于Fi,表明捕食者离河马非常近,在这种情况下,河马迅速转向捕食者并向其移动,使其撤退。如果f捕食者j较大,则表明捕食者或入侵实体距离河马的领地较远。



如果F HippoR i大于F,则表示该河马已被猎杀,将有另一头河马在群中取而代之,否则猎人逃跑,该河马将返回群中。在第二阶段,在全局搜索过程中观察到显著的增强。第一阶段和第二阶段相辅相成,有效地降低了陷入局部最小值的风险。

河马逃离捕食者(开发)
河马面对捕食者的另一种行为是当河马遇到一群捕食者或无法用防御行为击退捕食者时。在这种情况下,河马会试图离开该区域。

从三种场景中随机选择:

伪代码

3.结果展示


4.参考文献
[1] Amiri M H, Mehrabi Hashjin N, Montazeri M, et al. Hippopotamus optimization algorithm: a novel nature-inspired optimization algorithm[J]. Scientific Reports, 2024, 14(1): 5032.
5.代码获取
资源清单
相关文章:
【智能算法】河马优化算法(HO)原理及实现
目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,MH Amiri受到自然界河马社会行为启发,提出了河马优化算法(Hippopotamus Optimization Algorithm, HO)。 2.算法原理 2.1算法思想 …...
spring基础使用(案例)
基于xml使用: 准备: 1.Dao层(接口): public interface UserDao {public void save(); } 1.1 Dao层(实现类): public class UserDaoIim implements UserDao {Overridepublic vo…...
相同的树LeetCode
100. 相同的树 - 力扣(LeetCode100. 相同的树 - 力扣( 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 /*** Definition…...
Vue中如何抽取部分代码到单独的ts文件
Vue中如何抽取部分代码到单独的ts文件 本文代码基于 简单示例 这段代码,是比较通用的代码,我想抽取成一个ts文件,来供其他地方调用。 const groupData reactive({groupList:[] as Array<GroupV2Response>,current:{} as GroupV2Re…...
山东齐鲁文化名人颜廷利:朱郭有文才,曲高‘菏’寡星光路
山东齐鲁文化名人颜廷利教授表示,朱郭(谐音‘祖国’)有文才,《曲高‘菏’寡》星光路… 山东菏泽歌手朱之文在2011年凭借一首《滚滚长江东逝水》一夜成名, 十多年之后的今天,菏泽市网络红人郭有才靠一首《诺…...
嵌入式学习70-复习(wireshark使用和http协议)
知识零碎: ssize_t 头文件:<sys/types.h> 有符号整型 --------------------------------------------------------------------------------------------------------------------------------- wireshark 1.sudo wireshark 2.选择 any &…...
idea配置MySQL提示
点击sql语句,然后再选择show context actions 然后再选择Inject language or reference 然后再选择MySQL 然后我们会发现sql语句变颜色了 如果表是红色 那么需要我们连接mysql的对于的数据库...
如何利用AI生成答辩PPT?笔灵AI答辩PPT,智能识别关键点
很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路,一窍不通。但这并不是你们的错,对于平时没接触过相关方面,第一次搞答辩PPT的人来说,这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…...
速盾:怎么设置cdn加速小程序图片?
小程序是一种基于微信平台的应用程序,为了提升小程序的用户体验,我们可以通过设置CDN(内容分发网络)来加速小程序中的图片加载速度。CDN是一种分布式服务,它将原始服务器的存储内容复制到在全球各地的缓存服务器&#…...
Android bootchart 分析启动性能工具使用
bootchart简介 bootchart 可为整个系统提供所有进程的 CPU 和 I/O 负载细分。该工具不需要重建系统映像,可以用作进入 systrace 之前的快速健全性检查。 1. 板端配置: 在Android 板端启用 bootchart,请运行以下命令: 2. Bootch…...
一键开启,盲盒小程序里的梦幻奇遇
在这个充满惊喜与未知的数字时代,盲盒小程序以其独特的魅力成为了许多人的新宠。只需一键开启,你就能踏入一个充满梦幻奇遇的世界,探索未知的惊喜与乐趣。 盲盒小程序不仅仅是一个简单的购物平台,它更是一个充满神秘与惊喜的宝藏库…...
如何进行并行执行的诊断与调优 —— 《OceanBase 并行执行》系列 6
在诊断并行执行问题时,我们可以从两个主要方面展开分析。首先,从整体系统层面进行考量,比如检查网络是否畅通、磁盘IO是否过载、CPU资源是否已用满;其次,针对具体的SQL语句进行深入剖析,定位问题SQL&#x…...
【Ubuntu系统hgfs共享文件夹不显示问题解决】
问题描述:为了实现本地物理机与虚拟机之间的文件传输,我们通常采用共享文件夹的方式。但是在Vmware虚拟机使用Ubuntu系统的过程中,由于某种特殊或意外原因,Ubuntu系统或发生/mnt/hgfs共享文件夹丢失不显示的问题。以下是本次问题发…...
C++的相关知识集
1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效,简洁,快速和可移植的传统。 2 起源 与c语言一样,c也是在贝尔实验室诞生的,Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…...
解决Jmeter报错 :Error generating the report: java.lang.NullPointerException
当我们在使用命令行的方式来执行jmeter 脚本的时候,例如 ./jmeter -n -t /opt/jmeter/script/test.jmx -Juser50 -Jtime100 -l /opt/jmeter/script/restult2.jtl 上面脚本的含义解释如下: -n -t 通过命令行的方式执行脚本test.jmx -Juser50 并发用户…...
QT外部库:zlib
前言 新建项目:pro文件中新增代码 LIBS -lz 在main.cpp函数中#include "zlib.h",如果此时运行代码提示没有找到对应的函数,那么就qt安装目录:D:\C\qt5.12.7\Tools\mingw730_64\x86_64-w64-mingw32\include(这里是博主…...
钡铼技术BL205模块分布式IO集成应用风电场状态监测
在风力发电这一绿色能源领域,高效、精确的状态监测对于提升风电场运维效率、保障设备安全运行至关重要。随着工业4.0和数字化转型浪潮的推进,传统的监测方式已难以满足日益增长的数据处理与分析需求。钡铼技术BL205模块的出现,为风电场状态监…...
java博客目录
博客目录 基础知识 集合列表 List ArrayList: LinkedList: Set Map TreeMap 设计模式 单例模式: 工厂方法...
从零开始学习Linux(8)----自定义shell
shell从用户读入字符串“ls”,shell建立一个新的进程,然后在那个进程中运行ls程序并等待那个进程结束。然后shell读取新的一行输入,建立一个新的进程,在这个进程中运行程序,并等待这个进程结束。所以要写一个shell&…...
《大数据分析-数据仓库项目实战》学习笔记
目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
