CPN故障诊断(MATLAB)

CPN(Colored Petri Net,彩色Petri网)是在传统Petri网的基础上进行扩展的高级Petri网。它在故障诊断领域有着广泛的应用。

CPN故障诊断的主要思想和步骤如下:

建模:根据系统的结构和功能,采用CPN构建系统的模型。将系统不同组件表示为网的位置,数据/信号流表示为网的转换,故障表示为额外的转换。

状态空间分析:对CPN模型进行状态空间分析,枚举系统所有可能的状态。确定正常和故障状态。

仿真:对CPN模型进行仿真,通过给模型输入不同的事件序列,分析状态和标识的变化。

故障检测:通过对比正常模型和故障模型的仿真结果,判断系统是否发生故障以及故障类型。

诊断:追踪故障状态对应的事件序列,分析故障发生的原因,给出诊断报告。

相比传统方法,CPN故障诊断通过视觉化建模和仿真,能够直观高效地分析系统的故障,是一种有效的现代故障诊断方法。

%% 对向传播网络:CPN神经网络对轴承故障类型判断主程序

clc;close all;clear all;%清除空间

%% --- (1)预处理开始--

%% 产生样本

[PMatrix,T]=gendataFun();

[L01,L02]=size(PMatrix);

%对权值进初始化

PData=PMatrix;%输入数据

%% 样本转换为CPN需要的结果

TData=trancT2TData(T);%输出数据转换为CPN需要的结构

[k31,L03]=size(TData);%测量数据的矩阵大小

%% --- 预处理结束--

T_out01=TData;

MaxIte=1000;%学习次数

%% (3)开始CPN训练---

B0=0.01;

TrainNumber=100;

alfa=0.1;

[Out,w,v,com_Num]=cpns(PData,TData,B0,alfa,TrainNumber);%训练

Out;

%% 开始CPN训练结束---

%开始网络回想,其输入模式为Ptest01

n=0;%计算准确率的计数器

PredictionAll=zeros(L01,1);%记录预测值

for t01=1:L01

Ptest01=PMatrix(t01,:);%载入预测样本的输入数据

Ttest01=TData(t01,:);%载入预测样本的输出数据

%初始化Pc

PredictionAll(t01,1)=CPNPrediction(Ptest01,L03,w,v,com_Num);

% disp('真实结果');

Treal=T(t01);

% disp('预测结果');

Prediction=PredictionAll(t01,1);

if Treal==Prediction

n=n+1;

end

end

%% 把CPN的结果转化为自然语言

FaultTypes={'第一缸喷油器针阀磨损','正常','第一缸喷油器压力过小','供油提前角提前','其他'};

disp('诊断结果');

fprintf(' %s %s %s %s %s\n', '样本序号','实际类别','预测类别','正/误','故障类型');

for i=1:L01

s1=num2str(i);

s2=num2str(T(i));

s3=num2str(PredictionAll(i,1));

if T(i)==PredictionAll(i,1)

s4='正确';

else

s4='错误';

end

s5=FaultTypes{PredictionAll(i,1)};

fprintf(' %s %s %s %s %s \n', s1,s2,s3,s4,s5);

end

disp('正确率')

[num2str(n/L01*100),'%']

figure;

plot(1:L01,PredictionAll,'bo');

hold on;

plot(1:L01,T,'r*');

legend('预测故障类型','实际故障类型');

s22=['CPN神经网络对轴承故障类型的预测与实际类型对比, 误差='];

title(s22);

诊断结果

样本序号 实际类别 预测类别 正/误 故障类型

1 1 1 正确 第一缸喷油器针阀磨损

2 1 1 正确 第一缸喷油器针阀磨损

3 1 1 正确 第一缸喷油器针阀磨损

4 1 1 正确 第一缸喷油器针阀磨损

5 1 1 正确 第一缸喷油器针阀磨损

6 1 1 正确 第一缸喷油器针阀磨损

7 1 1 正确 第一缸喷油器针阀磨损

8 1 1 正确 第一缸喷油器针阀磨损

9 1 1 正确 第一缸喷油器针阀磨损

10 1 1 正确 第一缸喷油器针阀磨损

11 2 2 正确 正常

12 2 2 正确 正常

13 2 2 正确 正常

14 2 2 正确 正常

15 2 2 正确 正常

16 2 2 正确 正常

17 2 2 正确 正常

18 2 2 正确 正常

19 2 2 正确 正常

20 2 2 正确 正常

21 3 3 正确 第一缸喷油器压力过小

22 3 3 正确 第一缸喷油器压力过小

23 3 3 正确 第一缸喷油器压力过小

24 3 3 正确 第一缸喷油器压力过小

25 3 3 正确 第一缸喷油器压力过小

26 3 3 正确 第一缸喷油器压力过小

27 3 3 正确 第一缸喷油器压力过小

28 3 3 正确 第一缸喷油器压力过小

29 3 3 正确 第一缸喷油器压力过小

30 3 3 正确 第一缸喷油器压力过小

31 4 4 正确 供油提前角提前

32 4 4 正确 供油提前角提前

33 4 4 正确 供油提前角提前

34 4 4 正确 供油提前角提前

35 4 4 正确 供油提前角提前

36 4 4 正确 供油提前角提前

37 4 4 正确 供油提前角提前

38 4 4 正确 供油提前角提前

39 4 4 正确 供油提前角提前

40 4 4 正确 供油提前角提前

41 5 5 正确 其他

42 5 5 正确 其他

43 5 5 正确 其他

44 5 5 正确 其他

45 5 5 正确 其他

46 5 5 正确 其他

47 5 5 正确 其他

48 5 5 正确 其他

49 5 5 正确 其他

50 5 5 正确 其他

正确率

ans =

100%

相关推荐
HPC_fac1305206781628 分钟前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
Theodore_10223 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
小陈phd3 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao4 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
----云烟----5 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024065 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
开心工作室_kaic5 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it5 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
武子康5 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神6 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式