news 2026/4/18 3:37:58

优化算法总能让工程师们又爱又恨——既要收敛快又要防早熟,哈里斯鹰优化HHO倒是给了个野性十足的解法。这算法把猛禽捕猎过程拆得明明白白,咱们直接看代码实现最实在

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
优化算法总能让工程师们又爱又恨——既要收敛快又要防早熟,哈里斯鹰优化HHO倒是给了个野性十足的解法。这算法把猛禽捕猎过程拆得明明白白,咱们直接看代码实现最实在

哈里斯鹰优化算法 HHO (matlab代码,包含23个常用的基准测试函数)可直接运行效果如图所示

先看主函数骨架,参数设置够直白:

function [Rabbit_Energy,Rabbit_Location]=HHO(nfe_max,N,lb,ub,dim,fobj) % 输入参数: % nfe_max - 最大评估次数 % N - 种群数量 % lb/ub - 变量上下界 % dim - 维度 % fobj - 目标函数句柄 % 初始化种群 X=initialization(N,dim,ub,lb); Fitness=zeros(1,N); for i=1:N Fitness(i)=fobj(X(i,:)); end [Rabbit_Energy,idx]=min(Fitness); Rabbit_Location=X(idx,:); nfe = N;

这里初始化阶段就带着点小技巧:每个个体随机撒网,立刻计算适应度。注意nfe这个计数器,后面每次评估都要更新,控制算法停止的关键。

核心迭代部分才是重头戏:

while nfe < nfe_max E1=2*(1-(nfe/nfe_max)); % 逃逸能量线性递减 for i=1:size(X,1) E0=2*rand()-1; E=E1*E0; if abs(E) >= 1 % 探索阶段 q = rand(); if q >= 0.5 X(i,:) = (ub-lb)*rand()+lb; % 全局随机游走 else X(i,:)=Rabbit_Location - rand().*abs(Rabbit_Location - 2*rand().*X(i,:)); end else % 开发阶段 r=rand(); if r>=0.5 && abs(E)<0.5 % 软围攻 Jump_strength=2*(1-rand()); X(i,:)= Rabbit_Location - E*abs(Jump_strength*Rabbit_Location - X(i,:)); else % 硬围攻 X(i,:)= (Rabbit_Location - mean(X)) - E*rand().*... (ub-lb)*rand()+lb; end end % 边界处理 Flag4ub=X(i,:)>ub; Flag4lb=X(i,:)<lb; X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; % 更新最优 Fnew=fobj(X(i,:)); nfe=nfe+1; if Fnew<Rabbit_Energy Rabbit_Energy=Fnew; Rabbit_Location=X(i,:); end end end

这段把猛禽捕猎的四个阶段浓缩在条件判断里:当|E|≥1时全局搜索,否则进入局部开发。特别留意E的计算方式——随着迭代次数增加,E1线性减小,导致算法后期更倾向于精细搜索。

测试函数咱们准备了23个经典基准函数,拿Rastrigin函数举个栗子:

function o = F1(x) o=sum(x.^2 - 10*cos(2*pi*x) + 10); end

跑分的时候要注意维度变化对结果的影响,通常测试需要跑30次取平均值。调用方式也简单:

fhandle=@F1; dim=30; [bestX,bestF]=HHO(10000,50,-5.12,5.12,dim,fhandle);

实际运行会发现,HHO在前期收敛速度极快,但后期容易在最优解附近震荡。这时候可以调整逃逸能量公式,比如把线性递减改成指数形式:

E1=2*(exp(-0.05*nfe/nfe_max)); % 修改能量递减方式

这么一改,后期震荡明显减弱,适应度值还能再降个数量级。

最后说个实战技巧——处理高维问题时,在边界检查后加个扰动操作,能有效防止早熟:

if rand()>0.8 X(i,:)=X(i,:).*(1+0.01*randn(size(X(i,:)))); % 高斯扰动 end

这招在100维以上的测试中效果拔群,谁用谁知道。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:35:44

HyPlayer:当音乐遇见优雅,重新定义你的听觉盛宴

HyPlayer&#xff1a;当音乐遇见优雅&#xff0c;重新定义你的听觉盛宴 【免费下载链接】HyPlayer 仅供学习交流使用 | 第三方网易云音乐播放器 | A Netease Cloud Music Player 项目地址: https://gitcode.com/gh_mirrors/hy/HyPlayer 你是否曾经在深夜独自聆听音乐时&…

作者头像 李华
网站建设 2026/4/18 3:27:38

Linux系统下Miniconda环境变量配置全解析

Linux系统下Miniconda环境变量配置全解析 在现代数据科学、AI研发和工程实践中&#xff0c;Python 已经成为不可或缺的工具语言。然而&#xff0c;当你同时参与多个项目——一个需要 TensorFlow 2.6&#xff0c;另一个依赖 PyTorch 与 CUDA 11.8&#xff0c;还有一个要跑老版本…

作者头像 李华
网站建设 2026/4/18 3:29:19

MiniCore:为AVR微控制器量身打造的轻量级Arduino解决方案

MiniCore&#xff1a;为AVR微控制器量身打造的轻量级Arduino解决方案 【免费下载链接】MiniCore Arduino hardware package for ATmega8, ATmega48, ATmega88, ATmega168, ATmega328 and ATmega328PB 项目地址: https://gitcode.com/gh_mirrors/mi/MiniCore 在嵌入式开发…

作者头像 李华
网站建设 2026/4/18 3:33:48

Nunchaku FLUX.1-Krea-dev量化模型:让AI绘画触手可及

在AI技术飞速发展的今天&#xff0c;高质量图像生成不再需要昂贵的专业显卡。Nunchaku Team推出的FLUX.1-Krea-dev量化模型&#xff0c;通过先进的SVDQuant技术&#xff0c;让普通用户也能轻松体验专业级AI绘画。 【免费下载链接】nunchaku-flux.1-krea-dev 项目地址: https…

作者头像 李华
网站建设 2026/4/18 2:21:41

SAP系统操作终极指南:从入门到精通的完整教程

SAP系统操作终极指南&#xff1a;从入门到精通的完整教程 【免费下载链接】SAP中文操作手册 探索SAP系统的强大功能&#xff0c;轻松掌握操作技巧&#xff01;本仓库提供《SAP 中文操作手册》电子书&#xff0c;内容详尽、结构清晰&#xff0c;适合初学者和进阶用户。通过这份实…

作者头像 李华