知乎学术咨询获取完整代码
https://www.zhihu.com/consult/people/792359672131756032
或直接+
kang20224
算法提出了一种基于置信规则库与自适应优化的滚动轴承故障诊断方法。首先,通过小波变换('db4'小波基)从原始振动信号中提取时频域特征,构建包含两个特征通道的输入数据。然后,建立一个由25条规则组成的BRB模型,每条规则对应三个故障状态的置信度分布,并引入规则权重和属性权重以增强模型的灵活性。采用CMA-ES进化策略优化算法,以训练集上的均方误差最小为目标,自动调整BRB中的所有可调参数(置信度、规则权重、属性权重),使模型能够准确拟合训练样本。在测试阶段,采用滑动窗口方式对全寿命数据进行逐段评估:每个窗口包含503个连续样本,模型输出每个样本的估计值,经离散化后得到五个量化等级,再根据窗口内各状态(1~3)的占比与预设阈值(59%、50%、12%)比较,判定窗口的整体故障状态。通过三个不同工况(100、212、261)的大量滑动测试,统计整体预测成功率,并以分组柱状图直观展示各状态在不同测试窗口中的准确率变化。该方法将可解释性与CMA-ES的强全局搜索能力相结合,实现了对轴承退化过程的早期预警和准确分类,为工业预测性维护提供了一种有效的智能诊断工具。
算法步骤
初始化与参数设置
设置全局变量:规则总数 L=25、属性总数 M=2、故障类别总数 N=3。
定义优化算法(CMA-ES)的迭代次数 G=200,滑动窗口测试次数 numTests=5000。
数据准备与特征提取
加载训练列表文件 train.txt(可能包含训练样本的路径或索引)。
对三个工况(100、212、261)的训练子集文件(train_100_less.txt 等)调用 wavelet 函数,采用 'db4' 小波基提取特征,得到训练数据矩阵 TrainData_100、TrainData_212、TrainData_261,并合并为总的训练集 TrainData。
同样对三个工况的全数据文件(FullData_100.txt 等)进行小波特征提取,得到全数据矩阵 FullData_100、FullData_212、FullData_261,用于后续滑动窗口测试。
置信规则库(BRB)初始化
调用 generator 函数生成初始的BRB置信度矩阵 BRB_I,维度为 L×N,表示每条规则对每个结论的初始置信度。
初始化规则权重向量 RuleW_I(全1,长度 L)和属性权重向量 AttributeW_I(全1,长度 M)。
将所有待优化参数(置信度、规则权重、属性权重)拼接成一个列向量 x0,作为CMA-ES的初始解。
构建优化约束
设置参数上下界:所有参数在 [0,1] 之间。
构造等式约束矩阵 Aeq,使得每条规则对应的 N 个置信度之和为1。
设置等式约束右端项 beq:前 L 项为1(每条规则置信度和为1),后 L+M 项为0(规则权重和属性权重无和约束)。
CMA-ES优化
调用 cmaes 函数,以初始解 x0、最大迭代次数 G、线性不等式约束 A,b(空)、等式约束 Aeq,beq、上下界 ub,lb 为输入,寻找最优参数向量 Xbest。
优化目标是通过最小化训练集上的误差(由 fun_test 计算)来调整BRB参数,使模型能准确拟合训练数据。
滑动窗口测试(三个工况循环)
对每个工况(t=1,2,3):
将对应的全数据矩阵赋给 FullData,并初始化 AllData(大小为503行×3列)。
进行 numTests 次滑动窗口测试,每次窗口起始位置为 m*6+504,取连续503个样本的两列特征(第1、2列)存入 AllData 的前两列,同时将真实标签(第3列)固定为整个序列的标签(取第一个样本标签作为窗口标签)。
调用 fun_test(Xbest) 计算当前窗口的均方误差 MSE(m) 并获取模型输出 KK(保存为 Z(:,m)),KK 是模型对503个样本的估计值(可能为连续值)。
将连续估计值离散化为1~5的整数标签:
≤1.9 → 1
1.9~2.4 → 2
2.4~3.5 → 3
3.5~4.5 → 4
4.5 → 5
统计窗口内每个离散状态(1、2、3)的个数,并计算其占总样本数的百分比。
根据预设阈值判定窗口的最终预测状态:
若状态1占比 > 59%,预测为状态1;
否则若状态2占比 > 50%,预测为状态2;
否则若状态3占比 > 12%,预测为状态3;
否则自动归为状态3。
比较预测状态与窗口真实标签(AllData(1,3)),若一致则成功计数加1。
记录每个窗口各状态的准确率(即该状态被正确分类的比例)到 accuracyArray,并记录预测分布和预测标签。