学号:10011311306北京工商大学人工神经网络实验报告实验一应用SOM神经诊断网络柴油机故障及Matlab实现院(系)计算机与信息工程学院专业控制理论与控制工程学生姓名王昕琨成绩指导教师廉小亲2011年10月人工神经网络实验报告I一、实验目的:1、熟悉MATLAB中神经网络工具箱的使用方法;2、了解自组织神经特征映射网络各种优化算法的原理;3、掌握自组织神经特征映射网络各种优化算法的特点;4、掌握使用自组织特征映射神经网络各种优化算法解决实际问题的方法。二、实验内容(功能):随着科学与生产技术的发展,现代设备大多数集机电液于一体,结构越来越复杂,自动化程度越来越高。在工作过程中,故障发生的概率相对提高,出现故障后不仅会造成经济损失,甚至会导致整个设备遭受灾难性的毁坏。柴油机由于其本身的结构异常复杂,价值系统的输入输出不明显,难以用比较完备准确的买模型对其结构、功能以及状态进行有效的描述。因而给故障诊断带来了很大的麻烦。今年来,随着模式识别和神经网络理论的引入,才有机故障诊断技术有了较快的发展。神经网络技术的出现,为故障诊断问题提供了一种新的解决途径,特别是对于柴油机这类复杂问题。神经网络的输入输出非线性映射特性、信息的分布存储、并行处理和全局集体应用,特别是其高度的自组织和自学习能力,时期成为故障诊断的一种有效方法和手段。对于燃油压力波形(图1)来书,最大压力P1、次最大压力P2、波形幅度P3、上升沿宽度P4、波形宽度P5、最大余波宽度P6、波形的面积P7、起喷压力P8等特征最能体现柴油机运行的状况。燃油系统常见的故障有供油不足,针阀门卡死只油孔阻塞,针阀泄露,出油失效等集中故障。本例里诊断的故障也是基于上述故障,主要有100%供油量T1,75%供油量T2,25%供油量T3,怠速油量T4,针阀卡死(小油量T5),阵法卡死(标定油量T6),针阀泄露T7,出油阀失效T8。8种故障。三、实现方法(设计):本案例中给出了一个含有8个故障的数据集。每个故障样本有8个特征,分别是前面所提到过的P1~P8,使用SOM网络进行故障诊断。故障列表如下:P1P2P3P4P5P6P7P8T10.93251.00001.0000-0.45260.38951.00001.00001.0000T2-0.4571-0.2854-0.9024-0.9121-0.08411.0000-0.28710.5647T30.51340.94130.9711-0.41870.28550.85460.94780.9512T40.15450.1564-0.500-0.6571-0.3333-0.6667-0.3333-0.5000T50.17650.76480.1259-0.6472-0.05630.17260.51510.4212T6-0.6744-0.4541-0.82541.0000-0.8614-0.6714-0.6279-0.6785T70.46470.57100.0712-0.7845-0.28710.89150.65530.6156T80.68181.0000-0.6350-0.8426-0.6215-0.15741.00000.7782应用SOM神经诊断网络柴油机故障的步骤如下:1.选取标准故障样本;2.对每一种标准故障样本进行学习结束后,对具有最大输出的神经元表一故障的记号;3.将待检样本输入到SOM神经网络中;4.若输出神经元在输出层的位置与某标准故障样本的位置相同,说明待检样本发生了相应的故障;若输出神经元在输出层的位置介于很多标准故障之间,说明这几种标准故障都有可能发生,且故障的程度有该闻之与相应标准故障样本位置的欧氏距离确定。四、实验程序:人工神经网络实验报告IIP=[0.93251.00001.0000-0.45260.38951.00001.00001.0000;-0.4571-0.2854-0.9024-0.9121-0.08411.0000-0.28710.5647;0.51340.94130.9711-0.41870.28550.85460.94780.9512;0.15450.1564-0.500-0.6571-0.3333-0.6667-0.3333-0.5000;0.17650.76480.1259-0.6472-0.05630.17260.51510.4212;-0.6744-0.4541-0.82541.0000-0.8614-0.6714-0.6279-0.6785;0.46470.57100.0712-0.7845-0.28710.89150.65530.6156;0.68181.0000-0.6350-0.8426-0.6215-0.15741.00000.7782;]%转置后符合神经网络的输入格式P=P';%%网络建立和训练%newsom建立SOM网络。minmax(P)取输入的最大最小值。竞争层为6*6=36个神经元net=newsom(minmax(P),[66]);plotsom(net.layers{1}.positions)%5次训练的步数a=[1030501002005001000];%随机初始化一个1*10向量。yc=rands(7,8);%%进行训练%训练次数为10次net.trainparam.epochs=a(1);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(1,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)%训练次数为30次net.trainparam.epochs=a(2);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(2,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)%训练次数为50次net.trainparam.epochs=a(3);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(3,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)%训练次数为100次net.trainparam.epochs=a(4);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(4,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)人工神经网络实验报告III%训练次数为200次net.trainparam.epochs=a(5);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(5,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)%训练次数为500次net.trainparam.epochs=a(6);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(6,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)%训练次数为1000次net.trainparam.epochs=a(7);%训练网络和查看分类net=train(net,P);y=sim(net,P);yc(7,:)=vec2ind(y);plotsom(net.IW{1,1},net.layers{1}.distances)yc%%网络作分类的预测%测试样本输入t=[0.95121.00000.9458-0.42150.42180.95110.96450.8941]';%sim()来做网络仿真r=sim(net,t);%变换函数将单值向量转变成下标向量。rr=vec2ind(r)五、实验结果:yc=1361365364212413633613713241312736192252831249361616234212493118336742516361896192913633rr=18将其整理为表格形式如下:人工神经网络实验报告IV表2网络在不同训练次数下得分类结果训练次数结果101361365364230124136336137501324131273613710025283112736192200162342124931500183367425163610001896192913633如表所示,当训练步数为10时,故障原因1、3为一类,2、4、6为一类,5、7、8单独为一类。此时,网络已经对样本进行了初步的分类,这种分类有可能是不够精确的。当训练步数为100时,每个样本都被分为一类,这种分类结果已经细化了。这事在增加训练步数就是没有意义的了。再次测试位置样本T时,rr为18,即将该位置故障样本分到了第一类故障中。六、分析与总结(包含遇到的问题与解决方法):