第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共9页目录1.题目分析..............................................................................................12.学习算法..............................................................................................13.单层感知器的VC++程序实现.............................................................44.神经网络在采煤机故障诊断中的应用...............................................7参考文献:....................................................................................................9第2页共9页第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共9页1.题目分析本章主要讲诉的是主要是神经网络控制及其应用的相关内容,作业题目共有两题,题目要求如下:1、设计一个实现逻辑“与”的单计算层感知器,并写出其学习算法和程序。2、紧密结合自己的专业背景、科研方向或解决问题的经历,谈谈学习人工神经网络或神经网络控制的必要性。要求说明自己的科研或专业背景,拟关注的问题或研究方向,与人工神经网络有什么关联。单层感知器即三层(输入层、隐层和输出层,结点数分别为4、3和2)网络,其学习算法根据教材相关内容采用BP学习算法。2.学习算法根据教材中的相关介绍,神经网络算法主要步骤如下:1.初始化,分别对输入层到隐层和隐层到输出层的权值矩阵W,V赋随机数,将样本计数器p和训练次数计数器q置为1,误差E置为0,学习率设为0-1间的小数,网格训练精度Emin设为一正的小数。2.输入训练样本,计算各层输出。用当前样本、对向量数组X、d赋值,根据以下公式计算Y和O中各分量:=f(),k=1,2,3…l=f(),j=1,2,3…m3.计算各节点的实际输出。;4.调整各层权值,按下式计算和:第3页共9页第2页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共9页5.检查是否对所有样本完成一次轮训。若完成,则进行下一步进行均方根误差计算;否则,返回步骤2。6.计算网络总误差,检查是否达到精度要求。若达到计算要求,训练结束;否则,E置0,p置1,并返回步骤2,继续计算,直到达到精度要求为止。具体的流程图如下:第4页共9页第3页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共9页3.单层感知器的VC++程序实现按照3.1章节的学习算法,即可对其进行计算机编程实现,编程环境采用MicrosoftVisualStudio2008,程序清单如下:#include"stdafx.h"#include#include#includeinti=0;intX1[4]={0,0,1,1},X2[4]={0,1,0,1};intd[4]={0,0,0,1};//样本X的期望输出值floatw[2],y,e[4];floatec=0.0001;//指定输出偏差值floatstep=0.5;//学习步长floatb=0.6;//阈值//定义激活函数floatf(floatx){if(x>0)return1;elsereturn0;}//定义学习训练函数voidxx(inti){y=w[0]*X1[i]+w[1]*X2[i];第5页共9页第4页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共9页y=f(y-b);ec[i]=d[i]-y;}//权值调整函数voidrepower(inti){w[0]=w[0]+step*ec[i]*X1[i];w[1]=w[1]+step*ec[i]*X2[i];}int_tmain(intargc,_TCHAR*argv[]){intcount=0;//记录感知器训练次数//初始化W矩阵intj;for(j=0;j<2;j++){srand((unsigned)time(NULL)+j*10);w[j]=(float)((rand()%10+1))/100;//随机生成较小的权值}do{count++;if(count>100){printf("单层感知器学习训练次数过多,请重新调整初始权值\n");break;}if(i==4)第6页共9页第5页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共9页i=0;if(i<4){xx(i);repower(i);i++;}}while(ec[0]