文档库 最新最全的文档下载
当前位置:文档库 › 基于某BP神经网络的故障诊断方法

基于某BP神经网络的故障诊断方法

基于某BP神经网络的故障诊断方法
基于某BP神经网络的故障诊断方法

《智能控制基础》

研究生课程设计报告

题目基于BP神经网络的故障诊断方法学院机械与汽车工程学院

专业班级车辆工程

学号221601852020

学生姓名李跃轩

指导教师武晓莉

完成日期2016年12月10日

目录

1 设计概述 (2)

1.1研究对象介绍 (2)

1.2设计内容及目标 (2)

2 设计原理、方法及步骤 (3)

2.1基于BP算法的神经网络模型 (3)

2.2 神经网络信息融合故障诊断步骤 (4)

3 结果及分析 (6)

3.1数据仿真 (6)

3.2 结果分析 (8)

4 设计小结 (9)

参考文献 (10)

附录程序 (11)

1 设计概述

1.1研究对象介绍

信息融合是多源信息综合处理的一项新技术,是将来自某一目标(或状态)的多源信息加以智能化合成,产生比单一信息源更精确、更完全的估计和判决。信息融合所处理的多传感器信息具有更为复杂的形式,可以在不同的信息层次上出现。多传感器信息融合的优点突出地表现在信息的冗余性、容错性、互补性、实时性和低成本性。

神经网络是由大量互联的处理单元连接而成,它是基于现代神经生物学以及认知科学在信息处理领域应用的研究成果。它具有大规模并行模拟处理、连续时间动力学和网络全局作用等特点,有很强的自适应学习和非线性拟合能力,从而可以替代复杂耗时的传统算法,使信号处理过程更接近人类思维活动。

柴油机故障具有相似性,故障与征兆的关系不明确,具有较强的模糊性,故障特征相互交织,柴油机故障诊断是一个复杂的问题。综合柴油机故障的特点以及神经网络的优势,采用基于BP神经网络的多传感器信息融合技术对柴油机机械故障进行诊断。

1.2设计内容及目标

设计内容:针对传统故障诊断方法存在的诊断准确性不高的问题,提出了BP神经网络信息融合的方法,实现对柴油机的机械故障诊断。由多个传感器采集信号,分别经过快速傅里叶变换后获得故障频域特征值,再经BP神经网络对柴油机进行故障局部诊断,能够对相应传感器的不同故障类型做出一个准确地分类,最终完成对汽轮机机械故障的准确诊断。实验结果表明,该方法克服了单个传感器的局限性和不确定性,是一种有效的故障诊断方法。

采用方法:通过BP神经网络进行局部诊断,最终判定故障及故障类型。基于BP神经网络多传感器信息融合,故障诊断方法是特征层状态属性融合,并利用MATLAB仿真。

2 设计原理、方法及步骤

基于神经网络多传感器信息融合故障诊断方法是特征层状态属性融合,也就是特征层联合识别方法,多传感器检测系统为识别提供了比单传感器更多的有关目标(状态)的特征信息,增大了特征空间维数。本文运用神经网络多传感器信息融合方法对机械设备运行状态进行诊断识别,是基于这样一种思想:设备运行状态与其各种征兆参数(温度、压力、电压、电流、振动信号等)之间存在着因果关系,而这种关系之复杂是难用公式表达的,由于神经网络所具有的信息分布式存储方式、大规模自适应并行处理、高度的容错能力等是其可用于模式识别的基础,特别是其学习能力、容错能力和高度的非线性映射能力对机械设备运行状态的不确定性模式识别具有独到之处。

2.1基于BP 算法的神经网络模型

本文采用的是3层BP 神经网络模型,由输入层、隐层和输出层构成,图1所示为一个典型的三层BP 神经网络模型

图1 一个简单的BP 神经网络模型

网络的前馈意义在于每一层节点的输入仅来自前面一层节点的输出。对于输入信号,先前向传播到隐层节点,经过激活函数后,再把隐层节点的输出信息传播到输出节点,最后得到输出结果。

(1)输入层节点(1,2,...,),i i n =其输出i O 等于输入i X ,将变量值传送到第二层。

(2)隐层节点(1,2,...,),j j p =其输入j I ,输出j O 分别为:

1

ωθ==+∑n

j ji i j i I O (2-1)

()1/[1exp()]

j j j O f I I ==+-

(2-2)

式中,ji ω为隐层节点j 与输入层节点i 之间的权值,j θ为隐层节点j 的偏置,

f 为sigmoid 函数,其表达式为:

()1/[1exp()]f x x =+- (2-3)

(3)输出层节点(1,2,...,),k k m =其输入k I ,输出k y 分别为:

1

p

k k j j k

j I O ωθ

==+∑

(2-4)

()1/[1exp()]k k k y f I I ==+- (2-5)

式中,kj ω为输入层节点k 与隐层节点j 之间的连接权值,

k θ为输出层节点k 的偏置。

对于给定的训练样本1,2(,...,)p p pn x x x ,p 为样本数(1,2,...,)p P =,网络输出与训练目标之间的均方误差可表示为:

11p

P p E E p ==∑ (2-6)

2

1

1()2l

P pl pl l E t y -==∑

(2-7) 其中p 为样本数,pl t 为第p 个样本的第l 个输出单元的目标输出结果,pl y 为第p 个样本的第l 个输出单元的网络运算结果。BP 网络训练的过程包括网络内部的前向计算和误差的反向传播,其目的就是通过调整网络内部连接权值使网络输出误差最小。对于多层前馈网络中输入层与隐层之间、隐层与输出层之间连接权值利用BP 算法调整。

2.2 神经网络信息融合故障诊断步骤

神经网络知识表示是一种知识的隐式表示,知识表现为网络的拓扑结构和连

诊断结果

接权值,采用神经网络技术的专家系统,由于神经网络是一种信息存储和处理统一的网络系统,因此,在采用神经网络技术的专家系统中,知识的存储与问题求解过程中的推理过程均在系统的神经网络模块中进行,是推理机和知识库的统一。首先从已有的设备特征信号提取特征数据,经过数据预处理(归一化处理)后作为神经网络输入,从已知的故障结果提取数据作为神经网络输出,构建BP 神经网络,利用已有的特征数据和已知的故障结果数据形成的训练样本集对构建的BP 神经网络进行训练和网络自学习,使BP 神经网络的权值、阀值与已知的故障结果之间存在对应关系达到期望的故障结果输出。当BP 神经网络训练完毕后,就可以利用训练成功的BP 神经网络进行故障诊断。故障诊断的过程如下:

1)将故障样本输入给输入层各节点,同时它也是该层神经元的输出。 2)由式(2-2)求出隐层神经元的输出,并将其作为输出层的输入。 3)从式(2-5)求得输出层神经元的输出。 4)由阈值函数判定输出层神经元的最终输出结果。

柴油机的故障诊断首先从待诊断的故障信号中提取数据并进行数据预处理,而后将待诊断故障数据输入训练成功的神经网络。利用神经网络信息融合进行故障诊断步骤如图2所示:

图2信息融合进行故障诊断步骤

3 结果及分析

3.1数据仿真

以某种柴油机中的4个实际故障样本为例,每个故障样本有5个故障特征值,因此选取网络的输入节点为5。将样本输入到神经网络模型中,每个输出节点代表一种故障类型,则这4种故障类型和一个正常状态共需5个输出节点与之相对应,因此网络的输出节点为5。表3-1训练数据。

表3-1 训练数据

在表3-1 训练数据中,样本序号1~6是正常状态;样本序号7~12

是故障1状态;样本序号13~18是故障2状态;样本序号19~24是故障3状态;样本序号25~30是故障4状态。表3-2是测试数据。

表3-2测试数据

根据故障诊断的特点建立BP 神经网络模型,网络的输入层节点、隐层节点和输出层节点个数分别为5、60和5,设置系统误差为1e-3,学习率为1,最大迭代次数为1000次,其中输入层到隐层之间的激活函数为双曲正切函数,隐层到输出层之间的激活函数设置为logsig 的S 型传递函数,在输出端设置的阈值为0.85,即网络输出值大于0.85的置1,小于等于0.85的置0来处理,利用

MATLAB神经网络工具箱建立BP神经网络模型。

3.2 结果分析

在本文中将正常状态设置为[1 0 0 0 0 ],故障1设置为[0 1 0 0 0 ],故障2设置为[0 0 1 0 0 ],故障3设置为[0 0 0 1 0 ],故障4设置为[0 0 0 0 1 ],输出阈值设置为0.85,即在输出值大于0.85即为1,否则为0。根据输出数据的分析判断属于哪种故障,表3-3为仿真输出。

表3-3仿真输出

将表3-2中“样本序号1”的5个故障特征值输给网络的输入层节点,则网络输出层节点与其对应的输出为表3-3中“样本序号1”所在行的5个输出值,其中只有y2=1.0008>0.85,其他5个输出均远小于0.85,所以,网络故障诊断的结果为故障1;表3-2中“样本序号2”的5个故障特征值输给网络的输入层节点,则网络输出层节点与其对应的输出为表3-3中“样本序号2”所在行的5个输出值,其中只有y1=1.0139>0.85,其他5个输出均远小于0.85,所以,网络故障诊断的结果为正常状态;表3-2中“样本序号3”的5个故障特征值输给网络的输入层节点,则网络输出层节点与其对应的输出为表3-3中“样本序号3”所在行的5个输出值,其中只有y4=0.9923>0.85,其他5个输出均远小于0.85,所以,网络故障诊断的结果为故障4,其他类型的故障诊断以此类推。

4 设计小结

因为学习的专业是车辆工程,因此选择了对柴油机故障诊断这一研究对象。此篇设计经过查阅文献资料,对BP神经网络的故障诊断及Matlab仿真有了一定的认识。柴油机故障诊断是一个非常复杂的过程,其故障与征兆关系不是很明确,存在一种非线性映射关系。BP神经网络具有良好的学习能力,利用BP网络信息融合方法,能够在足够多的样本数目前提下网络保证良好的容错性和鲁棒性是比较好的。所以在故障诊断的过程中,神经网络信息融合发挥其联想记忆和分布并行处理能力,不仅能够诊断出已有的故障还能对故障进行一个预测,从而满足柴油机故障断的要求。人工神经网络信息融合为智能诊断提供了良好的方法,为自适应学习和决策高度智能化控制系统提供了强有力的基础,并具有广泛的应用潜力和发展前景。

参考文献

[1]朱大奇,于盛林.基于D-S证据理论的数据融合算法及其在电路故障诊断中的应用[J].电

子学报,2002, 30(2):221-223.

[2] 王万良.人工智能及其应用(第3版)(附光盘)(BZ)[M]. 高等教育出版社, 2016.

[3] 朱大奇,于盛林.电子电路故障诊断的神经网络数据融合算法[J].东南大学学报(自然科学

版),2001,31(2):87-90.

[4] 何友,王国宏.多传感器信息融合及应用[M].北京:电子工业出版社,2000.

[5] 张绪锦,谭剑波,韩江洪.基于BP神经网络的故障诊断方法[J].系统工程理论与实

践,2002,22(6):61-66.

[6]Y.G. Lei, Z.J. He, Y.Y. Zi, Q. Hu, Fault diagnosis of rotating machinery based on multiple

ANFIS combination with Gas[J].Mech. Syst. Signal Process.2007(21)2280–2294.

[7] V.T. Tran, F. AlThobiani, A. Ball, An approach to fault diagnosis of reciprocating compressor

valves using Teager–Kaiser energy operator and deep belief networks[J].Expert Syst.Appl.2014(41)4113–4122.

附录程序

clc

clear

%%输入训练数据(包括正常数据和故障数据)

%%训练样本中,每一列分别代表:“温度”,“压力”,“电压”,“电流”和“振动信号”;每一行分别代表一个样本

p11=[0.0000 0.0000 0.0013 0.0000 0.0000]';

p12=[0.0074 0.0335 0.0015 0.0032 0.0106]';

p13=[0.0043 0.0223 0.0000 0.0047 0.0053]';

p14=[0.0056 0.0315 0.0012 0.0027 0.0086]';

p15=[0.0063 0.0205 0.0020 0.0033 0.0066]';

p16=[0.0049 0.0300 0.0018 0.0026 0.0078]'; %正常数据

p21=[0.5520 0.3107 0.2581 0.3094 0.2316]';

p22=[0.5452 0.2793 0.2611 0.2988 0.2036]';

p23=[0.5502 0.2458 0.2717 0.3115 0.2347]';

p24=[0.5406 0.2862 0.2645 0.3009 0.2145]';

p25=[0.5604 0.3028 0.2835 0.3125 0.2225]';

p26=[0.5525 0.3125 0.2778 0.3005 0.2164]'; % 故障1

p31=[0.2462 0.1508 0.0947 0.0964 0.0999]';

p32=[0.2535 0.1061 0.0968 0.0971 0.0810]';

p33=[0.2665 0.0894 0.0937 0.0994 0.0908]';

p34=[0.2556 0.1465 0.0988 0.1000 0.1000]';

p35=[0.2628 0.1432 0.0899 0.0965 0.0899]';

p36=[0.2562 0.0999 0.0900 0.0999 0.0998]'; % 故障2

p41=[0.6615 0.5251 0.5195 0.4710 1.0000]';

p42=[0.6738 0.4413 0.5225 0.4732 0.9667]';

p43=[0.6665 0.4749 0.5255 0.4769 0.9758]';

p44=[0.6689 0.4652 0.5200 0.4756 0.9899]';

p45=[0.6700 0.4748 0.5235 0.4825 1.0000]';

p46=[0.6623 0.4832 0.5268 0.4669 0.9887]'; %故障3

p51=[1.000 1.0000 0.9812 1.0000 0.8206]';

p52=[0.9797 0.9777 1.0000 0.9960 0.7759]';

p53=[0.9846 0.9727 0.9847 0.9857 0.7600]';

p54=[0.9800 0.9825 0.9835 0.9887 0.8000]';

p55=[0.9965 0.9934 0.9862 0.9899 0.7800]';

p56=[1.0000 0.9912 0.9938 0.9961 0.8014]'; %故障4

p=[p11 p12 p13 p14 p15 p16 p21 p22 p23 p24 p25 p26 p31 p32 p33 p34 p35 p36 p41 p42 p43 p44 p45 p46 p51 p52 p53 p54 p55 p56];

%将所有的数据:包括正常数据和异常数据放在一个数据集中,将该数据集设置为输入神经网络的特征值

%%对被检测对象类别进行编码(设置目标值,即标签,用二进制类型表示)

t11=[1 0 0 0 0]';

t12=[1 0 0 0 0]';

t13=[1 0 0 0 0]';

t14=[1 0 0 0 0]';

t15=[1 0 0 0 0]';

t16=[1 0 0 0 0]'; % normal

t21=[0 1 0 0 0]';

t22=[0 1 0 0 0]';

t23=[0 1 0 0 0]';

t24=[0 1 0 0 0]';

t25=[0 1 0 0 0]';

t26=[0 1 0 0 0]'; % fault1

t31=[0 0 1 0 0]';

t32=[0 0 1 0 0]';

t33=[0 0 1 0 0]';

t34=[0 0 1 0 0]';

t35=[0 0 1 0 0]';

t36=[0 0 1 0 0]';% fault2

t41=[0 0 0 1 0]';

t42=[0 0 0 1 0]';

t43=[0 0 0 1 0]';

t44=[0 0 0 1 0]';

t45=[0 0 0 1 0]';

t46=[0 0 0 1 0]';% fault3

t51=[0 0 0 0 1]';

t52=[0 0 0 0 1]';

t53=[0 0 0 0 1]';

t54=[0 0 0 0 1]';

t55=[0 0 0 0 1]';

t56=[0 0 0 0 1]';% fault4

t=[t11 t12 t13 t14 t15 t16 t21 t22 t23 t24 t25 t26 t31 t32 t33 t34 t35 t36 t41 t42 t43 t44 t45 t46 t51 t52 t53 t54 t55 t56];

[p, s1] = mapminmax(p);

%输入样本归一化归一化的范围是(-1,1),s1 记录归一化的参数

net=newff(minmax(p),[60,5],{'tansig','purelin'},'trainlm');

%新建BP网络,p为样本输入:p=martric(5*30) 分别表示5个传感器,30个样

% 隐层神经元个数为60,根据输出目标t确定输出层神经元个数为5,

% 从输入层到隐层的激励函数为双曲正切,隐层到输出层的激励函数为线性函数,训练方法利用LM(Levenberg-Marquardt)算法进行网络参数sita={W,b}的更新

%%设置网络训练参数

net.trainParam.show=10; %设置数据显示刷新频率,学习次刷新一次图象net.trainParam.epochs=1000; %最大训练次数

net.trainParam.goal=1e-5; % 设置训练误差

net=init(net);%网络初始化

[net tr]=train(net,p,t);%训练网络

%%testing

p1=[0.5493 0.2626 0.2659 0.3088 0.2221]';

p2=[0.0031 0.0235 0.0005 0.0030 0.0045]';

p3=[0.9920 0.9899 0.9979 0.9937 0.7979]';

p4=[0.6704 0.4972 0.5235 0.4741 0.9791]';

p5=[0.2572 0.1006 0.0958 0.0981 0.0890]';

p6=[0.9800 0.9825 0.9835 0.9887 0.8000]';%测试数据

pp=[ p1 p2 p3 p4 p5 p6];

pp = mapminmax('apply',pp,s1);%测试样本归一化

result_test=sim(net,pp)%测试样本仿真

result_test( result_test>0.85)=1;

result_test( result_test<=0.85)=0;

disp('网络输出:')

result_test

pp_lab=[2 1 5 4 3 5];% 测试样本标签(正确类别)

res=vec2ind(result_test)%向量值变索引值

strr = cell(1,6);

for i=1:6

if res(i) == pp_lab(i)

strr{i} = '正确';

else

strr{i} = '错误';

end

end

diag = {'正常','故障1', '故障2', '故障3', '故障4' };

disp('诊断结果:')

fprintf(' 样本序号实际类别判断类别正/误故障类型\n');

for i =1:6

fprintf(' %d %d %d %s %s\n',... i, pp_lab(i), res(i), strr{i}, diag{res(i)});

end

figure

plot(pp_lab,'-g*');

hold on

plot(res,'-ro')

legend('期望类型','预测数出类型')

xlabel('样本')

ylabel('类型')

title('故障类型')

相关文档