- 4
- 0
- 约3.33千字
- 约 9页
- 2017-05-30 发布于浙江
- 举报
北航神经网络作业—神经网络在采煤机故障诊断中的应用.
目录
1. 题目分析 1
2. 学习算法 1
3. 单层感知器的VC++程序实现 4
4. 神经网络在采煤机故障诊断中的应用 7
参考文献: 9
题目分析
本章主要讲诉的是主要是神经网络控制及其应用的相关内容,作业题目共有两题,题目要求如下:
1、设计一个实现逻辑“与”的单计算层感知器,并写出其学习算法和程序。
2、紧密结合自己的专业背景、科研方向或解决问题的经历,谈谈学习人工神经网络或神经网络控制的必要性。要求说明自己的科研或专业背景,拟关注的问题或研究方向,与人工神经网络有什么关联。
单层感知器即三层(输入层、隐层和输出层,结点数分别为4、3和2)网络,其学习算法根据教材相关内容采用BP学习算法。
学习算法
根据教材中的相关介绍,神经网络算法主要步骤如下:
初始化,分别对输入层到隐层和隐层到输出层的权值矩阵W, V赋随机数,将样本计数器p和训练次数计数器q置为1,误差E置为0,学习率设为0-1间的小数,网格训练精度Emin设为一正的小数。
输入训练样本,计算各层输出。用当前样本、对向量数组X、d赋值,根据以下公式计算Y和O中各分量:
= f() , k= 1,2,3…l
= f(), j= 1,2,3…m
计算各节点的实际输出。
;
调整各层权值,按下式计算和:
检查是否对所有样本完成一次轮训。若完成,则进行下一步进行均方根误差计算;否则,返回步骤2。
计算网络总误差,检查是否达到精度要求。若达到计算要求,训练结束;否则,E置0,p置1,并返回步骤2,继续计算,直到达到精度要求为止。
具体的流程图如下:
单层感知器的VC++程序实现
按照3.1章节的学习算法,即可对其进行计算机编程实现,编程环境采用Microsoft Visual Studio 2008,程序清单如下:
#include stdafx.h
#include stdlib.h
#include stdio.h
#include time.h
int i=0;
int X1[4] = {0, 0,1, 1},X2[4] = {0, 1,0, 1};
int d[4] = {0,0,0, 1}; //样本X的期望输出值
float w[2],y,e[4];
float ec=0.0001; //指定输出偏差值
float step = 0.5; //学习步长
float b=0.6; //阈值
//定义激活函数
float f(float x)
{
if (x0)
return 1;
else return 0;
}
//定义学习训练函数
void xx (int i)
{
y=w[0]*X1[i]+w[1]*X2[i];
y=f(y-b);
ec[i]=d[i]-y;
}
//权值调整函数
void repower(int i)
{
w[0]=w[0]+step*ec[i]*X1[i];
w[1]=w[1]+step*ec[i]*X2[i];
}
int _tmain(int argc, _TCHAR* argv[])
{
int count=0;//记录感知器训练次数
//初始化W矩阵
int j;
for(j=0;j2;j++){
srand( (unsigned)time( NULL )+j*10 );
w[j]=(float)((rand()%10+1))/100; //随机生成较小的权值
}
do
{ count++;
if(count100){
printf( 单层感知器学习训练次数过多,请重新调整初始权值\n);
break;
}
if(i==4)
i=0;
if(i4)
{xx(i);
repower(i);
i++;
}
}while(ec[0]ECec[1]ECec[2]ECec[3]EC);
if(count100){
printf( 权值矩阵w[0]=%f\n, w[0] );
printf( 权值矩阵w[1]=%f\n, w[1] );
printf( \n经过学习训练%d 次达到要交\n, count );
printf( \n单层感知器学习完成\n);
}
return 0;
}
作业二:
神经网络在采煤机故障诊断中的应用
本人本科阶段就读于中国矿业大学机电工程学院,毕业设计时做的题目为采煤机截割部的相关设计。采煤机是煤矿生产中非常关键的设备,是一个集机械、电子、电气、液压传动于一体的复杂系统。因其工作环境十分恶劣,运行中经常出现故障影响生产,甚至造成整个煤矿生产系统的瘫痪。因此、对采煤机的在线监测和故障诊断是十分必要的。
通过智能控制课程中关于神经网络控制部分的相关学习,我了解到人工神经网络是借
原创力文档

文档评论(0)