多策略改进哈里斯鹰优化算法-附代码

多策略改进哈里斯鹰优化算法


摘要: 为解决基本哈里斯鹰算法(Harris hawks optimization, HHO)易陷入局部最优和收敛精度低的问题,提出多策略优化的哈里斯鹰优化算法(Multi-Strategy Harris hawks optimization, MHHO).在探索阶段,引入柯西分布函数变异全局位置,增加种群多样性;在过渡阶段,利用随机收缩指数函数非线性化能量方程,更好地协调全局探索和局部开采;在开采阶段,引入自适应权重因子更新局部位置,提高局部开采能力.

1.哈里斯鹰优化算法

基础哈里斯鹰优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108528147

2.改进哈里斯鹰优化算法

2.1 柯西变异

针对 H H O \mathrm{HHO} HHO 优化算法易陷入局部最优值的问 题, 利用柯西 (Cauchy) 分布函数增加哈里斯廢种群 多样性, 增加搜索空间, 提高 H H O \mathrm{HHO} HHO 算法的全局搜索 能力. 论文受文献 [ 7 ] [7] [7] 的启发, 结合了柯西算子, 充分 利用柯西分布函数两端的变异效应优化全局最优对 象, 标准柯西分布函数公式如下:
f ( x ) = 1 π ( 1 x 2 + 1 ) (9) f(x)=\frac{1}{\pi}\left(\frac{1}{x^{2}+1}\right) \tag{9} f(x)=π1(x2+11)(9)
Cauchy 函数的峰值相对较小, 哈里斯府在柯西 变异后会更多地搜索全局最优值,使用相对较少的 时间开采局部区间; 另外, Cauchy函数从峰值向两 侧下降相对平绪, 在通过柯西变异更新位置后, 哈里 斯䳸受局部极值点的约束力下降, 可以跳出局部极 值. 柯西变异的数学模型为获得当前全局最优解 X best  X_{\text {best }} Xbest  后以下列公式更新最优解:
X best  ′ = X best  + X best  × Cauchy ⁡ ( 0 , 1 ) (10) X_{\text {best }}^{\prime}=X_{\text {best }}+X_{\text {best }} \times \operatorname{Cauchy}(0,1) \tag{10} Xbest =Xbest +Xbest ×Cauchy(0,1)(10)

2.2 随机收缩指数函数

H H O \mathrm{HHO} HHO 算法中, 猎物能量 E E E 的大小起着调节 和过渡全局搜索和局部开采的重要作用, E E E 越小, H H O \mathrm{HHO} HHO 算法越倾向于执行局部开采; E E E 越大, 算法越 倾向于进行全局探索. 但在传统 H H O \mathrm{HHO} HHO 算法的能量 方程中, E E E 由最大值到最小值呈线性递减, 并不能有 效描述自然界中哈里斯噟群体围捕猎物的真实过 程. 数学家模拟捕食者一猎物的相互作用 [ 8 ] { }^{[8]} [8], 得出这 样的结论:随机收缩指数函数更适合于表达猎物逃 跑时的能量变化. 因此, 论文提出修正能量线性递减 调控机制, 将随机收缩指数函数融入猎物能量 E \mathrm{E} E 的 递减过程, 其对应的能量方程为:
E = 2 E 0 ( 2 rand ⁡ × exp ⁡ ( − ( π 2 × t T ) ) (11) E=2 E_{0}\left(2 \operatorname{rand} \times \exp \left(-\left(\frac{\pi}{2} \times \frac{t}{T}\right)\right)\right. \tag{11} E=2E0(2rand×exp((2π×Tt))(11)

2.3 自适应权重

惯性加权因子是非常重要的参数. 当惯性加权因 子辌大时,该算法使用相对辌多的时间进行的全局搜 索;当惯性加权因子较小时,该算法使用相对较多的时 间进行局部搜索, 可以精细地寻找最佳解决方案. 猎物 位置代表 H H O \mathrm{HHO} HHO 算法当前最优解, 同时反向引导哈里 斯鹰栖息地的位置, 它的迭代更新直接决定了算法的 优化性能. 因此, 为了提高算法的局部开采能力,有必 要对猎物位置的邻域进行再更新, 以找出更优解.
考虑到上述情况, 受文献 [ 9 ] [9] [9] 的启发, 引入了一 种自适应权重方法. 在四种围捕机制中,哈里斯䳸搜 寻猎物时,猎物会使用较小的自适应权重更新位㖵, 提高哈里斯鹰算法局部寻优能力. 自适应权重公式 和猎物位置更澵如式 (12)、(13) 所示:
ω = sin ⁡ ( π × t 2 T + π ) + 1 (12) \omega=\sin \left(\frac{\pi \times t}{2 T}+\pi\right)+1\tag{12} ω=sin(2Tπ×t+π)+1(12)
X rabbit  ′ = ω × X rabbit  (13) X_{\text {rabbit }}^{\prime}=\omega \times X_{\text {rabbit }} \tag{13} Xrabbit =ω×Xrabbit (13)
式中, T T T 为最大迭代次数, t t t 为当俞迭代次数. 通过融 合自适应权重因子 ω \omega ω,使 M H H O \mathrm{MHHO} MHHO 算法具有更好的局 部开采能力.

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]郭雨鑫,刘升,高文欣,张磊.多策略改进哈里斯鹰优化算法[J].微电子学与计算机,2021,38(07):18-24.

5.Matlab代码

6.python代码

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
哈里斯鹰优化算法(Harris Hawks Optimization, HHO)是一种基于鹰群行为的优化算法,用于解决优化问题。下面是一个简单的HHO算法的Python代码示例: ```python import random import numpy as np def hho_algorithm(objective_function, lb, ub, dim, max_iter, num_hawks): # 初始化鹰的位置和速度 hawks_position = np.zeros((num_hawks, dim)) hawks_velocity = np.zeros((num_hawks, dim)) hawks_fitness = np.zeros(num_hawks) # 初始化最优解和最优适应度 best_solution = np.zeros(dim) best_fitness = float("inf") # 随机初始化鹰的位置 for i in range(num_hawks): hawks_position[i] = lb + (ub - lb) * np.random.rand(dim) hawks_fitness[i] = objective_function(hawks_position[i]) # 更新最优解和最优适应度 if hawks_fitness[i] < best_fitness: best_solution = hawks_position[i] best_fitness = hawks_fitness[i] # 主循环 for t in range(max_iter): # 更新每只鹰的速度和位置 for i in range(num_hawks): # 随机选择两只鹰作为“追逐者”和“被追逐者” r1 = random.randint(0, num_hawks - 1) r2 = random.randint(0, num_hawks - 1) while r1 == i or r2 == i or r1 == r2: r1 = random.randint(0, num_hawks - 1) r2 = random.randint(0, num_hawks - 1) # 更新速度和位置 hawks_velocity[i] = hawks_velocity[i] + (hawks_position[r1] - hawks_position[i]) + (hawks_position[r2] - hawks_position[i]) hawks_position[i] = hawks_position[i] + hawks_velocity[i] # 边界处理 hawks_position[i] = np.clip(hawks_position[i], lb, ub) # 更新适应度 hawks_fitness[i] = objective_function(hawks_position[i]) # 更新最优解和最优适应度 if hawks_fitness[i] < best_fitness: best_solution = hawks_position[i] best_fitness = hawks_fitness[i] return best_solution, best_fitness ``` 在上述代码中,`objective_function`是待优化的目标函数,`lb`和`ub`是变量的上下界,`dim`是变量的维度,`max_iter`是最大迭代次数,`num_hawks`是鹰的数量。算法通过不断更新鹰的速度和位置来寻找最优解。 请注意,这只是一个简单的示例代码,实际使用时可能需要根据具体问题进行适当的修改和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值