【智能优化算法】基于领导者优化的哈里斯鹰优化算法(LHHO)

01.引言

基于领导者优化的哈里斯鹰优化算法leader Harris hawks optimization (LHHO),以增强Harris hawks optimization (HHO)的搜索能力。通过在探索阶段的适应性栖息和每一代哈里斯鹰的基于领导者的突变选择,可以实现更多的探索。使用经典的23个基准函数对LHHO的性能进行了评估,发现LHHO的性能优于HHO。

02.代码流程图

03.部分代码

%% The Leader Harris hawks optimization (LHHO) function
function [Rabbit_Energy,Rabbit_Location,CNVG]=LHHO(N,T,lb,ub,dim,fobj)
% disp('HHO is now tackling your problem')
%tic
% initialize the location and Energy of the rabbit
Rabbit_Location=zeros(1,dim);
Rabbit_Energy=inf;
fitnessAll=zeros(N,1);
%Initialize the locations of Harris' hawks
X=initialization(N,dim,ub,lb);
CNVG=zeros(1,T);
t=0; % Loop counterfor i=1:size(X,1)% Check boundriesFU=X(i,:)>ub;FL=X(i,:)<lb;X(i,:)=(X(i,:).*(~(FU+FL)))+ub.*FU+lb.*FL;% fitness of locationsfitness=fobj(X(i,:));fitnessAll(i,1)=fitness;% Update the location of Rabbitif fitness<Rabbit_EnergyRabbit_Energy=fitness;Rabbit_Location=X(i,:);endend
while t<Tsortedfitness=sort(fitnessAll);E1=2*(1-(t/T)); % factor to show the decreaing energy of rabbit% Update the location of Harris' hawksfor i=1:size(X,1)E0=2*rand()-1; %-1<E0<1%E0=rand;Escaping_Energy=E1*(E0);  % escaping energy of rabbitpepr=(abs(fitnessAll(i)-sortedfitness(1)))/abs((sortedfitness(end)-sortedfitness(1))); %adaptive perch probabilityif abs(Escaping_Energy)>=1%% Exploration:% Harris' hawks perch randomly based on 2 strategy:q=rand();rand_Hawk_index = floor(N*rand()+1);X_rand = X(rand_Hawk_index, :);if q<pepr% perch based on other family membersX(i,:)=(Rabbit_Location(1,:)-mean(X))-rand()*((ub-lb)*rand+lb);elseif q>=pepr% perch on a random tall tree (random site inside group's home range)X(i,:)=X_rand-rand()*abs(X_rand-2*rand()*X(i,:));endelseif abs(Escaping_Energy)<1%% Exploitation:% Attacking the rabbit using 4 strategies regarding the behavior of the rabbit%% phase 1: surprise pounce (seven kills)% surprise pounce (seven kills): multiple, short rapid dives by different hawksr=rand(); % probablity of each eventif r>=0.5 && abs(Escaping_Energy)<0.5 % Hard besiegeX(i,:)=(Rabbit_Location)-Escaping_Energy*abs(Rabbit_Location-X(i,:));endif r>=0.5 && abs(Escaping_Energy)>=0.5  % Soft besiegeJump_strength=2*(1-rand()); % random jump strength of the rabbitX(i,:)=(Rabbit_Location-X(i,:))-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:));end%% phase 2: performing team rapid dives (leapfrog movements)if r<0.5 && abs(Escaping_Energy)>=0.5, % Soft besiege % rabbit try to escape by many zigzag deceptive motionsJump_strength=2*(1-rand());X1=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:));FU=X1>ub;FL=X1<lb;X1=(X1.*(~(FU+FL)))+ub.*FU+lb.*FL;if fobj(X1)<fobj(X(i,:)) % improved move?X(i,:)=X1;else % hawks perform levy-based short rapid dives around the rabbitX2=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:))+rand(1,dim).*Levy(dim);FU=X2>ub;FL=X2<lb;X2=(X2.*(~(FU+FL)))+ub.*FU+lb.*FL;if (fobj(X2)<fobj(X(i,:))), % improved move?X(i,:)=X2;endendendif r<0.5 && abs(Escaping_Energy)<0.5, % Hard besiege % rabbit try to escape by many zigzag deceptive motions% hawks try to decrease their average location with the rabbitJump_strength=2*(1-rand());X1=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(X));FU=X1>ub;FL=X1<lb;X1=(X1.*(~(FU+FL)))+ub.*FU+lb.*FL;if fobj(X1)<fobj(X(i,:)) % improved move?X(i,:)=X1;else % Perform levy-based short rapid dives around the rabbitX2=Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(X))+rand(1,dim).*Levy(dim);FU=X2>ub;FL=X2<lb;X2=(X2.*(~(FU+FL)))+ub.*FU+lb.*FL;if (fobj(X2)<fobj(X(i,:))) % improved move?X(i,:)=X2;endendend%%endendfor i=1:size(X,1)% Check boundriesFU=X(i,:)>ub;FL=X(i,:)<lb;X(i,:)=(X(i,:).*(~(FU+FL)))+ub.*FU+lb.*FL;% fitness of locationsfitness=fobj(X(i,:));fitnessAll(i,1)=fitness;% Update the location of Rabbitif fitness<Rabbit_EnergyRabbit_Energy=fitness;Rabbit_Location=X(i,:);endend[fitS,fitSind]=sort(fitnessAll);Xa=X(fitSind(1),:); Xb=X(fitSind(2),:); Xd=X(fitSind(3),:);for i=1:size(X,1)%Leader based mutation and SeclectionXnew=X(i,:)+E1*(2*rand-1)*(2*Xa-Xb-Xd)+(2*rand-1)*(Xa-X(i,:));FU=Xnew>ub;FL=Xnew<lb;Xnew=(Xnew.*(~(FU+FL)))+ub.*FU+lb.*FL;fitness=fobj(Xnew);if fitness<fitnessAll(i)X(i,:)=Xnew;endif fitness<Rabbit_EnergyRabbit_Energy=fitness;Rabbit_Location=Xnew;endendt=t+1;CNVG(t)=Rabbit_Energy;
end
end

04.代码效果图

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

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

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

相关文章

Flink常见面试问题(附答案)

目录 基础篇1. 什么是Apache Flink&#xff1f;2. Flink与Hadoop的区别是什么&#xff1f;3. Flink中的事件时间&#xff08;Event Time&#xff09;和处理时间&#xff08;Processing Time&#xff09;有什么区别&#xff1f;4. Flink的容错机制是如何实现的&#xff1f;5. 什…

node.js 包管理工具介绍 (npm与Yarn详细说明)

一、什么是包&#xff1f; 包&#xff08;package&#xff09;代表了一组特定功能的源码集合 二、什么是包管理工具&#xff1f; 也就是管理包的应用软件&#xff0c;可以对包进行下载、更新、删除、上传等操作。借助包管理工具&#xff0c;可以快速开发项目提升开发效率。包…

4.2.4 理解路由器数据包过程

1、实验目的 通过本实验可以掌握&#xff1a; 了解IP路由原理了解数据包封装和解封装的概念了解路由器路由和交换过程 2、实验拓扑 观察路由器路由数据包过程的实验拓扑如图4-3所示&#xff0c;设备接口地址信息如表4-2所示。 图4-3 观察路由器路由数据包过程的实验拓扑 本…

用Python编写GUI程序实现WebP文件批量转换为JPEG格式

在Python编程中&#xff0c;经常会遇到需要处理图片格式的情况。最近&#xff0c;我遇到了一个有趣的问题&#xff1a;如何通过编写一个GUI程序来实现将WebP格式的图片批量转换为JPEG格式&#xff1f;在这篇博客中&#xff0c;我将分享我使用Python、wxPython模块和Pillow库实现…

linux系统离线安装nginx

perlnginx是一个高性能的http和反向代理服务器&#xff0c;并发能力很强&#xff0c;一般用来做负载均衡比较多&#xff0c;分布式系统开发中用作web服务器。 一、下载 地址&#xff1a;nginx: download 我们下载这个稳定版本 二、环境依赖检查 nginx安装需要很多外部依赖&…

python开发poc,fofa爬虫批量化扫洞

学习使用python做到批量化的漏洞脚本 1.通过fofa搜索结果来采集脚本 2.批量化扫描漏洞 ---glassfish存在任意文件读取在默认48484端口&#xff0c;漏洞验证的poc为: "glassfish" && port"4848" && country"CN" http://loca…

Sybase ASE中的char(N)的坑以及与PostgreSQL的对比

1背景 昨天,一朋友向我咨询Sybase ASE中定长字符串类型的行为,说他们的客户反映,同样的char类型的数据,通过jdbc来查,Sybase库不会带空格,而PostgreSQL会带。是不是这样的?他是PostgreSQL的专业大拿,但因为他手头没有现成的Sybase ASE环境,刚好我手上有,便于一试。 …

Python实现读取dxf文件的所有字符

Python实现读取dxf文件的所有字符 import ezdxfdef read_dxf_and_print_text(filename):# 加载DXF文件doc ezdxf.readfile(filename)# 遍历所有的实体for entity in doc.entities:# 检查实体是否是TEXT、MTEXT或DIMENSIONif isinstance(entity, ezdxf.entities.Text):print(f…

计算机视觉——图像特征提取D2D先描述后检测特征提取算法原理

概述 局部特征提取是计算机视觉中的一个重要任务&#xff0c;它旨在从图像中提取出能够代表图像局部结构和外观信息的特征。这些特征通常用于图像匹配、物体识别、三维重建、跟踪和许多其他应用。传统方法&#xff0c;如尺度不变特征变换&#xff08;SIFT&#xff09;&#xf…

使用R语言计算矩形分布(均匀分布)并绘制图形

理论部分 矩形分布&#xff08;均匀分布&#xff09;&#xff0c;是指在某一区间内&#xff0c;随机变量取任何值的概率都是相同的。这种分布的概率密度函数在一个特定的区间内是一个常数&#xff0c;因此其图形呈现出一个矩形的形状&#xff0c;故得名为“矩形分布”。在概率…

【Spring进阶系列丨第八篇】Spring整合junit 面向切面编程(AOP)详解

文章目录 一、Spring整合junit1.1、导入spring整合junit的jar1.2、在测试类上添加注解1.3、说明 二、面向切面编程(AOP)2.1、问题引出2.2、AOP2.2.1、概念2.2.2、作用2.2.3、优势2.2.4、实现方式2.2.5、专业术语2.2.5.1、连接点2.2.5.2、切入点2.2.5.3、通知/增强2.2.5.4、织入…

5款最值得推荐的电脑监控软件丨高人气甄选

在企业和学校等场所&#xff0c;电脑监控软件被广泛应用于员工或学生的行为管理。 通过监控软件&#xff0c;管理者可以了解员工或学生的学习和工作情况&#xff0c;及时发现并纠正不当行为&#xff0c;提高工作效率和学习效果。同时&#xff0c;这类软件还可以用于保护企业机…

AI概念普及-LangChain

文章目录 概念产品架构核心特性核心组件使用场景其他资源开发支持结论Langchain详细介绍LangChain的具体实现原理LangChain如何与其他大型语言模型&#xff08;LLM&#xff09;集成&#xff0c;有哪些具体的接口或协议&#xff1f;LangChain的性能表现和优化策略有哪些&#xf…

【多线程】线程(线程的概念+线程的创建)

文章目录 线程一、线程的概念1.引入线程的目的2.什么叫线程&#xff08;Thread&#xff09;1.线程的特点&#xff1a;2.进程和线程的区别&#xff08;面试题&#xff09;&#xff1a;3.Java的多线程编程 二、创建线程1.继承Thread重写run入口方法&#xff1a;使用jconsolesleep…

Games101-光线追踪(加速结构)

Bounding Volumes 包围盒&#xff1a;用一个简单形状把物体包围起来&#xff0c;如果物体连包围盒都无法碰撞&#xff0c;一定无法碰撞包围盒内的物体 将长方体理解成三个不同对面形成的交集&#xff0c;一定是在x&#xff0c;y&#xff0c;z轴上的范围。没有旋转 Ray Inters…

适用于 Windows 10 的 10 大免费数据恢复软件

数据丢失可能是一场噩梦&#xff0c;尤其是在涉及重要文件和文档时。无论是由于意外删除、系统崩溃还是病毒攻击&#xff0c;找到适合 Windows 10 的文件夹恢复软件都可以在恢复丢失的数据方面发挥重要作用。在本指南中&#xff0c;我们将探索适用于 Windows 10 用户的 10 大免…

mysql解锁表及查看表是否被锁

1、查进程&#xff0c;查找被锁表的那个进程的ID show processlist; 2、通过查询结果&#xff0c;找到要杀掉的进程&#xff0c;kill掉锁表的进程ID kill id; 3、查询是否锁表 show OPEN TABLES where In_use > 0; 1.delete------ 是逐行删除速度极慢&#xff0c;不适合…

【退役之重学Java】pom文件没啥问题但报红

复制过来的pom文件&#xff0c;有几处版本号报红 刚开始以为是版本号的问题&#xff0c;但是按道理从大佬那里复制过来的&#xff0c;应该不会有问题&#xff0c;还是检查了一下&#xff1a; 把项目压缩发给师傅&#xff0c;师傅哪里没报错好吧&#xff0c;我已经猜到了为什么……

MySQL操作DDL

目录 1.概述 2.数据库的增删改查 3.表的增删改查 3.1.创建和查看表结构 3.2.修改表 3.3.查看所有的表 3.4.删除表 4.用户 5.DDL在实际应用场景中的作用 5.1.数据库设计 5.2.数据库维护 ​​​​​​​5.3.数据库迁移或重置 ​​​​​​​5.4.优化性能 ​​​​​…

cesium 添加动态波纹效果 圆形扩散效果 波纹材质

一、扩展材质 /*** 水波纹扩散材质* param {*} options* param {String} options.color 颜色* param {Number} options.duration 持续时间 毫秒* param {Number} options.count 波浪数量* param {Number} options.gradient 渐变曲率*/function CircleWaveMaterialProperty(opt…