✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1融合正弦余弦及柯西变异的麻雀搜索算法优化VMD分解针对立井提升系统刚性罐道振动信号的非平稳性和强噪声干扰提出了一种改进的麻雀搜索算法来自适应确定变分模态分解的最优参数。首先在麻雀搜索算法中引入正弦余弦算子来平衡全局探索和局部开发能力同时加入柯西变异扰动以增强种群多样性避免算法陷入局部最优。将SCSSA的适应度函数定义为VMD分解后各模态分量的平均包络熵通过迭代搜索得到最佳模态个数K和惩罚因子α。然后利用最优参数对原始振动信号进行VMD分解得到一系列本征模态函数。根据各IMF与原始信号的相关系数和峭度值筛选出包含主要故障信息的分量进行信号重构。重构后的信号显著提升了信噪比故障冲击特征更加明显。实验表明SCSSA-VMD相比标准VMD在信噪比为-5dB的条件下重构信号的峭度提升了约35%。2一维时频分解与二维GAF图像融合的双通道诊断网络为了充分利用振动信号中的互补信息设计了一个双通道并行诊断模型。通道一接收SCSSA-VMD重构后的一维信号通过一维卷积神经网络提取局部时频特征再输入双向长短期记忆网络捕捉信号在时间序列上的前后依赖关系。通道二采用格拉姆角场将原始一维振动信号转换为二维图像GASF和GADF两个角度场然后通过加权平均融合两种图像生成综合特征图。将融合图像输入二维CNN提取图像中的纹理和形状特征。最终两个通道提取的特征向量通过拼接方式进行融合输入全连接层进行分类。双通道架构使得模型同时具备对时序动态信息和空间结构信息的建模能力。实验结果显示双通道模型在刚性罐道故障诊断中的准确率达到99.44%显著高于单通道模型平均97.78%。3基于双通道融合的残差优化与抗噪性增强为了进一步提升双通道模型的鲁棒性和抗噪能力在网络中引入了残差连接和注意力机制。在每个卷积块后添加跳跃连接确保梯度能够有效传播避免深层网络退化。同时在两个通道的特征融合前分别引入通道注意力模块和空间注意力模块对特征图进行重校准增强与故障相关的特征通道并抑制噪声通道。在训练阶段采用了数据增强策略添加高斯噪声、随机裁剪模拟矿井实际环境中的干扰。在加入信噪比为0dB的噪声测试中双通道融合模型仍能保持97.2%的准确率而普通CNN-BiLSTM模型则降至85%以下。该模型已成功应用于某煤矿立井提升系统实现了对罐道弯曲、接头松动等故障的准确预警。import numpy as np import torch import torch.nn as nn from vmdpy import VMD import pywt # 改进麻雀搜索算法SCSSA class SCSSA: def __init__(self, pop30, max_iter50, dim2, lb[3,100], ub[10,5000]): self.pop pop; self.max_iter max_iter; self.dim dim self.lb np.array(lb); self.ub np.array(ub) def optimize(self, fitness_func): # 种群初始化 positions np.random.uniform(self.lb, self.ub, (self.pop, self.dim)) fitness np.array([fitness_func(p) for p in positions]) for t in range(self.max_iter): # 正弦余弦因子 r1 np.sin(np.pi * t / self.max_iter) * (1 - t/self.max_iter) r2 np.cos(np.pi * t / self.max_iter) # 更新发现者前20% for i in range(int(self.pop*0.2)): pos_new positions[i] r1 * np.random.randn(self.dim) * (positions[i] - positions[0]) # 边界处理并计算新适应度 # 更新加入者 for i in range(int(self.pop*0.2), self.pop): pos_new positions[i] np.random.randn(self.dim) * (positions[np.random.randint(self.pop)] - positions[i]) # 柯西变异扰动 if np.random.rand() 0.1: idx np.random.randint(self.pop) positions[idx] positions[idx] np.random.standard_cauchy(self.dim) # ... 保留最优解 best_idx np.argmin(fitness) return positions[best_idx] def vmd_enhanced(signal, K, alpha): u, _, _ VMD(signal, alpha, 0.5, 0, 10, 500, 0, K) # 根据峭度和相关系数筛选IMF selected [] for i, comp in enumerate(u): kurt np.mean((comp - np.mean(comp))**4) / (np.std(comp)**4 1e-8) corr np.corrcoef(signal, comp)[0,1] if kurt 3 and corr 0.2: selected.append(comp) if len(selected) 0: selected.append(u[-1]) # 保留最后一个 return np.sum(selected, axis0) # 重构信号 # 双通道模型定义 class DualChannelModel(nn.Module): def __init__(self, num_classes): super().__init__() # 通道11D CNN BiLSTM self.conv1d nn.Sequential( nn.Conv1d(1, 32, 3, padding1), nn.ReLU(), nn.MaxPool1d(2), nn.Conv1d(32, 64, 3), nn.ReLU(), nn.AdaptiveAvgPool1d(32) ) self.bilstm nn.LSTM(64, 64, bidirectionalTrue, batch_firstTrue) # 通道22D CNN接受GAF图像 self.conv2d nn.Sequential( nn.Conv2d(1, 32, 3), nn.ReLU(), nn.MaxPool2d(2), nn.Conv2d(32, 64, 3), nn.ReLU(), nn.AdaptiveAvgPool2d((8,8)) ) self.fc nn.Linear(64*2 64*8*8, 128) # 融合特征维数 self.classifier nn.Linear(128, num_classes) def forward(self, x1d, x2d): feat1 self.conv1d(x1d).permute(0,2,1) lstm_out, _ self.bilstm(feat1) feat1 lstm_out.mean(dim1) feat2 self.conv2d(x2d).view(x2d.size(0), -1) concat torch.cat([feat1, feat2], dim1) fusion torch.relu(self.fc(concat)) return self.classifier(fusion) # GAF图像生成函数 def gramian_angular_field(signal, methodsum): # 归一化到[-1,1] norm_signal (signal - signal.min()) / (signal.max() - signal.min()) * 2 - 1 # 计算角度和半径 phi np.arccos(norm_signal) if method sum: gaf np.cos(phi.reshape(-1,1) phi) else: gaf np.cos(phi.reshape(-1,1) - phi) return gaf def train_dual_channel(): # 模拟数据加载 # ... model DualChannelModel(num_classes4) optimizer torch.optim.Adam(model.parameters()) for epoch in range(50): for (x1d, x2d, y) in train_loader: pred model(x1d, x2d) loss nn.CrossEntropyLoss()(pred, y) loss.backward(); optimizer.step() return model ,如有问题可以直接沟通