【群智能算法改进】一种改进的猎人猎物优化算法 IHPO算法[1]【Matlab代码#49】

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 原始HPO算法
    • 2. 改进后的IHPO算法
      • 2.1 Cubic映射初始化
      • 2.2 透镜成像折射反向学习
      • 2.3 强制切换策略
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


获取资源请见文章第5节:资源获取】


1. 原始HPO算法

此算法详细介绍请参考HPO算法介绍

2. 改进后的IHPO算法

2.1 Cubic映射初始化

标准的Cubic映射函数可以表示为下式所示:
x n + 1 = b x n 3 − c x n x_{n+1}=bx_{n}^{3}-cx_{n} xn+1=bxn3cxn
其中,b,c为混沌影响因子,不同的b,c值Cubic映射的范围也不同。一般在 c ∈ ( 2.3 , 3 ) c\in (2.3,3) c(2.3,3)时,Cubic映射产生的序列为混沌状态。此外,当b = 1时, x n ∈ ( − 2 , 2 ) x_{n}\in (-2,2) xn(2,2);当b = 4时, x n ∈ ( − 1 , 1 ) x_{n}\in (-1,1) xn(1,1)

经过对Cubic映射进行最大Lyapunov指数的计算分析,可以得到如下常用的Cubic映射表达式:
x n + 1 = ρ x n ( 1 − x n 2 ) x_{n+1}=\rho x_{n}(1-x_{n}^{2}) xn+1=ρxn(1xn2)
其中, x n ∈ ( 0 , 1 ) x_{n}\in (0,1) xn(0,1) ρ \rho ρ为控制参数,Cubic映射的混沌性与参数 ρ \rho ρ的取值有着很大的关系。
本文中,参数 ρ \rho ρ的取值为 ( 1.5 , 3 ) (1.5,3) (1.5,3)。经过实验,取 x 0 = 0.3 , ρ = 2.595 x_{0}= 0.3, \rho=2.595 x0=0.3,ρ=2.595时,Cubic映射具有较好的混沌遍历性,仿真结果如下图所示:

在这里插入图片描述

2.2 透镜成像折射反向学习

透镜成像折射反向学习策略的思想来自于凸透镜成像的原理。通过基于当前坐标生成一个反向位置来扩展搜索范围,如图所示。
在这里插入图片描述

透镜成像折射反向学习原理图

在二维坐标中,x轴的搜索范围为(a, b), y轴表示一个凸透镜。假设物体A在x轴上的投影为x,高度为h,通过透镜成像,另一侧的图像为A*, A* 在x轴上的投影为x*,高度为h*。通过以上分析,我们可以得到如下公式:
( a + b ) / 2 − x x ∗ − ( a + b ) / 2 = h h ∗ \frac{(a+b)/2-x}{x^{*}-(a+b)/2 }=\frac{h}{h^{*}} x(a+b)/2(a+b)/2x=hh
对上面公式进行转换,即可得到反向解x*的表达式为:
x ∗ = a + b 2 + a + b 2 k − x k x^{*} =\frac{a+b}{2}+\frac{a+b}{2k}-\frac{x}{k} x=2a+b+2ka+bkx
其中, k = h / h ∗ k=h/h^{*} k=h/h a a a b b b可以视为某维度的上下限。本文中的 k k k是一个与迭代次数相关的动态自适应值。

2.3 强制切换策略

在原始HPO算法中,B参数扮演着十分重要的角色,它用于平衡算法的探索和开发能力。在原始HPO算法中,B取值固定为0.1,此值并不能反映算法目前适用于哪种更新公式,因此将其与随机数rand来比较从而决策出进行开发还是探索的方式并不妥。

本文提出了一种改进的B参数来替代原先的B参数,公式如下:
B = t a n h ∣ r a n d × ( F ( i ) − b F F ( i ) + b F ) ∣ B=tanh\left | rand\times (\frac{F(i)-bF}{F(i)+bF} ) \right | B=tanh rand×(F(i)+bFF(i)bF)
同时,考虑到这样的方式仍然可能陷入局部最优,所以为每个个体配置了一个计数器,如果连续迭代多次,都未能找到更优的解,就100%执行探索行为,而不执行开发行为。

3. 部分代码展示

clear;clc;close allSearch_no=30;   % Number of search agent
F_name='F14';    % Name of the test function F1-f23
M_Iter=500;    % Maximum number of iterations
[lb,ub,dim,fobj]=Get_F(F_name); %Give details of the underlying benchmark function[Best_FF,Best_P,HPO_Curve]=HPO(Search_no,M_Iter,lb,ub,dim,fobj);   [Best_FF_IHPO,Best_P_IHPO,IHPO_Curve]=IHPO(Search_no,M_Iter,lb,ub,dim,fobj);figure('Position',[454   445   694   297]);
subplot(1,2,1);
func_plot(F_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])subplot(1,2,2);
semilogy(HPO_Curve,'Color','k','LineWidth',2)
hold on
semilogy(IHPO_Curve,'Color','r','LineWidth',2)
title('Convergence curve')
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('HPO','IHPO')

4. 仿真结果展示

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

5. 资源获取

可以获取完整代码资源。

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

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

相关文章

深入浅出关于网易邮箱开启smtp服务教程

各平台邮箱开启SMTP服务教程 一、QQ邮箱 (服务器地址:smtp.qq.com) 第一步:复制https://mail.qq.com/ 登录QQ邮箱后电击左上角设置,如图: 第二步:点击进入“帐户”页面 ,如图&…

AJAX异步请求JSON数据格式

目录 前言 1.AJAX的实现方式 1.1原生的js实现方式 1.2JQuery实现方式 2.1语法 3.JSON数据和Java对象的相互转换 3.1将JSON转换为Java对象 3.2将Java对象转换为JSON 前言 AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和 XML。 Ajax 是一种在…

016-从零搭建微服务-认证中心(七)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于B…

【软件测试面试】腾讯数据平台笔试题-接口-自动化-数据库

数据库题 答案: Python编程题 答案: 接口参数化题 答案: 接口自动化题 答案: 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区&#…

spring复习:(40)全注解的spring AOP

零、需要的依赖&#xff1a; <dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.9</version></dependency><dependency><groupId>org.aspectj</groupId><arti…

第一百零八天学习记录:C++基础:文件操作

C中对文件操作需要包含头文件<fstream> 操作文件的三大类&#xff1a; 1、ofstream:写擦破自评 2、ifstream:读操作 3、fstream:读写操作 文本文件 写文件 写文件步骤如下&#xff1a; 1、包含头文件 #include <fstream>2、创建流对象 ofstream ofs; 3、打开文…

TCP四次挥手过程

TCP 断开连接是通过四次挥手方式。 双方都可以主动断开连接&#xff0c;断开连接后主机中的「资源」将被释放&#xff0c; 刚开始双方都处于 establised 状态&#xff0c;假如是客户端先发起关闭请求&#xff0c;过程如下图&#xff1a; 第一次挥手&#xff1a;客户端打算关闭…

SpringSecurity(6.1.x版本) 认证,授权,自定义登录,内部机制探讨

SpringSecurity 文章目录 SpringSecurityCSRF跨站请求伪造攻击SFA会话固定攻击XSS跨站脚本攻击开发环境搭建认证直接认证使用数据库认证自定义验证 其他配置自定义登录界面记住我功能 授权基于角色授权基于权限授权使用注解权限判断 内部机制探究授权校验流程安全上下文安全上下…

智能电表远程抄表系统原理

智能电表远程抄表系统是现代智能电网建设的重要组成部分&#xff0c;它利用物联网技术实现电表数据的远程采集、传输和处理&#xff0c;提高了电力公司的抄表效率&#xff0c;同时也为用户提供了更加便捷、准确的用电服务。本文将从远程智能电表抄表系统的工作原理、特点、应用…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令&#xff0c;将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

配置uprof环境

AMD uprof 1/从AMD μProf | AMD处下载两个文档 2/解压 tar jxvf filename 3/将.rpm转换成deb Ubuntu的软件包格式是deb&#xff0c;如果要安装rpm的包&#xff0c;则要先用alien把rpm转换成deb。 sudo apt-get install alien #alien默认没有安装&#xff0c;所以首先要安…