news 2026/5/1 2:47:09

大型压缩机气阀失效诊断【附代码】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大型压缩机气阀失效诊断【附代码】

博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 如需沟通交流,扫描文章底部二维码。


(1)基于多尺度熵与随机森林的阀片裂纹检测:

往复式压缩机气阀阀片裂纹会导致压力脉动异常和温度升高。提出一种从阀腔振动信号和排气压力脉动信号中提取多尺度散布熵的方法。首先将振动信号进行粗粒化,构造不同尺度因子(从1到10)的序列,对每个尺度序列计算散布熵,得到10维多尺度散布熵特征。同时从压力脉动信号中提取峰值、峰峰值、波形因子等6个时域指标。然后采用随机森林进行特征重要性排序,选择排名前12的特征作为最终特征向量。在6M80型压缩机上模拟了吸气阀和排气阀的阀片裂纹(0.5mm,1mm,2mm三种长度),共采集750组数据。该方法的裂纹存在性检测准确率为94.7%,裂纹长度分类(三级)准确率为85.6%。

(2)深度置信网络与马尔可夫链的失效演化预测:

为了预测阀片裂纹从萌生到断裂的演化进程,建立了一个混合模型DBN-MC。首先使用深度置信网络(三层RBM堆叠)从振动信号的包络谱中无监督学习深度特征,然后通过softmax回归输出当前健康状态等级(健康、轻微裂纹、严重裂纹、即将断裂)。同时根据历史状态序列,利用一阶马尔可夫链计算状态转移概率矩阵,并利用DBN特征来修正转移概率。模型可以给出未来若干小时后的状态概率分布。在实际运行数据中,该模型提前12小时正确预测了82%的阀片断裂事件,平均预警提前量为9.6小时。

(3)气阀失效模式的可解释性规则提取:

为了提高诊断结果的可信度,设计了一种基于模糊化特征与决策树的可解释诊断模块。首先将连续特征(如振动幅值、温度)通过三角形隶属函数转换为模糊语义标签(低、中、高)。然后使用CART决策树从模糊化后的特征集中学习可读的if-then规则,例如\若振动幅值为高且压力波动为高且排气温度为中,则判定为排气阀裂纹\。通过后剪枝控制规则数量在8~12条之间。该规则集的准确率虽略低于黑箱模型(91.2% vs 94.7%),但每条规则都易于现场工程师理解,且能够给出故障的可解释归因。在现场维护中,基于规则的辅助诊断平均减少34%的冗余检查时间。,"import torch

import torch.nn as nn

import numpy as np

from sklearn.ensemble import RandomForestClassifier

from sklearn.tree import DecisionTreeClassifier

import pywt

def multiscale_dispersion_entropy(signal, m=2, c=6, tau_max=10):

# 执行多尺度散布熵 (简化实现)

scales = []

for tau in range(1, tau_max+1):

coarse = np.mean(signal.reshape(-1, tau), axis=1) if len(signal) % tau == 0 else signal[:-(len(signal)%tau)].reshape(-1, tau).mean(axis=1)

# 映射到分类序列

eps = np.linspace(coarse.min(), coarse.max(), c+1)

classes = np.digitize(coarse, eps) - 1

classes = np.clip(classes, 0, c-1)

# 计算散布模式概率

patterns = []

for i in range(len(classes)-m+1):

pat = tuple(classes[i:i+m])

patterns.append(pat)

unique, counts = np.unique(patterns, return_counts=True)

p = counts / counts.sum()

ent = -np.sum(p * np.log(p+1e-8))

scales.append(ent)

return np.array(scales)

class RBM(nn.Module):

def __init__(self, n_vis, n_hid):

super().__init__()

self.W = nn.Parameter(torch.randn(n_vis, n_hid)*0.1)

self.v_bias = nn.Parameter(torch.zeros(n_vis))

self.h_bias = nn.Parameter(torch.zeros(n_hid))

def forward(self, v):

h_prob = torch.sigmoid(F.linear(v, self.W.t(), self.h_bias))

return h_prob

class DeepBeliefNet(nn.Module):

def __init__(self, layers):

super().__init__()

self.rbms = nn.ModuleList([RBM(layers[i], layers[i+1]) for i in range(len(layers)-1)])

def pretrain(self, data, epochs=10):

v = data

for rbm in self.rbms:

for _ in range(epochs):

h_prob = rbm(v)

v_neg = rbm.gibbs_sample(v)

pos_assoc = torch.matmul(v.t(), h_prob)

neg_assoc = torch.matmul(v_neg.t(), rbm(v_neg))

rbm.W.data += 0.01 * (pos_assoc - neg_assoc) / len(v)

rbm.v_bias.data += 0.01 * (v - v_neg).mean(0)

rbm.h_bias.data += 0.01 * (h_prob - rbm(v_neg)).mean

(0)

v = h_prob

class MarkovChainPredictor:

def __init__(self, states=4):

self.trans = np.ones((states, states)) / states

def update_trans(self, state_seq):

for i in range(len(state_seq)-1):

self.trans[state_seq[i], state_seq[i+1]] += 1

self.trans /= self.trans.sum(axis=1, keepdims=True)

def predict(self, current_state, steps=12):

prob = np.eye(len(self.trans))[current_state]

for _ in range(steps):

prob = prob @ self.trans

return prob

def fuzzy_membership(x, low=0.2, mid=0.5, high=0.8):

fuzzy = np.zeros

(3)

if x <= low:

fuzzy[0] = 1.0

elif x <= mid:

fuzzy[0] = (mid - x)/(mid-low)

fuzzy[1] = (x-low)/(mid-low)

elif x <= high:

fuzzy[1] = (high - x)/(high-mid)

fuzzy[2] = (x-mid)/(high-mid)

else:

fuzzy[2] = 1.0

return fuzzy

def extract_interpretable_rules(train_features, train_labels):

# 模糊化特征

fuzzy_feat = []

for feat in train_features:

fuz = []

for v in feat:

fuz.extend(fuzzy_membership(v))

fuzzy_feat.append(fuz)

clf = DecisionTreeClassifier(max_depth=4, min_samples_split=10)

clf.fit(fuzzy_feat, train_labels)

# 提取规则文本

rule_text = []

for i, path in enumerate(clf.decision_path(fuzzy_feat)):

# 简化: 只返回决策树的文本表示

pass

return clf


如有问题,可以直接沟通

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

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

用QEMU模拟RISC-V开发板:手把手带你编译并运行OpenHarmony轻量系统

用QEMU模拟RISC-V开发板&#xff1a;手把手带你编译并运行OpenHarmony轻量系统 在嵌入式开发领域&#xff0c;RISC-V架构以其开放性和灵活性正迅速崛起。但对于许多学习者来说&#xff0c;获取真实的RISC-V开发板仍存在成本和渠道障碍。本文将展示如何利用QEMU这一强大的虚拟化…

作者头像 李华
网站建设 2026/5/1 2:41:25

扩散模型在4D运动感知部件分割中的应用与优化

1. 项目概述&#xff1a;当扩散模型遇见4D运动感知部件分割在动画制作和3D内容创作领域&#xff0c;手工为角色模型添加骨骼绑定&#xff08;rigging&#xff09;通常需要专业人员数小时甚至数天的工作量。传统3D部件分割方法面临三大核心挑战&#xff1a;1) 依赖静态几何特征难…

作者头像 李华