news 2026/10/12 10:10:30

基于物理信息神经网络PINN的滚动轴承退化趋势分析(Pytorch)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于物理信息神经网络PINN的滚动轴承退化趋势分析(Pytorch)

算法主要实现基于物理信息神经网络PINN的滚动轴承退化趋势分析。首先从轴承振动信号中提取RMS和最大值作为退化特征指标,通过分析信号特征确定故障起始时间(FPT)。然后构建融合物理先验知识的深度神经网络模型,该模型不仅学习历史数据规律,还引入退化过程的物理约束(如单调性、加速性等)。在训练阶段,通过优化数据拟合损失和物理约束损失的加权和,使网络学习符合物理规律的退化轨迹。训练完成后,利用学习到的退化模型外推预测轴承达到预设故障阈值的时间,从而计算剩余使用寿命。整个流程实现了数据驱动与物理知识的有机结合,提高了退化趋势预测的准确性和物理合理性。

算法流程可以适当参考:

开始 │ ├─ 数据预处理阶段 │ │ │ ├─ 加载轴承振动信号数据 │ │ │ ├─ 信号分段处理(每段2560个点) │ │ │ ├─ 特征提取:计算每段RMS和最大值 │ │ │ └─ 确定故障起始时间FPT │ ├─ 模型构建阶段 │ │ │ ├─ 设计PINN网络结构(输入层、隐藏层、输出层) │ │ │ ├─ 定义物理约束:退化单调性、加速特性、范围约束 │ │ │ └─ 设置自适应物理权重 │ ├─ 训练阶段 │ │ │ ├─ 准备训练数据(从FPT开始的历史数据) │ │ │ ├─ 定义复合损失函数(数据损失 + 物理损失) │ │ │ ├─ 使用Adam优化器进行训练 │ │ │ ├─ 实现学习率自适应调整 │ │ │ └─ 早停机制防止过拟合 │ ├─ 预测阶段 │ │ │ ├─ 使用训练好的模型进行退化趋势外推 │ │ │ ├─ 监测预测值达到故障阈值的时间 │ │ │ └─ 计算预测的故障时间FT │ ├─ 结果评估 │ │ │ ├─ 比较预测FT与实际FT │ │ │ ├─ 计算预测误差 │ │ │ └─ 生成可视化分析图表 │ └─ 结束

详细算法步骤

第一步,进行轴承振动数据的采集与预处理,将连续的振动信号分割为固定长度的数据段,为后续特征提取做好准备。

第二步,从每段振动信号中提取能够反映轴承健康状态的关键特征指标,包括表征信号能量的均方根值和体现信号冲击特性的最大值特征。

第三步,分析提取的特征序列,确定轴承性能开始显著退化的故障起始时间点,作为后续建模的基准参考。

第四步,构建物理信息神经网络模型架构,设计包含多个隐藏层的深度网络结构,并确定合适的激活函数。

第五步,在神经网络中嵌入轴承退化过程的物理先验知识,包括退化趋势的单调递增约束、退化速率的加速特性以及退化值的合理范围限制。

第六步,准备模型训练所需的数据样本,选取从故障起始时间开始的历史观测数据作为训练输入和目标输出。

第七步,定义包含数据拟合项和物理约束项的复合损失函数,通过加权求和的方式平衡数据驱动学习和物理规律遵循。

第八步,采用自适应优化算法对网络参数进行迭代更新,同时引入学习率动态调整策略以提高训练效率。

第九步,实施早停机制来防止模型过拟合,当验证损失不再改善时及时终止训练过程。

第十步,利用训练完成的物理信息神经网络模型对轴承未来退化趋势进行预测推演,模拟性能指标随时间的变化轨迹。

第十一步,根据预设的故障阈值判断标准,确定预测的退化曲线达到临界条件的时间点,即为预测的故障发生时间。

第十二步,将模型预测结果与实际观测数据进行对比分析,评估预测精度并生成全面的可视化分析报告。

实验运行结果详细分析

模型初始化与数据加载:

成功加载了PyTorch 2.2.2版本和三个轴承数据文件(Bearing1_1、1_3、1_4)

提取了每个轴承的振动信号特征(RMS和最大值),并计算了故障起始时间FPT

三个轴承的FPT分别为1861、1577、948个时间单位

PINN模型训练效果:

轴承1_1:训练3000步,损失从0.63降至0.048,预测FT=2756(实际2763),误差仅7

轴承1_3:训练3000步,损失从0.707降至0.054,预测FT=2279(实际2287),误差8

轴承1_4:训练3000步,损失从2.84降至0.013,预测FT=1147(实际1139),误差8

预测精度分析:

平均绝对误差仅7.67个时间单位,精度较高

3个轴承的预测误差均在10个时间单位以内

物理约束权重自适应调整(0.178、0.167、0.254),体现了数据驱动的适应性

# 导入必要的模块 import os import time import scipy.io import scipy.stats from matplotlib import pyplot as plt import numpy as np import pandas as pd import torch import torch.nn as nn import torch.optim as optim from sklearn.preprocessing import StandardScaler import warnings warnings.filterwarnings('ignore') print("PyTorch版本:", torch.__version__) # 载入数据文件 PHM_path = 'PHM' PHM_bearing_files = [os.path.join(PHM_path, file) for file in os.listdir(PHM_path)] # 将mat文件转换为数组的函数 def mat_to_arr(file): """ 将MATLAB的.mat文件转换为Python数组 参数: file: 文件路径 返回: h: 原始振动信号 FPT: 故障起始时间 kurtosis: 峭度指标 rms: 均方根值 ma: 最大值 """ # 加载mat文件并重塑为1维数组 h = scipy.io.loadmat(file)['h'].reshape(-1) # 将信号重塑为多段,每段2560个点 h2 = h.reshape(-1, 2560) # 计算每段的峭度(反映信号尖峰程度的统计量) kurtosis = np.array([scipy.stats.kurtosis(i) for i in h2]) # 计算每段的均方根值(反映信号能量大小的指标) rms = np.array([np.mean(i**2)**0.5 for i in h2]) # 对RMS进行平滑处理,使用[0.3,0.4,0.3]的卷积核 rms = np.convolve(rms, [0.3, 0.4, 0.3], mode='same') # 计算每段信号的绝对最大值 ma = np.array([np.max(np.abs(i)) for i in h2]) # 计算故障起始时间(Fault Progression Time) FPT = int(len(h2)) * 1700 / 2560 print("故障起始时间FPT:", FPT) return h, FPT, kurtosis, rms, ma # 设置测试轴承 test_bearing = ['1_1', '1_3', '1_4'] test_bearing_files = [] for f in PHM_bearing_files: if f[-7:-4] in test_bearing: test_bearing_files.append(f) print("测试轴承文件:", test_bearing_files) # 定义特征提取函数 def get_fea_FPT(bearing_files): """ 从轴承数据中提取特征和故障起始时间 参数: bearing_files: 轴承数据文件列表 返回: feature_list: 特征列表 FPT_list: 故障起始时间列表 """ feature_list = [] FPT_list = [] for i, file in enumerate(bearing_files): # 获取数据 h, FPT, kurtosis, rms, ma = mat_to_arr(file) h2 = h.reshape(-1, 2560) # 提取特征:RMS和最大值 fea = np.concatenate([ rms[:].reshape(-1, 1), # RMS特征 ma[:].reshape(-1, 1), # 最大值特征 ], axis=1) print(f"文件: {file[-14:-4]}, 数据形状: {h2.shape}, 特征形状: {fea.shape}, FPT: {FPT}") feature_list.append(fea) FPT_list.append(FPT) return feature_list, FPT_list

参考文章:

基于物理信息神经网络PINN的滚动轴承退化趋势分析(Pytorch) - 哥廷根数学学派的文章
https://zhuanlan.zhihu.com/p/1970778797109379648

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 23:43:21

JLink驱动支持多核MCU调试的操作实践案例

以下是对您提供的技术博文进行 深度润色与结构化重构后的专业级技术文章 。全文已彻底去除AI生成痕迹,强化工程语境、实战逻辑与教学节奏,语言更贴近资深嵌入式工程师的表达习惯——既有“踩坑”经验的坦率分享,也有底层机制的精准拆解&…

作者头像 李华
网站建设 2026/10/11 5:58:33

告别繁琐配置!PyTorch-2.x-Universal-Dev-v1.0一键启动

告别繁琐配置!PyTorch-2.x-Universal-Dev-v1.0一键启动 1. 为什么你需要这个镜像? 你是否经历过这样的场景:刚买来一台新机器,兴致勃勃想跑通第一个深度学习模型,结果卡在环境配置上整整半天? pip insta…

作者头像 李华
网站建设 2026/10/10 6:51:43

颠覆级单机体验:PlugY全功能解析与实战指南

颠覆级单机体验:PlugY全功能解析与实战指南 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 在暗黑破坏神2的单机游戏领域,玩家长期受限于原版…

作者头像 李华
网站建设 2026/10/11 0:01:18

炉石传说智能脚本完全指南:从入门到精通的实用技巧

炉石传说智能脚本完全指南:从入门到精通的实用技巧 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-S…

作者头像 李华
网站建设 2026/10/11 2:50:21

3分钟掌握DLSS监控:从新手到专家的效能工具

3分钟掌握DLSS监控:从新手到专家的效能工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper ——DLSS调试指示器配置指南与注册表设置技巧 【核心价值定位】 如何让DLSS技术从"黑箱"变为可视化工…

作者头像 李华
网站建设 2026/10/11 2:18:37

突破式开源图像浏览器:ImageGlass重新定义高效图片浏览体验

突破式开源图像浏览器:ImageGlass重新定义高效图片浏览体验 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 你是否正在寻找一款能够彻底改变图片浏览体验的工具…

作者头像 李华