东南大学齿轮箱故障诊断教程!SBOA-VMD-BiGRU模型直接运行!超多图!适合新手小白!

发布时间:2026/7/30 17:49:01

东南大学齿轮箱故障诊断教程!SBOA-VMD-BiGRU模型直接运行!超多图!适合新手小白! 目录原理详解流程介绍结果展示部分代码展示完整代码获取​以往很多论文里大多采用西储大学轴承数据集今天给大家带来一期东南大学齿轮箱数据故障诊断教程与代码可放心往下看小白也能一看就会为了防止创新点不够本期代码采用24年新出的蛇鹫优化算法SBOA优化VMD分解并提供了6种不同的适应度函数从而对数据完成预处理过程。随后基于双向门控循环单元BiGRU模型对处理好的数据集进行分类预测。之前也有推文介绍过蛇鹫优化算法性能也是非常不错具体可以看以下这篇2024年SCI最新算法-蛇鹭优化算法(SBOA)-公式原理详解与性能测评 Matlab代码免费获取同样的本期代码所有流程均可一键运行全部出图包括特征提取过程与故障诊断结果还有打印出来的损失函数曲线不像其他程序一样需要运行很多次非常适合新手小白当然本次模型在知网上和WOS上也是完全搜不到的不信可以看下图原理详解此处使用的数据是东南大学官方的齿轮箱数据首先说一下该数据集的处理步骤以及来源1.数据预处理。取官方下载的东南大学齿轮箱数据集选择以下几个文件Chipped_20_0故障状态为齿轮上有裂纹Health_20_0健康状态Miss_20_0故障状态为断齿Root_20_0故障状态为齿轮根部裂纹Surface_20_0故障状态为齿面磨损提取五个数据的第三列设置滑动窗口w为1000每个数据的故障样本点个数s为2048 。将所有的数据滑窗设置完毕之后将所有的数据和类别综合到一个Excel中此处Excel已直接整理好。2.特征提取。这里的特征提取主要分为3个步骤。①首先VMD 方法要从信号中提取丰富的特征信息, 需要选定最佳的参数组合模态个数 k 和惩罚参数 α 都要选定在合适的区间过大过小都会导致特征信号提取不充分。因此需要用优化算法进行优化。本期代码选择了一个24年新颖且性能较好的算法——蛇鹫优化算法SBOA优化VMD算法从而选择最佳参数K和α。同时需要选择合适的适应度函数此处提供了6种适应度函数分别为包络熵、样本熵、信息熵、排列熵、包络峭度因子或复合指标最小大家任选其一即可。优化完后提取每个样本的最佳IMF分量并丢弃其他分量因为最佳IMF分量已经包含了故障特征的丰富信息如下图所示。②其次对最佳IMF分量的9个指标进行计算分别是均值方差峰值峭度有效值峰值因子脉冲因子波形因子裕度因子对应特征1-9③最后得到的数据是1000*9的矩阵。为了进行诊断我们需要对每行数据打上标签其中1-5代表不同的故障类型。3.故障诊断。按照上述流程处理完数据集后就是我们常见的机器学习分类数据集了。此处我们再采用BiGRU分类模型划分70%为训练集30%为测试集将数据送入网络进行训练和预测得到最终故障诊断准确率结果。流程介绍上面的文字可能有些冗长此处简单讲下故障诊断的具体步骤1将采集到的数据进行融合处理利用蛇鹫优化算法SBOA对VMD的惩罚因子以及模态分量进行参数优化并找寻最小适应度的索引值将两个参数以及索引值代回VMD中2从六种适应度函数中选择一种对最佳IMF分量的9个指标进行计算并打上标签从而提取其故障特征3设置BiGRU模型参数训练神经网络模型完成多特征分类任务。结果展示此处采用的BiGRU模型知网上用的也很少大家也可以自行替换成想要的模型或者加入更多的优化算法提高分类准确率首先运行plotFigure文件可画出VMD分解后的图片包括2D分解图、3D分解图功率谱幅值谱等等可完全满足大家的需求接着是分类效果图包括训练集与测试集其次是混淆矩阵图包括训练集与测试集以及每个状态的包络熵可自行替换为其他适应度函数最后是打印出来的损失函数与准确率曲线六边形分类指标图ROC曲线以及BiGRU网络结构图以上所有图片作者都已精心整理过代码都可以一键运行main直接出图不像其他代码一样需要每个文件运行很多次不信的话可以看下面文件夹截图非常清晰明了并且有使用说明最后命令行窗口也会显示六种分类指标包括多边形面积PAM、分类准确率、灵敏度、特异性、曲线下面积AUC、Kappa系数以及F_measure可以大大增加论文工作量其中刚刚讲到的数据预处理部分已帮大家整理成Excel格式特征提取与故障诊断部分已全部包含在main文件及其子函数中VMD画图部分则在plotFigure文件中非常清晰。部分代码展示%% 读取数据已将原始数据整理完放入Excel中 res xlsread(东南大学齿轮箱数据.xlsx); ​ %% 设置参数 D 2; % 优化变量数目 lb [100 3]; % 下限值分别是a,k ub [2500 10]; % 上限值 T 15; % 最大迭代数目 N 10; % 种群规模 vmddata []; samplenum size(res,1)/10; …… …… …… %% 分析数据 num_class length(unique(data(:, end))); % 类别数Excel最后一列放类别 num_dim size(data, 2) - 1; % 特征维度 num_res size(data, 1); % 样本数每一行是一个样本 num_size 0.7; % 训练集占数据集的比例 data data(randperm(num_res), :); % 打乱数据集不打乱数据时注释该行 flag_conusion 1; % 标志位为1打开混淆矩阵要求2018版本及以上 ​ %% 设置变量存储数据 P_train []; P_test []; T_train []; T_test []; ​ %% 划分数据集 for i 1 : num_class mid_res data((data(:, end) i), :); % 循环取出不同类别的样本 mid_size size(mid_res, 1); % 得到不同类别样本个数 mid_tiran round(num_size * mid_size); % 得到该类别的训练样本个数 ​ P_train [P_train; mid_res(1: mid_tiran, 1: end - 1)]; % 训练集输入 T_train [T_train; mid_res(1: mid_tiran, end)]; % 训练集输出 ​ P_test [P_test; mid_res(mid_tiran 1: end, 1: end - 1)]; % 测试集输入 T_test [T_test; mid_res(mid_tiran 1: end, end)]; % 测试集输出 end ​ %% 数据转置 P_train P_train; P_test P_test; T_train T_train; T_test T_test; ​ %% 得到训练集和测试样本个数 M size(P_train, 2); N size(P_test , 2); ​ %% 数据归一化 [p_train, ps_input] mapminmax(P_train, 0, 1); p_test mapminmax(apply, P_test, ps_input); ​ t_train categorical(T_train); t_test categorical(T_test );完整代码获取如果需要以上完整代码只需点击下方小卡片再后台回复关键字不区分大小写故障诊断单品

相关新闻