铁路道岔转换设备故障诊断【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1动作功率曲线与振动信号的联合时频分析道岔转换设备转辙机动作过程中的功率曲线和振动信号蕴含丰富的机械状态信息。提出一种基于同步挤压小波变换的特征提取方法将功率曲线和加速度信号分别转换为高分辨率时频谱。然后从时频谱中提取能量时变曲线、瞬时频率波动率、峰值能量出现时间等共18个指标。同时从原始功率曲线中直接提取动作时间、最大功率、末尾功率等5个参数。将所有特征归一化后输入随机森林分类器。在某铁路局采集了S700K型转辙机正常、缺油、齿轮磨损、电机轴承卡滞四种状态各300次动作数据分类准确率达到94.3%。其中功率-振动联合特征比单一功率特征的准确率高出12个百分点。2基于多实例学习的动作过程异常定位一次完整的道岔转换过程持续数秒其中异常可能仅出现在某个短时段。采用多实例学习框架MIL-Diagnosis将每个动作功率曲线切分为20个等长片段每个片段作为一个实例。模型基于注意力机制自动学习每个实例对整体故障分类的贡献权重通过加权聚合得到整体包特征再进行分类。同时根据高权重的实例可以反推出异常发生的时间窗。在齿轮磨损故障数据中该方法成功定位到故障片段与人工标记的一致率达89%并且平均定位误差在0.2秒内。3跨线路转辙机迁移学习的剩余寿命预测不同铁路线路的转辙机型号相同但使用工况每天动作次数、环境温度不同导致寿命分布偏移。设计了一种基于对抗域适应的回归网络DA-RUL。源域为实验室加速寿命试验数据标签完整目标域为现场线路实际运行数据仅健康数据或很少故障数据。网络包含特征提取器、寿命回归器和域判别器。通过域判别器与特征提取器的对抗训练使特征提取器学习到不依赖域信息的退化特征。回归器在源域监督下学习预测剩余寿命。在广深线转辙机10台设备上测试仅用1台设备的少量全寿命数据标记其他9台设备寿命预测的平均绝对百分比误差为18%而无迁移时误差为35%。,import torchimport torch.nn as nnimport torch.nn.functional as Fimport numpy as npfrom scipy.signal import cwt, morlet2def synchrosqueezing(x, fs1000, waveletmorlet):# 简化的同步挤压小波变换返回时频谱能量矩阵widths np.arange(1, 51)cwtmatr cwt(x, morlet2, widths)freq np.fft.fftfreq(len(cwtmatr[0]), d1/fs)# 同步挤压算法省略返回幅度谱spect np.abs(cwtmatr)return spectclass MILAttention(nn.Module):def __init__(self, feat_dim64):super().__init__()self.attn nn.Sequential(nn.Linear(feat_dim, 32),nn.Tanh(),nn.Linear(32, 1))def forward(self, instance_feats):# instance_feats: (B, num_instances, feat_dim)scores self.attn(instance_feats) # (B, N, 1)weights F.softmax(scores, dim1)bag_feat (weights * instance_feats).sum(dim1)return bag_feat, weightsclass MILDiagnosis(nn.Module):def __init__(self, input_dim23, feat_dim64, num_classes4):super().__init__()self.feat_ext nn.Linear(input_dim, feat_dim)self.attn MILAttention(feat_dim)self.classifier nn.Linear(feat_dim, num_classes)def forward(self, x):# x: (B, N, input_dim)feats F.relu(self.feat_ext(x))bag_feat, attn_weights self.attn(feats)logits self.classifier(bag_feat)return logits, attn_weightsclass DomainAdversarialRegressor(nn.Module):def __init__(self, feat_dim64, reg_dim1):super().__init__()self.feature_extractor nn.Sequential(nn.Linear(20, 64),nn.ReLU(),nn.Linear(64, feat_dim))self.regressor nn.Linear(feat_dim, reg_dim)self.domain_classifier nn.Sequential(nn.Linear(feat_dim, 32),nn.ReLU(),nn.Linear(32, 2))def forward(self, x, alpha1.0):feat self.feature_extractor(x)reg_out self.regressor(feat)reverse_feat ReverseLayerF.apply(feat, alpha)domain_out self.domain_classifier(reverse_feat)return reg_out, domain_outclass ReverseLayerF(torch.autograd.Function):staticmethoddef forward(ctx, x, alpha):ctx.alpha alphareturn x.view_as(x)staticmethoddef backward(ctx, grad_output):return grad_output.neg() * ctx.alpha, Nonedef compute_da_loss(domain_pred, domain_label):return F.cross_entropy(domain_pred, domain_label)def compute_reg_loss(reg_pred, reg_target):return F.l1_loss(reg_pred, reg_target)如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2570590.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!