【智能优化算法】河马优化算法(Hippopotamus optimization algorithm,HO)

河马优化算法(Hippopotamus optimization algorithm,HO)是发表在中科院二区期刊“Scientific Reports”的文章“Hippopotamus Optimization Algorithm: a Novel Nature-Inspired Optimization Algorithm”上的算法。

01.引言

河马优化算法(Hippopotamus optimization algorithm,HO)是通过从河马观察到的固有行为中汲取灵感而构思的,展示了一种创新的元启发式方法。HO在概念上是使用一个三相模型来定义的,该模型结合了它们在河流或池塘中的位置更新,对捕食者的防御策略和逃避方法,这些都是数学公式。在161个基准函数中,它在寻找最优值方面获得了115个最高排名,包括单峰和高维多峰函数,固定维多峰函数,以及CEC 2019测试套件和CEC 2014测试套件的10、30、50和100维度以及Zigzag模式基准函数,这表明HO在开发和探索方面都表现出了显著的熟练程度。此外,它有效地平衡了探索和利用,支持搜索过程。根据解决四个不同的工程设计挑战的结果,HO有效地实现了最有效的解决方案,同时坚持遵守指定的约束条件。HO算法的性能评估涵盖了各个方面,包括与WOA、GWO、SSA、PSO、SCA、FA、GOA、TLBO、MFO和IWO的比较,后者被认为是研究最广泛的元启发式算法,AOA是最近开发的算法,CMA - ES是高性能优化器,因其在IEEE CEC竞赛中取得成功而得到认可。

02.代码流程

HO从河马生活中观察到的三种突出的行为模式中获得灵感:河马群由几只雌性河马、河马幼崽、多只成年雄性河马和一只占统治地位的雄性河马(兽群的领袖)组成。由于它们天生的好奇心,幼河马和幼河马经常表现出离开群体的倾向。因此,它们可能会被孤立,成为捕食者的目标。河马的第二种行为模式本质上是防御性的,当它们受到捕食者的攻击或其他生物侵入它们的领地时,就会被触发。河马表现出一种防御反应,它们将自己旋转向捕食者,并利用它们强大的下颚和发声来阻止和击退攻击者(图1)。狮子和斑点鬣狗等捕食者意识到这一现象,并积极寻求避免直接接触河马强大的下颚,作为一种预防措施,防止潜在的伤害。最后一种行为模式包含了河马的本能反应,即逃离捕食者并积极寻求与潜在危险区域保持距离。在这种情况下,河马努力向最近的水域航行,比如河流或池塘,就像狮子和斑点鬣狗经常表现出对进入水生环境的厌恶一样。

03.部分代码

%% Designed and Developed by Mohammad Hussien Amiri and Nastaran Mehrabi Hashjin
function[Best_score,Best_pos,HO_curve]=HO(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness)
lowerbound=ones(1,dimension).*(lowerbound);                              % Lower limit for variables
upperbound=ones(1,dimension).*(upperbound);                              % Upper limit for variables
%% Initialization
for i=1:dimensionX(:,i) = lowerbound(i)+rand(SearchAgents,1).*(upperbound(i) - lowerbound(i));                          % Initial population
end
for i =1:SearchAgentsL=X(i,:);fit(i)=fitness(L);
end
%% Main Loop
for t=1:Max_iterations%% Update the Best Condidate Solution[best , location]=min(fit);if t==1Xbest=X(location,:);                                  % Optimal locationfbest=best;                                           % The optimization objective functionelseif best<fbestfbest=best;Xbest=X(location,:);endfor i=1:SearchAgents/2%% Phase1: The hippopotamuses position update in the river or pond (Exploration)Dominant_hippopotamus=Xbest;I1=randi([1,2],1,1);I2=randi([1,2],1,1);Ip1=randi([0,1],1,2);RandGroupNumber=randperm(SearchAgents,1);RandGroup=randperm(SearchAgents,RandGroupNumber);% Mean of Random GroupMeanGroup=mean(X(RandGroup,:)).*(length(RandGroup)~=1)+X(RandGroup(1,1),:)*(length(RandGroup)==1);Alfa{1,:}=(I2*rand(1,dimension)+(~Ip1(1)));Alfa{2,:}= 2*rand(1,dimension)-1;Alfa{3,:}= rand(1,dimension);Alfa{4,:}= (I1*rand(1,dimension)+(~Ip1(2)));Alfa{5,:}=rand;A=Alfa{randi([1,5],1,1),:};B=Alfa{randi([1,5],1,1),:};X_P1(i,:)=X(i,:)+rand(1,1).*(Dominant_hippopotamus-I1.*X(i,:));T=exp(-t/Max_iterations);if T>0.6X_P2(i,:)=X(i,:)+A.*(Dominant_hippopotamus-I2.*MeanGroup);elseif rand()>0.5X_P2(i,:)=X(i,:)+B.*(MeanGroup-Dominant_hippopotamus);elseX_P2(i,:)=((upperbound-lowerbound)*rand+lowerbound);endendX_P2(i,:) = min(max(X_P2(i,:),lowerbound),upperbound);L=X_P1(i,:);F_P1(i)=fitness(L);if(F_P1(i)<fit(i))X(i,:) = X_P1(i,:);fit(i) = F_P1(i);endL2=X_P2(i,:);F_P2(i)=fitness(L2);if(F_P2(i)<fit(i))X(i,:) = X_P2(i,:);fit(i) = F_P2(i);endend%% Phase 2: Hippopotamus defense against predators (Exploration)for i=1+SearchAgents/2 :SearchAgentspredator=lowerbound+rand(1,dimension).*(upperbound-lowerbound); L=predator;F_HL=fitness(L);distance2Leader=abs(predator-X(i,:));b=unifrnd(2,4,[1 1]);c=unifrnd(1,1.5,[1 1]);d=unifrnd(2,3,[1 1]);l=unifrnd(-2*pi,2*pi,[1 1]);RL=0.05*levy(SearchAgents,dimension,1.5);if fit(i)> F_HLX_P3(i,:)=RL(i,:).*predator+(b./(c-d*cos(l))).*(1./distance2Leader);elseX_P3(i,:)=RL(i,:).*predator+(b./(c-d*cos(l))).*(1./(2.*distance2Leader+rand(1,dimension)));endX_P3(i,:) = min(max(X_P3(i,:),lowerbound),upperbound);L=X_P3(i,:);F_P3(i)=fitness(L);if(F_P3(i)<fit(i))X(i,:) = X_P3(i,:);fit(i) = F_P3(i);endend%% Phase 3: Hippopotamus Escaping from the Predator (Exploitation)for i=1:SearchAgentsLO_LOCAL=(lowerbound./t);HI_LOCAL=(upperbound./t);Alfa{1,:}= 2*rand(1,dimension)-1;Alfa{2,:}= rand(1,1);Alfa{3,:}=randn;D=Alfa{randi([1,3],1,1),:};X_P4(i,:)=X(i,:)+(rand(1,1)).*(LO_LOCAL+D.* (HI_LOCAL-LO_LOCAL));X_P4(i,:) = min(max(X_P4(i,:),lowerbound),upperbound);L=X_P4(i,:);F_P4(i)=fitness(L);if(F_P4(i)<fit(i))X(i,:) = X_P4(i,:);fit(i) = F_P4(i);endendbest_so_far(t)=fbest;disp(['Iteration ' num2str(t) ': Best Cost = ' num2str(best_so_far(t))]);Best_score=fbest;Best_pos=Xbest;HO_curve=best_so_far;
end
end

04.代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

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

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

相关文章

RK3568平台开发系列讲解(Linux系统篇)设备树中断的属性

🚀返回专栏总目录 文章目录 一、RK ft5x06 设备树节点案例二、interrupts属性三、interrupt-controller属性四、interrupt-parent属性五、#interrupt-cells 属性沉淀、分享、成长,让自己和他人都能有所收获!😄 📢设备树中断的属性介绍。 一、RK ft5x06 设备树节点案例…

响应式导航栏不会做?看我一分钟学会制作导航栏!

引言 随着互联网技术的飞速发展&#xff0c;用户体验在网页设计中的重要性日益凸显。其中&#xff0c;导航栏作为网页的“指南针”&#xff0c;不仅能帮助用户快速定位所需内容&#xff0c;还能体现网站的整体风格和设计理念。本文将介绍如何使用HTML、CSS和JavaScript制作一个…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行&#xff0c;微服务之间的安全以及业务需要&#xff0c;都需要穿递token &#xff0c;而token的传递一般通过header 头来传递。从架构的角度来讲 &#xff0c;一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

[附带黑子定制款鸽鸽版素材包]更改文件夹图标,更改系统音效,更改鼠标指针及样式。

更改文件夹图标 1.选择图片在线格式转换网站转换为ico格式 2.右键文件夹选择属性 3.点击自定义&#xff0c;点击更改图标超链接 4.点击预览选择生成的ico文件 5.点击打开&#xff0c;点击确定&#xff0c;点击应用 更改系统音效&#xff08;真爱粉强烈推荐&#xff09; 1…

react query 学习笔记

文章目录 react query 学习笔记查询客户端 QueryClient获取查询客户端 useQueryClient异步重新请求数据 queryClient.fetchQuery /使查询失效 queryClient.invalidateQueries 与 重新请求数据queryClient.refetchQueries 查询 QueriesuseQuery查询配置对象查询的键值 Query Key…

老板最怕你出这样的代码。。。

大家好&#xff0c; 这一个月时间&#xff0c;阿里巴巴、滴滴、腾讯都发生过应用线上故障的事情&#xff0c;很多同学说是降本增“笑”的后果然后圈内流传一个新想法&#xff0c;为了避免“开源节流” 的事情&#xff0c;工作中要写一些防御性的代码。 什么意思&#xff1f;就…

现代电商会员管理新玩法——付费会员

现在&#xff0c;无论是线上还是线下&#xff0c;几乎都在做会员管理。会员规则五花八门&#xff0c;不仅有常见的注册会员&#xff0c;还出现了付费会员。付费会员机制&#xff0c;从成为会员的第一步就开始筛选&#xff0c;选出粘性高、要求高、复购高且有一定消费力的用户群…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况&#xff1a; ①OOM:内存溢出&#xff0c;是指应用系统中存在无法回收的内存或使用的内存过多&#xff0c;最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了&#xff0c;系统会提示内存溢出&#xff0c…

网络篇11 | 网络层 ICMP

网络篇11 | 网络层 ICMP 01 简介02 报文格式1&#xff09;Type(类型)2&#xff09;Code(代码)3&#xff09;Checksum(校验和)4&#xff09;ICMP数据部分 03 ICMP数据抓包1&#xff09;类型 8&#xff1a;回显请求&#xff08;Echo Request&#xff09;2&#xff09;类型 13&…

[Java、Android面试]_18_详解Handler机制 常见handler面试题(非常重要,非常高频!!)

本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&#xff0c;后续会陆续分享出来&#xff0c;感兴趣的朋友可关注收…

【智能优化算法】人工原生动物优化器(APO)

人工原生动物优化器(Artificial Protozoa Optimizer&#xff0c;APO)是发表在中科院一区期刊‘Knowledge-Based Systems’期刊上“Artificial Protozoa Optimizer (APO): A novel bio-inspired metaheuristic algorithm for engineering optimization”这篇文章上的算法。 01.引…

下载好了annaconda,但是在创建一个新的Conda虚拟环境报错

文章目录 问题描述&#xff1a;解决方案1.生成一个配置文件 问题总结 问题描述&#xff1a; ProxyError(MaxRetryError(“HTTPSConnectionPool(host‘repo.anaconda.com’, port443): Max retries exceeded with url: /pkgs/pro/win-64/repodata.json.bz2 (Caused by ProxyErr…

基于深度学习的智能停车场车牌识别计费系统(完整程序+训练数据集+开题报告+论文))

摘要 本篇论文研究的是基于车牌识别技术的智能停车场管理系统&#xff0c;采用基于深度学习的车牌识别算法&#xff0c;通过卷积神经网络对车牌图像进行处理和分析&#xff0c;实现车牌字符的识别和车牌信息的提取。同时&#xff0c;本文还设计了一个智能停车场管理系统&#x…

2024最新版守约者二级域名分发系统

主要功能 二级域名管理&#xff1a;我们的系统提供全面的二级域名管理服务&#xff0c;让您轻松管理和配置二级域名。 域名分发&#xff1a;利用我们先进的域名分发技术&#xff0c;您可以自动化地分配和管理域名&#xff0c;确保每个用户或客户都能及时获得所需的域名资源。 自…

Java基础_20常用类相关的东西和枚举

回顾 1.字节输入流: FileInputStream字节输出流: FileOutputStream字节缓冲输入流: BufferedInputStream字节缓冲输出流: BufferedOutputStream字符输入流: FileReader字符输出流: FileWriter字符缓冲输入流: BufferedReader字 符缓冲输出流: BufferedWriter2.写…

【MATLAB 分类算法教程】_1遗传算法优化支持向量机SVM分类 - 教程和对应MATLAB代码

分类代码案例1:遗传算法优化支持向量机SVM分类 - MATLAB完全代码教程 1. 初始化代码2. 读取数据代码3. 数据预处理代码4. 利用遗传算法GA求解最佳的SVM参数c和g代码5. 根据最佳的参数进行SVM模型训练代码6. SVM模型预测代码7. 准确率分析以及分类结果对比作图代码本文以红酒数…

python如何保存数据和读取数据

python要保存输入的数据&#xff0c;一般会保存在模块json中&#xff0c;json中的数据可以与使用其他编程语言的人共享。 要保存数据到json&#xff0c;Python需要用到json模块 假定要保存一个序列&#xff0c;示例代码如下 from pathlib import Path import jsonnumbers[2,…

前端开发攻略---Vue实现防篡改水印的效果。删除元素无效!更改元素属性无效!支持图片、元素、视频等等。

1、演示 2、水印的目的 版权保护&#xff1a;水印可以在图片、文档或视频中嵌入作者、品牌或版权所有者的信息&#xff0c;以防止未经授权的复制、传播或使用。当其他人使用带有水印的内容时&#xff0c;可以追溯到原始作者或版权所有者&#xff0c;从而加强版权保护。 身份识…

PHP Array and string offset access syntax with curly braces is deprecated

PHP 在 7.4.0 版本中引入了关于使用大括号 {} 来访问数组和字符串的偏移量的弃用警告。这意味着虽然 PHP 7.4 之前的版本可能仍然支持这种语法&#xff0c;但在 PHP 7.4 及其后续版本中&#xff0c;当你使用大括号来访问数组或字符串的偏移量时&#xff0c;PHP 会发出弃用警告。…

流程图步骤条

1.结构 <ul class"stepUl"> <li class"stepLi" v-for"(item, index) in stepList" :key"index"> <div class"top"> <p :class"{active: currentState > item.key}">{{ item.value }}…