




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成 绩 智能控制实验实验报告 院(系)名称 专业名称 学生学号 学生姓名2016年11月28日实验一 机械臂运动控制及基本操作一、 实验准备1、 描述机械臂坐标空间的定义 机械臂通常有两种坐标空间:关节坐标空间和直角坐标空间。关节坐标空间定义:机械臂的空间坐标直接由各个关节的坐标来确定,所有关节变量构成一个关节矢量。所有关节矢量构成的空间称为关节坐标空间。因此关节坐标空间运动运动就是直接操作各个关节的运动来完成机械臂的运动。下图是关节坐标空间的定义。图1 机械臂关节坐标空间 直角坐标空间定义:机械臂末端的位置和方位通常是在直角坐标空间中描述。当进行机械臂操作任务时,通常采用直角坐标空间更为直观
2、和方便。下图是直角坐标空间的定义。图2 机械臂直角坐标空间2、 机械臂各轴的最大运动范围、最大运动速度、最大展开半径都是多少?并把最大运动范围各量换算为对应的脉冲数(写出转换公式)。以上参数查看技术手册可得:最大运动范围:关节 1 0 -200 度 关节 2 0 -100 度关节 3 0 -100 mm 关节 4 0 -360 度最大运动速度:关节 1 1.57 rad/s 关节 2 3.14 rad/s关节 3 10 mm /s 关节 4 3.14 rad/s最大展开半径:396mm将最大运动范围各量换算为对应的脉冲数如下:增量式编码器为2500P/r,即电机每转一圈为2500个脉冲,GT4
3、00-SG运动控制卡有4倍频,故下发10000个脉冲电机转动一周。脉冲数=关节转动角度*(编码器每转对应脉冲*4倍频)*减速器倍率/360脉冲数=关节移动距离*(编码器每转对应脉冲*4倍频)*减速器倍率/导程1关节的谐波齿轮减速器比率为100:1;关节2的谐波齿轮减速器比率为99:1,关节3减速比为1.1175,关节4减速比为800。关节1、关节2、关节4分别转动200、100、360度所对应的脉冲数为:Pulse1=200*10000*100/360=555555.56Pulse2=100*10000*99/360=275000Pulse4=360*10000*800/360=8000000
4、关节3下移100mm对应的脉冲数为:Pulse3=100* 10000* 1.1175/2. 5=4470003、 为什么要进行机器人回零?如何通过机械臂标定框进行回零校正?对进行机械臂进行回零的原因:因为机器人测量关节的编码器是增量式而不是绝对式的,因此在每次调用程序时首先必须进行机器人回零。为了在关节坐标空间与直角坐标空间进行转。通过机械臂标定框进行回零校正的操作:机器人初始回零,假设回零角度分别为1,2,定义此时的关节1、2的关节坐标为(0,0);动作关节1、关节2,使其末端位于工作基础平台的机器人标定方框(200,200)处,此时的关节坐标理论上应为(0,90),记录实际的关节坐标为;
5、修正回零角度分别为:;重新进行机器人回零,定义此时的关节1、2的关节坐标为(0,0).4、 为什么要进行视场标定? 为了标定视场位置与机械臂坐标的对应关系。二、实验结果、数据1、进行多次机器人标定,记录关节1、关节2回零角度,判断机器人控制效果。填写下表:标定次数关节1回零角度关节2回零角度控制效果110.883889.928738关节1、2基本在在同一轴线28.7046112.48513轴2略偏离X轴311.4647210.34421关节1、2基本在在同一轴线关节1回零角度对应的脉冲数=30233关节2回零角度对应的脉冲数=273042、记录视场标定结果坐标轴工作台原点工作台定点视场原点视场
6、定点X-62.552.5227447Y342.5267.5173307Kx =0.568182 ; Ky= 0.559701 3、运动控制卡编程及回零操作 运动控制卡编程的说明GT-400是用户可编程运动控制器,提供了一套四轴运动控制器及用C和C+语言编写的用户接口函数库。控制轴GT-400运动控制器具有四个步进电机控制通道,可同时控制四个步进电机进行运动,这四个控制通道简称为四个控制轴。命令返回值命令与库函数运动控制器是按照主机发送的运动控制命令工作的。运动控制器配套有C 语言函数库(DOS 环境)和动态连接库(Windows 环境)。用户通过在主机编制程序调用相应的库函数,也就是向运动控制
7、器发出运动控制命令(简称命令)。对于用户通过主机发送的命令,运动控制器在检查、校验后,会给出一个反馈。这个反馈就是命令(库函数)的返回值。每一条库函数指令都会返回一个值,便于用户进行调试。如:rtn=GT_Open( ); 运动控制器初始化GTInitial()void GTInitial() /运动控制器初始化函数short rtn;rtn=GT_Open( ); error(rtn); /打开运动控制器设备rtn=GT_Reset( ); error(rtn); /复位运动控制器rtn=GT_SetSmplTm(200); error(rtn); /设置控制周期为200usfor(int
8、i=1; i5; i+;) /屏蔽每一轴的中断rtn=GT_Axis(i);rtn=GT_SetIntrMsk(0);注释:GT_Close(void):关闭运动控制器设备,用户程序结束时必须调用此函数。函数返回0 表示成功,非0 表示失败。因为运动控制器在控制周期内要完成必要的控制计算,控制周期不能太小,因此设定的范围为481966.08 微秒。这里设为200 微秒。输入信号参数设置InputCfg()void InputCfg() short rtn;unsigned short LmtSense=0x00FF;/赋值限位开关参数为低电平触发rtn=GT_LmtSns(LmtSense);
9、 error(rtn);/ 设置14 轴正、负限位开关为高电平触发注释:函数原型: short GT_LmtSns(unsigned short Sense);函数说明:该函数设置限位开关有效电平。函数参数:Sense 的意义见下表。表中对应位如果设置为零,表示限位开关输入信号为高时触发限位;反之,如果设置为“1”时,表示限位开关输入信号为低时触发限位。控制器上电默认为全“0”, 即控制器默认限位开关状态为高电平时触发。在初始化运动控制器时,必须正确给出限位开关有效电平,否则不能保证控制器正常工作或者导致所有轴正负限位开关标志置位。控制轴初始化AxisInitial()void AxisIni
10、tial()short rtn;for(int i=0;i4;i+)rtn=GT_Axis(i); error(rtn); /设置第i 轴为当前轴rtn=GT_ClrSts(); error(rtn); /清除当前轴不正确状态rtn=GT_StepDir(); error(rtn); /设置输出脉冲+方向信号rtn=GT_AxisOn(); error(rtn); /驱动使能关闭时调用GT_AxisOff()注释:运动控制器可以同时控制四个控制轴,并且各控制轴可以独立设置参数。为了提高主机与运动控制器的通讯效率,运动控制器采用控制轴寻址的策略。用户程序调用的单轴命令,都是作用于当前轴的。运动控
11、制器默认的当前轴为第一轴。要想对其他轴发送命令,首先要调用设置当前轴命令:short GT_Axis(unsigned short num) 将参数指定轴设置为当前轴。此后调用的单轴命令都是针对当前轴,直到再次调用该函数将当前轴设置为另一个轴。参数num 表示指定的轴号,在1、2、3、4 四个数中取值,分别代表第一、二、三、四轴。其他相关函数GT_Axis(num);/设置当前轴GT_SetVel(vel); /设置速度GT_SetAcc(acc);/设置加速度GT_SetPos(pos);/设置目标位置GT_Update();/运动控制器的一些参数设置函数和一些命令函数,采用双缓冲寄存器方式
12、工作。调用GT_Update()函数后,针对当前轴的双缓冲参数和命令才能生效。GT_MltiUpdt(unsigned short mask);/使多个轴设置的缓冲区命令和参数立即生效。与之不同,GT_Update()函数只使当前轴的设置参数和命令生效。运动控制器为每一个控制轴提供一个16位的状态寄存器。在运动过程中,可以通过调用函数GT_GetSts()查询这些状态全面了解当前轴的运动情况。unsigned short status;GT_Axis(AxisNum) ;/ AxisNum是当前轴号GT_GetSts(&status);/可以用status&0x400判断轴状态寄存器第10位是
13、否为1注意:每次轴运动完毕后要用GT_ZeroPos()清位置。GT_CaptHome(void)该函数设置Home信号捕获位置事件。调用该函数后,位置捕获寄存器将记录Home,信号到来时的实际位置。执行一次GT_CaptHome()只能捕获到一次Home位置信息。回零程序设计思路:四自由度机械臂做回零操作时,关节1和关节2回负限位后反转一定的角度,使得关节1与关节2垂直,关节2与x轴重合,关节3回负限位后再捕获HOME零点,关节4直接回HOME零点。附上回零程序主控制程序代码部分:void CHahaDlg:OnButtonGoback() /*short rtn;long now_pos,
14、xxx;unsigned short str4,status,pos_1; long rtn_pos_1;status=0x400; str4=0;xxx=0;unsigned short i;*/GTInitial(); /运动控制器初始化函数InputCfg() ;/专用输入信号参数设置AxisInitial(); /控制轴初始化函数/以下添加自己的回零程序unsigned short str1,str2,str3,str4,Sts1,Sts2,Sts3;unsigned short flag1=0,flag2=0,flag3=0,flag4=0,test=0;unsigned short
15、 Rtn;double vel;long pos,CaptPos2;int Axis;/m_PlayFlag=0;/*for (Axis=0;Axis4;Axis+)switch(Axis)case 0:GT_Axis(1);break;case 1:GT_Axis(2);break;case 2:GT_Axis(3);break;default:break;*/ unsigned short status; GT_Axis(1); /选择工作轴1 GT_SetVel(3); /设定速度 GT_SetAcc(0.4); /设定加速度 GT_SetPos(-9999999); /设定目标位置 G
16、T_Update(); /更新轴数据状态 GT_GetSts(&status); /获取轴状态 while(status&0x400) /判断轴数据是否更新完毕 GT_GetSts(&status); GT_Axis(2); /选择工作轴2 GT_SetVel(3); /设定速度 GT_SetAcc(0.4); /设定加速度 GT_SetPos(-9999999); /设置目标位置 GT_Update(); /更新轴数据状态 GT_GetSts(&status); /获取轴数据状态 while(status&0x400) /判断是否完成轴数据更新 GT_GetSts(&status); GT_
17、Axis(1); GT_SetVel(3); GT_SetAcc(0.4); GT_SetPos(30233); /根据轴1的回零角度给定脉冲值30233 GT_Update(); GT_GetSts(&status); while(status&0x400) GT_GetSts(&status); GT_Axis(2); GT_SetVel(3); GT_SetAcc(0.4); GT_SetPos(27304); /根据轴2的回零角度给定脉冲值27304 GT_Update(); GT_GetSts(&status); while(status&0x400) GT_GetSts(&stat
18、us); GT_Axis(3); /设置当前轴为轴3 GT_CaptHome(); /捕获Home位置信息 GT_SetVel(3); GT_SetAcc(0.4); GT_SetPos(22350); /设置轴3的目标位置 GT_Update(); GT_GetSts(&status); while(status&0x08) /判断Home标识位是否置 GT_GetSts(&status); GT_Axis(4); /设置当前轴为轴4 GT_CaptHome(); /捕获Home位置信息 GT_SetVel(3); GT_SetAcc(0.4); GT_SetPos(27500); /设置轴
19、4旋转角度对应的脉冲数 GT_Update(); GT_GetSts(&status); while(status&0x08) /判断Home标识位是否置 GT_GetSts(&status); 生成的操作界面最终效果:运行回零程序使得关节1、2与x轴重合,关节3回负限位后成功捕获HOME零点,关节4直接回HOME零点。实验二 模糊控制一、 实验准备1、 模糊控制理论及典型模糊控制系统的设计过程模糊控制系统:图2.1 模糊控制系统职能框图 模糊系统是一种基于知识或基于规则的系统。它的核心就是由所谓的IF-THEN规则所组成的知识库。一个模糊的IF-THEN规则就是一个用连续隶属度函数对所描述的
20、某些句子所做的IF-THEN形式的陈述。 构造一个模糊系统的出发点就是要得到一组来自于专家或基于该领域知识的模糊IF-THEN规则,然后将这些规则组合到单一系统中。不同的模糊系统可采用不用的组合原则。用隶属度函数表征一个模糊描述后,实质上就将模糊描述的模糊消除了。 模糊控制系统设计的关键在于模糊控制器的设计,主要有三个部分: (1) 输入量的模糊化 所谓模糊化(Fuzzification) 就是先将某个输入测量量的测量值作标准化处理,把该输入测量量的变化范围映射到相应论域中,再将论域中的各输入数据以相应的模糊语言值的形式表示,并构成模糊集合。这样就把输入的测量量转换为用隶属度函数表示的某一模糊
21、语言变量。 (2) 模糊逻辑推理 根据事先已定制好的一组模糊条件语句构成模糊规则库,运用模糊数学理论对模糊控制规则进行推理计算,从而根据模糊控制规则对输入的一系列条件进行综合评估,以得到一个定性的用语言表示的量,即模糊输出量。完成这部分功能的过程就是模糊逻辑推理过程。 (3) 反模糊化过程 反模糊化(Defuzzification) 有时又叫模糊判决。就是将模糊输出量转化为能够直接控制执行部件的精确输出量的过程。 模糊控制器的核心部分又在于模糊推理系统(FIS) 的建立。2、模糊控制与经典控制理论的区别及特点 经典控制理论的研究对象是单输入、单输出的自动控制系统,特别是线性定常系统。 经典控制
22、理论的特点是以输入输出特性(主要是传递函数)为系统数学模型,采用频率响应法和根轨迹法这些图解分析方法,分析系统性能和设计控制装置。经典控制理论的数学基础是拉普拉斯变换,占主导地位的分析和综合方法是频率域方法。经典控制理论主要研究系统运动的稳定性、时间域和频率域中系统的运动特性(见过渡过程、频率响应)、控制系统的设计原理和校正方法(见控制系统校正方法)。经典控制理论包括线性控制理论、采样控制理论、非线性控制理论(见非线性系统理论)三个部分。早期,这种控制理论常被称为自动调节原理,随着以状态空间法为基础和以最优控制理论为特征的现代控制理论的形成(在1960年前后),开始广为使用现在的名称。 模糊逻
23、辑控制(Fuzzy Logic Control)简称模糊控制(Fuzzy Control),是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制技术。模糊控制实质上是一种非线性控制,从属于智能控制的范畴。模糊控制的一大特点是既具有系统化的理论,又有着大量实际应用背景。模糊控制的基本思想是利用计算机来实现人的控制经验,而这些经验多是用语言表达的具有相当模糊性的控制规则。特点总结如下:(1) 它是一种非线性控制方法,工作范围宽,适用范围广,特别适合非线性系统的控制.(2)它不依赖于对象的数学模型,对无法建模或很难建模的复杂对象,也能利用人的经验知识来设计模糊控制器完成控制任务.而传
24、统的控制方法都要已知被控对象的数学模型,才能设计控制器.(3)它具有内在的并行处理机制,表现出极强的鲁棒性,对被控对象的特性变化不敏感,模糊控制器的设计参数容易选择调整.算法简单,执行快,容易实现.不需要很多的控制理论知识,容易普及推广.二、 实验结果、数据1、系统简介及参数说明设计的是用Simulink实现的一个淋浴温度及水量调节的模糊控制系统,仿真系统如下图所示:图2.2 水温调节的模糊控制系统 该系统主要包括热水阀子系统、冷水阀子系统、模糊控制模块以及水温和流量的示波器。该模糊控制器的输入变量分别是水流量和水温,输出变量分别是对热水阀和冷水阀的控制方式。模糊控制系统通过对淋浴的水温和流量
25、进行检测和分析,对热水阀和冷水阀的流量和流速进行控制而实现淋浴系统水温和水流量的控制。2、 模糊控制器的设计(1)MATLAB的模糊推理系统编辑器(Fuzzy) 模糊推理系统编辑器用于设计和显示模糊推理系统的一些基本信息,如推理系统的名称,输入、输出变量的个数与名称,模糊推理系统的类型、解模糊方法等。其中模糊推理系统可以采用Mandani或Sugeuo两种类型,解模糊方法有最大隶属度法、重心法、加权平均等。打开fuzzy,建立双输入双输出的模糊控制系统,输入为temp,flow;输出为cold,hot。图 2.3 模糊推理系统编辑界面(2) 定义各输入输出的隶属度函数MATLAB中的隶属度函数
26、编辑器(Mfedit)提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等。图2.4 水温偏差区间模糊划分及隶属度函数图2.5 水流量偏差区间模糊划分及隶属度函数图2.6 输出对冷水阀控制策略的模糊化分及隶属度函数图2.6 输出对热水阀控制策略的模糊化分及隶属度函数(3)设计模糊控制规则MATLAB通过隶属度函数编辑器来设计和修改“IF.THEN”形式的模糊控制规则。它将输入量各语言变量自动匹配,只需要通过交互式的图形环境选择相应的输出语言变量。最终定义的模糊控制规
27、则如下:图2.7 生成的模糊控制规则命令语句根据这两个输出控制表,可以产生九条模糊控制规则,如下:图2.8 规则观测器显示的规则控制系统输出情况图2.9 曲面观测器直观地表示模糊推理输出特性3、 仿真结果给定一跟踪目标要求,通过输出水温和水流量的时间历程曲线和判断模糊控制系统的精确度。图2.9 水温示波器显示结果图2.9 水温示波器显示结果根据仿真结果可以看到,模糊控制系统可以得到比较满意的控制效果。(由于对PID控制不太熟悉以及时间问题,所以没能按照老师的要求进行仿真对比,在此给予说明。)实验三 神经网络图像识别一、实验准备1、 神经网络的基本原理以及 BP网络的组成。(1)神经网络的原理:
28、人工神经网络(简称神经网络,Neural Network)是模拟人脑思维方式的数学模型。人工神经网络(简称神经网络)是由人工神经元(简称神经元)互连组成的网络,它是从微观结构和功能上对人脑的抽象、简化,是模拟人类智能的一条重要途径,反映了人脑功能的若干基本特征,如并行信息处理、学习、联想、模式分类、记忆等。 人工神经网络(ANN)可看成是以人工神经元为节点,用有向加权弧连接起来的有向图。在此有向图中,人工神经元就是对生物神经元的模拟,而有向弧则是轴突突触树突对的模拟。有向弧的权值表示相互连接的两个人工神经元间相互作用的强弱。 每个小圆圈表示一个神经元。各个神经元之间的连接并不只是一个单纯的传送
29、信号的通道,而是在每对神经元之间的连接上有一个加权系数,这个加权系数起着生物神经系统中神经元的突触强度的作用,它可以加强或减弱上一个神经元的输出对下一个神经元的刺激。这个加权系数通常称为权值。 神经元是一个多输入单输出的信息处理单元, 其模型如下图所示:目前,已有的人工神经网络模型至少有几十种,其分类方法也有多种。例如:1)按网络拓扑结构可分为层次型结构和互连型结构 2)按信息流向可分为前馈型网络与有反馈型网络;3) 按网络的学习方法可分为有教师的学习网络和无教师的学习网络;4) 按网络的性能可分为连续型网络与离散型网络,或分为确定性网络与随机型网络;神经元的模型确定之后,一个神经网络的特性及
30、能力主要取决于网络的拓扑结构及学习方法。人工神经网络的拓扑结构:建立人工神经网络的一个重要步骤是构造人工神经网络的拓扑结构,即确定人工神经元之间的互连结构。根据神经元之间连接的拓扑结构,可将神经网络的互连结构分为层次型网络和互连型网络两大类。层次型网络结构又可根据层数的多少分为单层、两层及多层网络结构。简单单级网络人工神经网络的运行一般分为学习和工作两个阶段。人工神经网络的学习过程就是它的训练过程。神经网络训练的实质是通过对样本集的输入/输出模式反复作用于网络,网络按照一定的学习算法自动调节神经元之间的连接强度(阈值)或拓扑结构,当网络的实际输出满足期望要求,或者趋于稳定时,则认为学习圆满结束
31、。人工神经网络的学习算法:神经网络学习算法有很多,大体可分为有导师学习(Supervised Learning)、和无导师学习(Unsupervised Learning)两大类,另外还有一类死记式学习。(2)BP神经网络的组成BP模型利用输出后的误差来估计输出层的直接前导层的误差,再利用这个误差估计更前一层的误差。如此下去,获得所有其他各层的误差估计。形成将输出表现出来的误差沿着与输入信号传送相反的方向逐级向网络的输入端传递的过程,因此称为后向传播(B-P)算法。基本BP算法包括两个方面:信号的前向传播和误差的反向传播。即计算实际输出时按从输入到输出的方向进行,而权值和阈值的修正从输出到输入
32、的方向进行。输出变量输入变量输入层隐含层输出层图中:表示输入层第个节点的输入,j=1,M;表示隐含层第i个节点到输入层第j个节点之间的权值;表示隐含层第i个节点的阈值;表示隐含层的激励函数;表示输出层第个节点到隐含层第i个节点之间的权值,i=1,q;表示输出层第k个节点的阈值,k=1,L;表示输出层的激励函数;表示输出层第个节点的输出。(1)信号的前向传播过程隐含层第i个节点的输入neti: (3-1)隐含层第i个节点的输出yi: (3-2)输出层第k个节点的输入netk: (3-3)输出层第k个节点的输出ok: (3-4)(2)误差的反向传播过程误差的反向传播,即首先由输出层开始逐层计算各层
33、神经元的输出误差,然后根据误差梯度下降法来调节各层的权值和阈值,使修改后的网络的最终输出能接近期望值。 对于每一个样本p的二次型误差准则函数为Ep: (3-5)系统对P个训练样本的总误差准则函数为: (3-6)根据误差梯度下降法依次修正输出层权值的修正量wki,输出层阈值的修正量ak,隐含层权值的修正量wij,隐含层阈值的修正量。; (3-7)输出层权值调整公式: (3-8)输出层阈值调整公式: (3-9)隐含层权值调整公式: (3-10)隐含层阈值调整公式: (3-11)又因为: (3-12), (3-13) (3-14) (3-15) (3-16)所以最后得到以下公式: (3-17) (3
34、-18) (3-19) (3-20)2、如何避免BP网络训练时陷入局部最小?BP算法因其简单、易行、计算量小、并行性强等优点,目前是神经网络训练采用最多也是最成熟的训练算法之一。其算法的实质是求解误差函数的最小值问题,由于它采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权值,因而通常存在以下问题:(1) 学习效率低,收敛速度慢(2) 易陷入局部极小状态有以下改进措施: 附加动量法附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用有可能滑过这些极小值。该方法是在反向传播
35、法的基础上在每一个权值(或阈值)的变化上加上一项正比于前次权值(或阈值)变化量的值,并根据反向传播法来产生新的权值(或阈值)变化。带有附加动量因子的权值和阈值调节公式为:其中k为训练次数,mc为动量因子,一般取0.95左右。附加动量法的实质是将最后一次权值(或阈值)变化的影响,通过一个动量因子来传递。当动量因子取值为零时,权值(或阈值)的变化仅是根据梯度下降法产生;当动量因子取值为1时,新的权值(或阈值)变化则是设置为最后一次权值(或阈值)的变化,而依梯度法产生的变化部分则被忽略掉了。以此方式,当增加了动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时
36、, di将变得很小,于是,从而防止了的出现,有助于使网络从误差曲面的局部极小值中跳出。根据附加动量法的设计原则,当修正的权值在误差中导致太大的增长结果时,新的权值应被取消而不被采用,并使动量作用停止下来,以使网络不进入较大误差曲面;当新的误差变化率对其旧值超过一个事先设定的最大误差变化率时,也得取消所计算的权值变化。其最大误差变化率可以是任何大于或等于1的值。典型的取值取1.04。所以,在进行附加动量法的训练程序设计时,必须加进条件判断以正确使用其权值修正公式。训练程序设计中采用动量法的判断条件为: , E(k)为第k步误差平方和。 自适应学习速率对于一个特定的问题,要选择适当的学习速率不是一
37、件容易的事情。通常是凭经验或实验获取,但即使这样,对训练开始初期功效较好的学习速率,不见得对后来的训练合适。为了解决这个问题,人们自然想到在训练过程中,自动调节学习速率。通常调节学习速率的准则是:检查权值是否真正降低了误差函数,如果确实如此,则说明所选学习速率小了,可以适当增加一个量;若不是这样,而产生了过调,那幺就应该减少学习速率的值。下式给出了一个自适应学习速率的调整公式: , E(k)为第k步误差平方和。初始学习速率h(0)的选取范围可以有很大的随意性。 动量-自适应学习速率调整算法当采用前述的动量法时,BP算法可以找到全局最优解,而当采用自适应学习速率时,BP算法可以缩短训练时间, 采
38、用这两种方法也可以用来训练神经网络,该方法称为动量-自适应学习速率调整算法。二、实验结果、数据1、设计BP神经网络完成对不同形状工件进行识别建立一个三层前馈BP神经网络:输入量:选择对输出影响大且能够观测的变量;各输入量之间互不相关或相关性很小;输入量一般要通过信号处理或特征提取技术提取参数。训练样本集:训练样本数是网络连接权总数的5-10倍;样本要有代表性,样本类别均衡,不同类别的样本交叉输入,进行训练测试;初始权值:取足够小的初始权值;使初始值为+1和-1的权值数相等。具体设计的BP神经网络训练程序参数如下:输入层节点数为8*16=128;隐含层数目为10;输出层节点数为4;训练步长(学习
39、效率)0.015;最小均方误差0.001;相关系数定为0;样本数量为10,如下所示:2、 程序的主要部分及运行结果BP神经网络流程图(1)附上BP神经网络部分补充的主要程序(基于模板test/BP.C Haeder File):/* 随机初始化权值 */void bpnn_randomize_weights(double *w, int m, int n)int i, j;for (i = 0; i = m; i+) for (j = 0; j = n; j+) wij = dpn1();/* 0初始化权值 */void bpnn_zero_weights(double *w, int m,
40、int n)int i, j;for (i = 0; i = m; i+) for (j = 0; j = n; j+) wij = 0.0;/*前向传输*/void bpnn_layerforward(double *l1, double *l2, double *conn, int n1, int n2)double sum;int j, k;/* 设置阈值 */l10 = 1.0;/* 对于第二层的每个神经元 */for (j = 1; j = n2; j+) /* 计算输入的加权总和 */sum = 0.0;for (k = 0; k = n1; k+) sum += connkj *
41、 l1k;l2j = squash(sum);/* 输出误差 */void bpnn_output_error(double *delta, double *target, double *output, int nj)int j;double o, t, errsum;errsum = 0.0;for (j = 1; j = nj; j+) o = outputj;t = targetj;deltaj = o * (1.0 - o) * (t - o);/* 隐含层误差 */void bpnn_hidden_error(double* delta_h, int nh, double *del
42、ta_o, int no, double *who, double *hidden)int j, k;double h, sum, errsum;errsum = 0.0;for (j = 1; j = nh; j+) h = hiddenj;sum = 0.0;for (k = 1; k = no; k+) sum += delta_ok * whojk;delta_hj = h * (1.0 - h) * sum;/* 调整权值 */void bpnn_adjust_weights(double *delta, int ndelta, double *ly, int nly, double
43、* w, double *oldw, double eta, double momentum)double new_dw;int k, j;ly0 = 1.0;for (j = 1; j = ndelta; j+) for (k = 0; k = nly; k+) new_dw = (eta * deltaj * lyk) + (momentum * oldwkj);wkj += new_dw;oldwkj = new_dw;实验结果:经过对10个样本的训练,最小均方误差满足了低于给定值0.001的要求,根据归一化最小均方误差准则可知该神经网络效果良好。并通过测试,准确的识别出了如下两个工件的形状。三、结果分析及讨论通过对老师给的BP神经网络教学程序的学习,对于BP神经网络的人工智能训练过程有了初步的理解和体会,在此基础上对BP神经网络在MATLAB中用于实现对字符识别等方面的应用进行了较为详尽的学习。其中应用较为成熟有手写体字符识别以及车牌号码识别等。快速发展的Matlab软件为神经网络理论的实现提供了一种便利的仿真手段。Matlab神经网络工具箱的出现,更加拓宽了神经网络的应用空间。神经网络工具箱将很多原本需要手动计算的工作交给计算机,一方面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来出行新技术考试问题及答案
- 电商平台用户分析试题及答案
- 英华书院面试题及答案
- 幼儿园加减法游戏试题及答案
- 基于2025年工业互联网平台的安全多方计算在智慧园区安全防护中的应用报告
- 河南高中理综试题及答案
- 天然气水合物(可燃冰)开采技术对海洋生态环境保护的贡献报告
- 时尚操控测试题及答案
- 教育培训机构品牌建设与市场推广策略在实体教育机构市场的应用研究
- 教育教学反思与能力提升探究试题及答案
- 景区安全生产管理规章制度大全
- 2025届湖北武汉市华中师大一附中高考英语押题试卷含答案
- 钓场出租合同协议
- 骨科病人术后疼痛护理
- 2025云南省安全员《A证》考试题库及答案
- 深基坑开挖应急预案1
- 瓷砖委托加工协议书范本
- 医养结合机构内老人在养老区和医疗区之间床位转换解读
- 2025年春初中数学七年级下册苏科版上课课件 11.2 一元一次不等式的概念
- 2025年N1叉车司机考试试题(附答案)
- 大数据与人工智能营销(南昌大学)知到智慧树章节答案
评论
0/150
提交评论