
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1向量量化变分自编码器的离散码本健康指标构建将原始振动信号分割成固定长度片段输入到向量量化变分自编码器中。编码器输出连续特征经最近邻匹配映射到预定义的离散码本码本大小512向量维度64再将码本向量送入解码器重构信号。训练完成后取每个样本对应的码本索引序列的统计分布类别概率分布作为健康指标。在PHM2012轴承全寿命数据集上该健康指标的单调性达0.83优于传统均方根值的0.67。与连续VAE构建的指标相比离散码本指标对早期微损伤更敏感在寿命前20%阶段即可检测到0.03的指标偏移。2平均绝对距离与窗口间平均方差组合的健康指标质量评估体系提出两个新指标MAD平均绝对距离评估健康指标的总体波动性MV窗口间平均方差评估指标在不同时间窗口的离散程度。两个指标的加权和作为健康指标综合质量分。在对比试验中VQ-VAE指标的MAD0.12MV0.08质量分为0.89而传统峰值因子的质量分为0.61。通过粒子群算法标定指数退化模型参数拟合健康指标的退化轨迹对测试轴承的剩余寿命预测平均绝对百分比误差为13.7%。3基于改进Transformer解码器的端到端寿命预测模型Exformer抛弃两阶段方法直接构建从原始振动到剩余寿命的自回归生成模型。Exformer采用分组注意力机制降低计算复杂度每组头数为4共3组。软阈值降噪模块嵌入在输入嵌入层通过自适应阈值收缩噪声特征。在训练时输入序列预测下一个时间步的信号表征当预测值超过动态阈值时触发寿命终止。在小样本数据集只有5个全寿命轴承上Exformer的预测误差为22.5%而常规LSTM为38.7%。数据增强方面使用条件变分生成对抗网络生成合成退化轨迹将训练集扩增4倍后Exformer误差降至16.3%。import torch import torch.nn as nn import numpy as np from sklearn.metrics import mean_absolute_percentage_error class VectorQuantizer(nn.Module): def __init__(self, num_embeddings512, embedding_dim64): super().__init__() self.embedding nn.Embedding(num_embeddings, embedding_dim) self.embedding.weight.data.uniform_(-1/num_embeddings, 1/num_embeddings) def forward(self, z): z_flat z.view(-1, z.shape[-1]) distances torch.cdist(z_flat, self.embedding.weight) indices distances.argmin(dim1) z_q self.embedding(indices).view(z.shape) return z_q, indices class VQVAE(nn.Module): def __init__(self, input_dim128): super().__init__() self.encoder nn.Sequential(nn.Linear(input_dim, 256), nn.ReLU(), nn.Linear(256, 128), nn.ReLU(), nn.Linear(128, 64)) self.vq VectorQuantizer() self.decoder nn.Sequential(nn.Linear(64, 128), nn.ReLU(), nn.Linear(128, 256), nn.ReLU(), nn.Linear(256, input_dim)) def forward(self, x): z self.encoder(x) z_q, indices self.vq(z) recon self.decoder(z_q) vq_loss torch.mean((z.detach() - z_q)**2) 0.25 * torch.mean((z - z_q.detach())**2) return recon, vq_loss, indices def compute_hq_metrics(hi_curve): # MAD: mean absolute distance from median median np.median(hi_curve) mad np.mean(np.abs(hi_curve - median)) # MV: mean of variances over sliding window (window20) mv np.mean([np.var(hi_curve[i:i20]) for i in range(0, len(hi_curve)-20, 10)]) return mad, mv如有问题可以直接沟通