创新性不足?四种策略改进的哈里斯鹰算法!学会这一篇可扩展到所有算法!

目录

原始哈里斯鹰算法

1.1 搜索阶段

1.2 搜索与开发的转换

1.3 开发阶段

改进策略详解:

改进点1:反向学习

改进点2:混沌序列

改进点3:平滑技术

改进点4:变异算子

效果展示:

完整代码


今天为大家带来一期四种策略改进的哈里斯鹰算法代码与原理讲解,方便大家改进自己的算法~学会这一篇可扩展到所有算法!

首先介绍一下原始哈里斯鹰算法!

原始哈里斯鹰算法

由于原始算法文章众多,因此这里为了方便直接贴图~哈里斯鹰算法是2019年受哈里斯鹰捕食兔子过程启发而提出的优化算法,具有全局搜索能力强,需要调节的参数较少等优点。

1.1 搜索阶段

1.2 搜索与开发的转换

1.3 开发阶段

废话不多说,直接来看一下是如何改进的!

改进策略详解:

废话不多说,直接来看一下是如何改进的!

改进点1:反向学习

这个改进点还是比较传统的,也能够在很多改进的文章中看到,关键在于你怎么用,用在哪里。那么在这里,反向学习主要在初始化阶段生成解的“对立”局部,以覆盖可行域中的大面积,从而提高初始解的多样性。即使没有先验知识,使用OBL仍然可以获得更合适的起始候选者,并提高检测到更好区域的概率。具体的公式为:

其中,j=1,2,…,D(特定问题的维度),i=1,2,..,N(哈里斯鹰的总数)。此外,在相反解的计算中使用了上值ubj和下值lbj。

改进点2:混沌序列

大多数改进策略通常将混沌映射放在初始化中,然而初始化在整体改进策略里效果并不明显。在这里,使用逻辑混沌映射序列来调整HHO的随机参数r,用混沌映射序列代替随机参数。其中的优势就在于,由于遍历性和非重复性的特点,混沌映射可以比依赖于概率的随机遍历搜索更高的速度执行整体搜索,有助于控制开发机制。公式如下所示:

其中,t表示当前迭代次数。此外,控制参数l=4,lr(1)属于(0,1)且lr(1)不等于0.25,0.5,0.75,1。与HHO不同,r取自混沌序列lr,并且以这种方式r(t)=lr(t)。

改进点3:平滑技术

为了减少或避免最优解中的控制函数波动和角点,在改进的HHO的处理阶段嵌入了平滑技术来平滑解。由下图可知,白色点是平滑前的控制值,而黑色点是相应的平滑值。但是要注意,平滑技术仅在原始数据中出现Z字形时执行,并且出现如u(k-1)、uk和u(k+1)之间。采用基于三个连续点中的每一个的平均值来减小跳跃的幅度。k是权重系数,并且用于在点k处进行平滑的公式可以表示为:

其中左边带上箭头的uk是uk的平滑值,并在接下来的迭代步骤中替换它。

这个策略还是非常新颖的,知网基本没什么人用过,大家可以将这个策略加入到其他算法!

改进点4:变异算子

为了利用当前最佳个体种群信息,加快搜索速度,降低陷入局部最优的风险。采用最著名的DE/current-to-best/1突变算子来代替方程中的原始位置更新策略。原始算法的公式(7)可改写为:

其中r4和r5也是(0,1)内的随机数。

一旦全局搜索阶段过去,就应该缩小搜索空间,加强开发强度,从而有利于收敛到全局最优。Levy变异算子由于其重尾分布,可以产生不同的后代,并可以帮助个体轻松逃离局部最优。

因此,使用局部Levy突变代替全局Levy飞行。原始算法的公式(8)和(11)可以重写为:

实际上,这里采用了差分进化算法和莱维分布的思想,最大程度上保留差分进化和莱维飞行的优点。通过两种变异混合进一步提高算法搜索能力,这个策略还是非常有效的,这一点也可以扩展到其他算法!

效果展示:

为了方便大家比较,这里采用经典的23个标准测试函数,也就是CEC2005与原始哈里斯鹰算法进行对比~

可以看到,改进后的HHO算法效果还是非常不错的!在大部分测试函数上都非常有效!大家可以用它来试试优化SVM、LSTM等各种应用场景~

完整代码

点击下方小卡片,后台回复关键字,不区分大小写:

​HPHHO

也可点击小卡片,后台回复个人需求定制PO优化模型(看到秒回):

1.回归/时序/分类预测类:SVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、ESN等等均可~

2.组合预测类:CNN-SVM、CNN-LSTM/BiLSTM/GRU/BiGRU-Attention、Adaboost类、DBN-SVM等均可~

3.分解类:EMD、EEMD、VMD、REMD、FEEMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~

4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~

5.原创改进优化算法(适合需要创新的同学):2024年的NRBO、CPO、SO、WOA等任意优化算法均可,保证测试函数效果!

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,哈里斯鹰算法是一种用于图像处理的特征检测算法。如果您想改进MATLAB代码以实现更好的哈里斯鹰算法,可以考虑以下几个方面: 1.优化计算性能:哈里斯鹰算法需要计算大量的导数和卷积操作,这些操作可能会导致代码运行缓慢。您可以尝试使用MATLAB内置的函数来加速这些计算,例如使用imgradient函数计算图像梯度,使用imfilter函数进行卷积操作。 2.调整算法参数:哈里斯鹰算法有一些参数需要调整,例如窗口大小、响应阈值等。您可以尝试调整这些参数以获得更好的检测效果。 3.改进特征描述:哈里斯鹰算法只能检测图像中的角点,如果您需要检测其他类型的特征,可以考虑使用其他算法改进哈里斯鹰算法的特征描述方法。 下面是一个简单的示例代码,演示如何使用MATLAB内置函数实现哈里斯鹰算法: ```matlab % 读取图像 img = imread('lena.png'); % 计算图像梯度 [Gx, Gy] = imgradientxy(img); % 计算梯度的平方和、乘积 Gx2 = Gx.^2; Gy2 = Gy.^2; Gxy = Gx.*Gy; % 对梯度平方和、乘积进行高斯滤波 sigma = 2; hsize = 2*ceil(3*sigma)+1; Gx2 = imgaussfilt(Gx2, sigma, 'FilterSize', hsize); Gy2 = imgaussfilt(Gy2, sigma, 'FilterSize', hsize); Gxy = imgaussfilt(Gxy, sigma, 'FilterSize', hsize); % 计算响应函数R k = 0.04; R = (Gx2.*Gy2 - Gxy.^2) - k*(Gx2 + Gy2).^2; % 设置响应阈值 threshold = 1e6; % 在图像中标记角点 img_corners = img; img_corners(R < threshold) = 0; imshow(img_corners); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值