基于BP神经网络的故障诊断方法Word文件下载.docx
《基于BP神经网络的故障诊断方法Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于BP神经网络的故障诊断方法Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
实验结果表明,该方法克服了单个传感器的局限性和不确定性,是一种有效的故障诊断方法。
采用方法:
通过BP神经网络进行局部诊断,最终判定故障及故障类型。
基于BP神经网络多传感器信息融合,故障诊断方法是特征层状态属性融合,并利用MATLAB仿真。
2设计原理、方法及步骤
基于神经网络多传感器信息融合故障诊断方法是特征层状态属性融合,也就是特征层联合识别方法,多传感器检测系统为识别提供了比单传感器更多的有关目标(状态)的特征信息,增大了特征空间维数。
本文运用神经网络多传感器信息融合方法对机械设备运行状态进行诊断识别,是基于这样一种思想:
设备运行状态与其各种征兆参数(温度、压力、电压、电流、振动信号等)之间存在着因果关系,而这种关系之复杂是难用公式表达的,由于神经网络所具有的信息分布式存储方式、大规模自适应并行处理、高度的容错能力等是其可用于模式识别的基础,特别是其学习能力、容错能力和高度的非线性映射能力对机械设备运行状态的不确定性模式识别具有独到之处。
基于BP算法的神经网络模型
本文采用的是3层BP神经网络模型,由输入层、隐层和输出层构成,图1所示为一个典型的三层BP神经网络模型
图1一个简单的BP神经网络模型
网络的前馈意义在于每一层节点的输入仅来自前面一层节点的输出。
对于输入信号,先前向传播到隐层节点,经过激活函数后,再把隐层节点的输出信息传播到输出节点,最后得到输出结果。
(1)输入层节点
其输出
等于输入
,将变量值传送到第二层。
(2)隐层节点
其输入
,输出
分别为:
(2-1)
(2-2)
式中,
为隐层节点
与输入层节点
之间的权值,
的偏置,
为sigmoid函数,其表达式为:
(2-3)
(3)输出层节点
(2-4)
(2-5)
为输入层节点
与隐层节点
之间的连接权值,
为输出层节点
的偏置。
对于给定的训练样本
,
为样本数
,网络输出与训练目标之间的均方误差可表示为:
(2-6)
(2-7)
其中
为样本数,
为第
个样本的第l个输出单元的目标输出结果,
个样本的第l个输出单元的网络运算结果。
BP网络训练的过程包括网络内部的前向计算和误差的反向传播,其目的就是通过调整网络内部连接权值使网络输出误差最小。
对于多层前馈网络中输入层与隐层之间、隐层与输出层之间连接权值利用BP算法调整。
神经网络信息融合故障诊断步骤
神经网络知识表示是一种知识的隐式表示,知识表现为网络的拓扑结构和连接权值,采用神经网络技术的专家系统,由于神经网络是一种信息存储和处理统一的网络系统,因此,在采用神经网络技术的专家系统中,知识的存储与问题求解过程中的推理过程均在系统的神经网络模块中进行,是推理机和知识库的统一。
首先从已有的设备特征信号提取特征数据,经过数据预处理(归一化处理)后作为神经网络输入,从已知的故障结果提取数据作为神经网络输出,构建BP神经网络,利用已有的特征数据和已知的故障结果数据形成的训练样本集对构建的BP神经网络进行训练和网络自学习,使BP神经网络的权值、阀值与已知的故障结果之间存在对应关系达到期望的故障结果输出。
当BP神经网络训练完毕后,就可以利用训练成功的BP神经网络进行故障诊断。
故障诊断的过程如下:
1)将故障样本输入给输入层各节点,同时它也是该层神经元的输出。
2)由式(2-2)求出隐层神经元的输出,并将其作为输出层的输入。
3)从式(2-5)求得输出层神经元的输出。
4)由阈值函数判定输出层神经元的最终输出结果。
柴油机的故障诊断首先从待诊断的故障信号中提取数据并进行数据预处理,而后将待诊断故障数据输入训练成功的神经网络。
利用神经网络信息融合进行故障诊断步骤如图2所示:
图2信息融合进行故障诊断步骤
3结果及分析
数据仿真
以某种柴油机中的4个实际故障样本为例,每个故障样本有5个故障特征值,因此选取网络的输入节点为5。
将样本输入到神经网络模型中,每个输出节点代表一种故障类型,则这4种故障类型和一个正常状态共需5个输出节点与之相对应,因此网络的输出节点为5。
表3-1训练数据。
表3-1训练数据
样本序号
故障特征值X
温度
压力
电压
电流
振动信号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
在表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型传递函数,在输出端设置的阈值为,即网络输出值大于的置1,小于等于的置0来处理,利用MATLAB神经网络工具箱建立BP神经网络模型。
结果分析
在本文中将正常状态设置为[10000],故障1设置为[01000],故障2设置为[00100],故障3设置为[00010],故障4设置为[00001],输出阈值设置为,即在输出值大于即为1,否则为0。
根据输出数据的分析判断属于哪种故障,表3-3为仿真输出。
表3-3仿真输出
网络输出y
正常
故障1
故障2
故障3
故障4
将表3-2中“样本序号1”的5个故障特征值输给网络的输入层节点,则网络输出层节点与其对应的输出为表3-3中“样本序号1”所在行的5个输出值,其中只有y2=>
,其他5个输出均远小于,所以,网络故障诊断的结果为故障1;
表3-2中“样本序号2”的5个故障特征值输给网络的输入层节点,则网络输出层节点与其对应的输出为表3-3中“样本序号2”所在行的5个输出值,其中只有y1=>
,其他5个输出均远小于,所以,网络故障诊断的结果为正常状态;
表3-2中“样本序号3”的5个故障特征值输给网络的输入层节点,则网络输出层节点与其对应的输出为表3-3中“样本序号3”所在行的5个输出值,其中只有y4=>
,其他5个输出均远小于,所以,网络故障诊断的结果为故障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].Lei,.He,.Zi,Q.Hu,FaultdiagnosisofrotatingmachinerybasedonmultipleANFIScombinationwithGas[J].Mech.Syst.Signal(21)2280–2294.
[7].Tran,F.AlThobiani,A.Ball,AnapproachtofaultdiagnosisofreciprocatingcompressorvalvesusingTeager–Kaiserenergyoperatoranddeepbeliefnetworks[J].41)4113–4122.
附录程序
clc
clear
%%输入训练数据(包括正常数据和故障数据)
%%训练样本中,每一列分别代表:
“温度”,“压力”,“电压”,“电流”和“振动信号”;
每一行分别代表一个样本
p11=[]'
;
p12=[]'
p13=[]'
p14=[]'
p15=[]'
p16=[]'
%正常数据
p21=[]'
p22=[]'
p23=[]'
p24=[]'
p25=[]'
p26=[]'
%故障1
p31=[]'
p32=[]'
p33=[]'
p34=[]'
p35=[]'
p36=[]'
%故障2
p41=[]'
p42=[]'
p43=[]'
p44=[]'
p45=[]'
p46=[]'
%故障3
p51=[]'
p52=[]'
p53=[]'
p54=[]'
p55=[]'
p56=[]'
%故障4
p=[p11p12p13p14p15p16p21p22p23p24p25p26p31p32p33p34p35p36p41p42p43p44p45p46p51p52p53p54p55p56];
%将所有的数据:
包括正常数据和异常数据放在一个数据集中,将该数据集设置为输入神经网络的特征值
%%对被检测对象类别进行编码(设置目标值,即标签,用二进制类型表示)
t11=[10000]'
t12=[10000]'
t13=[10000]'
t14=[10000]'
t15=[10000]'
t16=[10000]'
%normal
t21=[01000]'
t22=[01000]'
t23=[01000]'
t24=[01000]'
t25=[01000]'
t26=[01000]'
%fault1
t31=[00100]'
t32=[00100]'
t33=[00100]'
t34=[00100]'
t35=[00100]'
t36=[00100]'
%fault2
t41=[00010]'
t42=[00010]'
t43=[00010]'
t44=[00010]'
t45=[00010]'
t46=[00010]'
%fault3
t51=[00001]'
t52=[00001]'
t53=[00001]'
t54=[00001]'
t55=[00001]'
t56=[00001]'
%fault4
t=[t11t12t13t14t15t16t21t22t23t24t25t26t31t32t33t34t35t36t41t42t43t44t45t46t51t52t53t54t55t56];
[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=init(net);
%网络初始化
[nettr]=train(net,p,t);
%训练网络
%%testing
p1=[]'
p2=[]'
p3=[]'
p4=[]'
p5=[]'
p6=[]'
%测试数据
pp=[p1p2p3p4p5p6];
pp=mapminmax('
apply'
pp,s1);
%测试样本归一化
result_test=sim(net,pp)%测试样本仿真
result_test(result_test>
=1;
result_test(result_test<
==0;
disp('
网络输出:
'
)
result_test
pp_lab=[215435];
%测试样本标签(正确类别)
res=vec2ind(result_test)%向量值变索引值
strr=cell(1,6);
fori=1:
ifres(i)==pp_lab(i)
strr{i}='
正确'
else
错误'
end
end
diag={'
正常'
故障1'
'
故障2'
故障3'
故障4'
};
disp('
诊断结果:
fprintf('
样本序号实际类别判断类别正/误故障类型\n'
fori=1:
fprintf('
%d%d%d%s%s\n'
...
i,pp_lab(i),res(i),strr{i},diag{res(i)});
figure
plot(pp_lab,'
-g*'
holdon
plot(res,'
-ro'
legend('
期望类型'
预测数出类型'
xlabel('
样本'
ylabel('
类型'
title('
故障类型'