✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1车网耦合精细化建模与故障数据生成针对重载铁路牵引供电系统短路电流与大负载电流难以区分的问题建立了包含牵引变电所、接触网和电力机车的车网耦合仿真模型。采用三相异步电机与四象限整流器结合的方式构建HXD2B型机车负载模型克服了传统恒功率负载无法反映机车特性的缺陷。在Simulink平台中精细化模拟牵引网分布参数并设置了正常重载、区段供电、以及不同类型短路金属性短路、电弧短路等工况采集馈线电流、电压波形数据。特别地为了模拟极端情况设计了电流缓慢爬升的接近阈值场景使得传统继电保护定值难以可靠动作。通过该模型生成了数万组带标签的时序样本为后续智能辨识算法提供了高质量的数据支撑。2深度残差收缩网络与PER-D3QN结合的辨识算法为了提升对含噪声牵引电流信号的特征提取能力设计了一种一维深度残差收缩网络与优先级经验回放D3QN相结合的模型。深度残差收缩网络在残差块中嵌入了软阈值化子网络能够自适应学习噪声阈值消除信号中的无关波动增强关键冲击特征的保真度。将提取的高层特征作为状态输入到Dueling Double DQN中该网络将动作价值分解为状态价值和优势函数同时使用双网络结构缓解过估计问题。优先级经验回放机制根据TD误差绝对值为每个样本分配采样概率使得高误差的困难样本被更频繁地训练加速了模型收敛。该算法能够直接从原始电流波形中学习到区分重负载电流和短路电流的决策策略无需人工提取特征。3多尺度特征融合与抗噪性能优化为了进一步提高模型在强噪声环境下的鲁棒性提出了多尺度特征融合模块。在深度残差收缩网络的浅层设置三个并行的卷积分支分别采用小3、中7、大15尺度的一维卷积核捕获不同时间跨度的模式信息——小尺度核捕捉短路电流的尖峰突变大尺度核感知电流的整体上升趋势。各分支输出经过通道拼接后送入挤压激励模块自适应融合再输入到后续的残差收缩块。同时在训练阶段采用随机添加高斯噪声和幅值扰动的方式进行数据增强使得模型对现场实测中的干扰具有更强的容忍力。在实际牵引变电所录波数据上的测试表明该算法在信噪比为10dB条件下仍能保持98%以上的辨识准确率且推理时延小于2ms满足继电保护辅助判据的实时性要求。import torch import torch.nn as nn import numpy as np # 深度残差收缩网络模块 class ResidualShrinkageBlock(nn.Module): def __init__(self, channels, kernel3): super().__init__() self.conv1 nn.Conv1d(channels, channels, kernel, paddingkernel//2) self.bn1 nn.BatchNorm1d(channels) self.conv2 nn.Conv1d(channels, channels, kernel, paddingkernel//2) self.bn2 nn.BatchNorm1d(channels) # 自适应阈值学习 self.threshold_fc nn.Sequential( nn.AdaptiveAvgPool1d(1), nn.Flatten(), nn.Linear(channels, channels//4), nn.ReLU(), nn.Linear(channels//4, channels), nn.Sigmoid() ) def forward(self, x): shortcut x out torch.relu(self.bn1(self.conv1(x))) out self.bn2(self.conv2(out)) # 软阈值化 thresholds self.threshold_fc(out).unsqueeze(-1) out torch.sign(out) * torch.max(torch.abs(out)-thresholds, torch.zeros_like(out)) return out shortcut # PER-D3QN 网络结构简化 class D3QN(nn.Module): def __init__(self, state_dim128, action_dim2, hidden256): super().__init__() self.feature nn.Sequential(ResidualShrinkageBlock(64), nn.AdaptiveAvgPool1d(1), nn.Flatten()) self.fc nn.Linear(64, hidden) self.V nn.Linear(hidden, 1) # 状态价值 self.A nn.Linear(hidden, action_dim) # 优势函数 def forward(self, x): feat self.feature(x) feat torch.relu(self.fc(feat)) V self.V(feat) A self.A(feat) Q V (A - A.mean(dim1, keepdimTrue)) return Q # 优先级经验回放缓冲区 class PrioritizedReplayBuffer: def __init__(self, capacity10000, alpha0.6): self.buffer []; self.priorities np.zeros(capacity); self.capacity capacity; self.alphaalpha def push(self, transition, td_error): priority (np.abs(td_error) 1e-6) ** self.alpha if len(self.buffer) self.capacity: self.buffer.append(transition) self.priorities[len(self.buffer)-1] priority else: idx np.argmin(self.priorities) self.buffer[idx] transition; self.priorities[idx] priority def sample(self, batch_size, beta0.4): probs self.priorities[:len(self.buffer)] / np.sum(self.priorities[:len(self.buffer)]) indices np.random.choice(len(self.buffer), batch_size, pprobs) weights (len(self.buffer) * probs[indices]) ** (-beta) weights / weights.max() samples [self.buffer[i] for i in indices] return samples, indices, torch.tensor(weights, dtypetorch.float32) 如有问题可以直接沟通