航空轴承钢疲劳损伤与剩余寿命预测【附代码】
✅博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 如需沟通交流,扫描文章底部二维码。
(1)球盘式滚动接触疲劳试验机设计及多源信号同步采集:
为了模拟航空轴承在高速、高载荷工况下的滚动接触疲劳过程,自主设计了一台球盘式试验机。该试验机采用三点球-盘接触构型,上试样为氮化硅球,下试样为航空轴承钢盘,液压加载系统施加最高5GPa的赫兹接触应力,电主轴驱动旋转最高转速达15000rpm。为了实现损伤过程的全方位监测,集成了声发射传感器(采样率5MHz)、加速度计(频带0.5-10kHz)、摩擦力矩传感器以及油液颗粒计数器。所有传感器通过NI PXIe同步采集卡实现微秒级时钟同步。通过静应力和模态分析验证了试验机结构刚度满足要求,在最大载荷下变形小于5微米。该试验机能够一次试验获得从损伤萌生到宏观剥落的全寿命多源数据,为数据驱动的寿命预测提供了高质量的数据基础。
(2)多源信号融合与疲劳损伤阶段自适应划分:
利用试验机采集的声发射和振动信号,构建反映材料疲劳损伤演化的复合健康指标。首先对声发射信号进行短时傅里叶变换提取对微裂纹敏感的150-300kHz频带能量,对振动信号提取均方根值和峭度特征。然后采用主成分分析将多维特征降至一维,得到单调递增的退化曲线。为了自动识别疲劳损伤的不同阶段(萌生、稳定扩展、加速扩展、失效),提出了一种基于一阶导数聚类的分割方法:计算退化曲线的斜率序列,使用高斯混合模型对斜率值进行聚类,将斜率绝对值大的区域划分为阶段边界。在8Cr4Mo4V钢的滚动接触疲劳试验中,该方法成功在循环次数达到总寿命的42%时检测到损伤起始点,而传统肉眼观察直到78%才发现剥落。
(3)串行混合深度学习模型与剩余寿命预测:
为了建立从多源信号到剩余寿命的非线性映射,设计了串行混合深度学习网络。第一级使用双向门控循环单元处理声发射和振动信号的时序依赖关系,第二级使用一维卷积神经网络提取局部空间特征,两级之间通过自注意力机制连接。网络的输出为剩余寿命百分比(0到1之间)。在训练时,采用了物理信息约束的损失函数:将剩余寿命预测值与实际剩余寿命的误差,加上对预测曲线单调性的惩罚项(鼓励预测的剩余寿命随时间递减)。在轴承钢的加速疲劳试验中,该模型在寿命中后期的预测平均绝对误差为8.7%寿命百分比,相比传统指数模型和单纯LSTM模型分别降低了62%和34%。此外,利用迁移学习将模型从一种表面粗糙度(Ra=0.1μm)泛化到另一种粗糙度(Ra=0.4μm),仅需少量微调样本即达到相近精度。
import numpy as np import torch import torch.nn as nn from sklearn.decomposition import PCA from sklearn.mixture import GaussianMixture # 多源特征融合与退化指标构建 def build_health_indicator(ae_energy, rms, kurtosis): # ae_energy: 声发射能量序列, rms: 振动有效值, kurtosis: 峭度 features = np.column_stack([ae_energy, rms, kurtosis]) pca = PCA(n_components=1) hi = pca.fit_transform(features).flatten() # 归一化到0-1区间 hi = (hi - hi.min()) / (hi.max() - hi.min() + 1e-8) return hi, pca # 基于斜率聚类的阶段划分 def stage_partition_by_slope(hi, smoothing_window=10): # 平滑退化曲线 smooth = np.convolve(hi, np.ones(smoothing_window)/smoothing_window, mode='valid') slopes = np.gradient(smooth) # 对斜率绝对值进行高斯混合模型聚类(3类:低、中、高变化) gmm = GaussianMixture(n_components=3, random_state=42) labels = gmm.fit_predict(np.abs(slopes).reshape(-1,1)) # 找出高变化(标签为最大均值的那一类)对应的索引作为分割点 mean_slopes = [np.mean(np.abs(slopes)[labels==i]) for i in range(3)] high_change_label = np.argmax(mean_slopes) split_indices = np.where(labels == high_change_label)[0] return split_indices # 串行混合深度学习模型(BiGRU+CNN+Attn) class HybridRULNet(nn.Module): def __init__(self, input_dim, gru_hidden=64, cnn_out=32): super().__init__() self.gru = nn.GRU(input_dim, gru_hidden, batch_first=True, bidirectional=True) self.cnn = nn.Sequential( nn.Conv1d(gru_hidden*2, cnn_out, kernel_size=3, padding=1), nn.ReLU(), nn.AdaptiveAvgPool1d(1) ) self.attn = nn.MultiheadAttention(embed_dim=cnn_out, num_heads=1, batch_first=True) self.fc = nn.Linear(cnn_out, 1) def forward(self, x): # x: (B, T, input_dim) out, _ = self.gru(x) # (B, T, gru_hidden*2) out = out.permute(0,2,1) # (B, C, T) out = self.cnn(out).squeeze(-1) # (B, cnn_out) out = out.unsqueeze(1) # (B, 1, cnn_out) attn_out, _ = self.attn(out, out, out) rul = self.fc(attn_out.squeeze(1)) return rul.squeeze(-1) # 单调性约束的损失函数 def monotonic_penalty_loss(pred_rul, true_rul, alpha=0.1): mse = nn.MSELoss()(pred_rul, true_rul) # 鼓励预测值单调递减(对于剩余寿命,随时间步增加应减少) # 假设输入序列是时间正向,期望 pred_rul 递减 monotonic_penalty = torch.mean(torch.relu(pred_rul[:,1:] - pred_rul[:,:-1])) return mse + alpha * monotonic_penalty # 迁移学习微调示例(冻结部分层) def finetune_model(model, target_loader, lr=1e-4, epochs=50): for param in model.gru.parameters(): param.requires_grad = False # 冻结GRU层 optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=lr) for epoch in range(epochs): for x, y in target_loader: optimizer.zero_grad() pred = model(x) loss = monotonic_penalty_loss(pred, y) loss.backward() optimizer.step() return model如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
