城轨牵引变压器在线监测与故障诊断【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。
✅ 专业定制毕设、代码
✅ 如需沟通交流,查看文章底部二维码
(1)振动特性引导的声学信号自适应降噪方法:
针对牵引变电站噪声干扰严重导致声学诊断不准的问题,提出一种利用振动信号引导声学信号降噪的物理信息嵌入神经网络。物理规律表明,声音由振动产生,两者在时频域具有高度相似性。基于此,构建一个生成对抗网络,其中生成器的输入为含噪声学信号,同时接收振动信号作为条件引导。生成器采用U-Net结构,通过跳跃连接保留细节。判别器判断生成的声学信号是否与真实干净声学信号在振动信号条件下的分布一致。训练分为两阶段:第一阶段使用振动信号通过预训练编码器提取特征,第二阶段将特征注入生成器。该方法能够有效从强噪声中恢复声学信号,信噪比提升15dB以上。
(2)双注意力机制与改进损失函数的微弱故障识别:
针对早期微弱故障声纹特征不明显的问题,提出一种双注意力机制CNN。第一个注意力为通道注意力,学习每个特征通道的重要性;第二个为空间注意力,学习时频谱图上不同区域的重要性。两个注意力串联形成双注意力模块。同时,改进损失函数为余弦指数损失,增加类间距离且缩小类内距离,公式为 L = exp(cos_sim) * (1 - cos_sim)。实验证明,该方法对早期匝间短路故障的识别准确率达到96.5%。
(3)电-热-流多物理域模型与LSTM-MLP热点温度在线计算:
为解决PT100测温无法获取内部热点温度的问题,建立牵引变压器的电-热-流耦合多物理域模型,通过有限元仿真生成大量热点温度数据。然后训练一个LSTM-MLP组合神经网络:LSTM处理负载电流时间序列,MLP处理环境温度、冷却油流速等静态变量,输出热点温度估计值。实际部署时不需加装额外传感器,仅利用现有电量参数即可在线计算热点温度,误差小于3℃。利用并联运行的变压器红外图像对比,实现异常发热区域的定位。
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.cuda.amp import autocast
# 双注意力模块
class DualAttention(nn.Module):
def __init__(self, channels):
super().__init__()
self.channel_att = nn.Sequential(
nn.AdaptiveAvgPool2d(1),
nn.Conv2d(channels, channels//16, 1),
nn.ReLU(),
nn.Conv2d(channels//16, channels, 1),
nn.Sigmoid()
)
self.spatial_att = nn.Sequential(
nn.Conv2d(channels, 1, kernel_size=3, padding=1),
nn.Sigmoid()
)
def forward(self, x):
ca = self.channel_att(x)
sa = self.spatial_att(x)
return x * ca * sa
# 余弦指数损失
class CosineExpLoss(nn.Module):
def __init__(self, margin=0.2):
super().__init__()
self.margin = margin
def forward(self, x, y):
# x: features before classifier, y: labels
# :假设已经有类中心
cos_sim = F.cosine_similarity(x, y, dim=1)
loss = torch.exp(cos_sim) * (1 - cos_sim - self.margin).relu()
return loss.mean()
# 物理信息嵌入生成器(U-Net with vibration condition)
class PhysicAwareGenerator(nn.Module):
def __init__(self, in_channels=1, cond_dim=64):
super().__init__()
self.down1 = nn.Conv2d(in_channels, 32, 3,2,1)
self.down2 = nn.Conv2d(32,64,3,2,1)
self.up1 = nn.ConvTranspose2d(64,32,3,2,1)
self.up2 = nn.ConvTranspose2d(32,1,3,2,1)
self.cond_proj = nn.Linear(cond_dim, 32*32) # 假设32x32特征图
def forward(self, noisy_audio, vib_feat):
# vib_feat: 振动特征向量
cond = self.cond_proj(vib_feat).view(-1,1,32,32)
x = self.down1(noisy_audio)
x = x + cond
x = self.down2(x)
x = self.up1(x)
x = self.up2(x)
return torch.tanh(x)
# LSTM-MLP混合模型
class LSTMMLP(nn.Module):
def __init__(self, lstm_input=1, lstm_hid=64, mlp_input=2):
super().__init__()
self.lstm = nn.LSTM(lstm_input, lstm_hid, batch_first=True)
self.mlp = nn.Sequential(nn.Linear(mlp_input, 16), nn.ReLU())
self.fc = nn.Linear(lstm_hid+16, 1)
def forward(self, current_seq, static_vars):
lstm_out, _ = self.lstm(current_seq)
lstm_feat = lstm_out[:, -1, :]
mlp_feat = self.mlp(static_vars)
fused = torch.cat([lstm_feat, mlp_feat], dim=1)
return self.fc(fused)
",


如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
更多推荐



所有评论(0)