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);

CPN故障诊断(MATLAB)_第1张图片

CPN故障诊断(MATLAB)_第2张图片

诊断结果

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

        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%

你可能感兴趣的:(matlab,人工智能,开发语言)