您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 神经网络设计及MATLAB仿真实验
第1页共8页昆明理工大学信息工程与自动化学院学生实验报告(20—20学年第学期)课程名称:智能控制导论开课实验室:自动化系机房2013年5月29日年级、专业、班20101级测控101班学号姓名成绩实验项目名称模糊控制系统设计及MATLAB仿真研究指导教师教师评语教师签名:年月日一、实验目的通过上机实习,熟悉MATLAB的基本操作命令和神经网络工具箱的使用,掌握MATLAB编程或神经网络编辑器等方法,进行BP神经网络设计的基本方法和步骤,为以后利用计算机进行神经网络控制系统分析与设计打下良好的基础。二、实验内容试设计BP神经网络来实现正弦函数的逼近。输入矢量X=-1:0.1:1;相对应的目标矢量)sin(XY三、所用仪器、材料(设备名称、型号、规格等)装有MATLAB的电脑或者个人计算机四、实验方法、步骤1、方法一:MATLAB程序仿真实现(本次试验采用方法一)2、方法二:神经网络工具箱实现第2页共8页五、实验过程原始记录(数据、图表、计算等)1、利用两层BP网络完成函数逼近,隐含层激活函数为S型函数,输出层的激活函数为线性函数(程序)clearall;clc;NNTWARNOFF;X=-1:0.05:1;T=sin(pi*X);plot(X,T,'+b');pause2、建立BP网络,并初始化权值和阈值(程序)[R,N]=size(X);[S2,N]=size(T);S1=5;[w11,b11,w12,b12]=initff(X,S1,'tansig',S2,'purelin');[y1,y21]=simuff(X,w11,b11,'tansig',w12,b12,'purelin');(训练前BP网络的函数逼近效果)第3页共8页3、利用不含噪声的理想输入数据训练网络(程序)disp_freq=5;max_epoch=1000;%训练次数err_goal=0.02;%训练误差lr=0.01;%学习速率tp=[disp_freqmax_epocherr_goallr];[w21,b21,w22,b22,te,tr]=trainbpx(w11,b11,'tansig',w12,b12,'purelin',X,T,tp);(BP网络训练过程参数显示)TRAINBPX:0/1000epochs,lr=0.01,SSE=122.631.TRAINBPX:5/1000epochs,lr=0.00567236,SSE=11.7777.TRAINBPX:10/1000epochs,lr=0.00723953,SSE=9.15102.TRAINBPX:15/1000epochs,lr=0.00923968,SSE=6.89626.TRAINBPX:20/1000epochs,lr=0.0117924,SSE=4.92212.TRAINBPX:25/1000epochs,lr=0.0150505,SSE=3.47479.TRAINBPX:30/1000epochs,lr=0.0192086,SSE=2.43021.TRAINBPX:35/1000epochs,lr=0.0245156,SSE=1.77321.TRAINBPX:40/1000epochs,lr=0.0312888,SSE=1.41395.TRAINBPX:45/1000epochs,lr=0.0399334,SSE=1.23208.TRAINBPX:50/1000epochs,lr=0.0509662,SSE=1.13685.TRAINBPX:55/1000epochs,lr=0.0650472,SSE=1.03322.TRAINBPX:60/1000epochs,lr=0.0830186,SSE=0.860574.TRAINBPX:65/1000epochs,lr=0.105955,SSE=0.651445.TRAINBPX:70/1000epochs,lr=0.135229,SSE=0.435468.TRAINBPX:75/1000epochs,lr=0.17259,SSE=0.232097.第4页共8页TRAINBPX:80/1000epochs,lr=0.220273,SSE=0.0919917.TRAINBPX:85/1000epochs,lr=0.28113,SSE=0.0244567.TRAINBPX:86/1000epochs,lr=0.295187,SSE=0.0177537plot(X,y21,'--g',X,y22,'or')disp('网络训练步数为:')tepausefigure(2);%网络训练记录tr(1,:)为训练误差,tr(2,:)为训练过程中的学习速率plottr(tr)网络训练步数为:te=86(BP网络训练过程的误差及学习速率变化曲线)(训练后BP网络的函数逼近效果)第5页共8页4、检验训练后BP网络的泛化能力(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');figure(3);plot(X,T,x1,y2,'cs')(所得曲线)第6页共8页六、实验结果、分析和结论(误差分析与数据处理、成果总结等)实验结果如上检验训练后BP网络的泛化能力所的图像,本次试验中,前面的步骤一直很顺利,到最后一步走了好多曲折:1)首先是输入的程序不对,导致图形覆盖在BP网络训练过程的误差及学习速率变化曲线上:(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');plot(x1,y2,'cs')比起上面的程序,少了一个figure(3);语句(所得曲线)2)经过上一步的失败,加上figure(3);语句后,出现了一个单独的曲线,但是只有泛化,没有与期望相比较,因而不能看出泛化能力。(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');figure(3);plot(x1,y2,'cs')(所得曲线)第7页共8页3)后来经过老师指导后,在泛化结果基础上加上了原有期望,就能很好的看出泛化能力了。(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');figure(3);plot(X,T,x1,y2,'cs')(所得曲线)第8页共8页实验总结:通过本次试验,我对BP神经网络的了解更加深入,它是一个多层网络(输入层、隐含层、输出层),层与层之间采用互连方式,同层之间不连接,并且隐含层是S函数的一个网络。BP网络具有很好的逼近非线性映射的能力,在模式识别、图像处理、系统辨识、函数模拟、优化计算、最优预测和自适应控制领域有着较为广泛的应用。
本文标题:神经网络设计及MATLAB仿真实验
链接地址:https://www.777doc.com/doc-4568089 .html