好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

智能控制导论实验指导书.doc

15页
  • 卖家[上传人]:创****公
  • 文档编号:358247117
  • 上传时间:2023-08-21
  • 文档格式:DOC
  • 文档大小:334.50KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 智能控制导论实验指导书西安文理学院物理与机电工程学院目录实验一 模糊控制系统仿真 1实验二 BP神经网络的函数逼近 4Matlab模糊逻辑工具箱的图形用户界面 9BP神经网络工具箱函数 13智能控制导论实验指导书实验一 模糊控制系统仿真一、实验目的1.掌握Matlab模糊逻辑工具箱2.比较位置式模糊控制器和速度式模糊控制器的不同3.体会输入输出量化因子的作用二、实验仪器设备1.计算机(装有Matlab软件)三、实验内容1.利用Matlab提供的模糊逻辑工具箱建立一个常规模糊控制器模糊控制器有两个输入变量:输出与给定值的误差e和e的变化量ec(ec=e(k)-e(k-1)),一个输出变量:控制量的增量u(位置式)或Δu(速度式)图1-1 语言变量的隶属度函数取e、ec和Δu的论域均为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},其模糊集都为{NL,NM,NS,ZE,PS,PM,PL}输入和输出变量的隶属度函数均如图1-1所示模糊关系运算的方法定义为:“与”运算(And method)——min、“或”运算(Or method)——max、蕴含运算(Implication)——min、模糊规则的综合运算(Aggregation)——max、去模糊化(Defuzzification)——centriod。

      模糊控制器共有49条模糊控制规则,模糊控制规则如下表所示EECNLNMNSZEPSPMPLNLNLNLNLNLNMNSZENMNLNLNMNMNSZEPSNSNLNLNMNSZEPSPMZENLNMNSZEPSPMPLPSNMNSZEPSPMPLPLPMNSZEPSPMPLPLPLPLZEPSPMPLPLPLPL模糊推理系统建立完成后,可观察期模糊规则浏览器和输入输出曲面视图通过导入命令(菜单项File|Export|To Workspace)将该模糊推理系统导入工作空间,命名为myfuzzy2.仿真模型的建立图1-2 位置式模糊控制系统分别建立位置式模糊控制系统和速度式模糊控制系统的Simulink仿真模型如图1-2和图1-3图1-3 速度式模糊控制系统其中输入给定的阶跃信号大小为1,开始时间为0秒,两个延迟环节的采样时间为0.2s,两个饱和环节的上下限分别为+6和-6,模糊逻辑控制器模块中FIS的参数设置为刚才导入工作空间的模糊逻辑的名称myfuzzy图1-4 Simulink的相关参数设置Simulink的参数设置有两项需要改动,如图1-4所示3.对建立的系统进行仿真,记录响应曲线。

      体会位置式模糊控制器和速度式模糊控制器的差别以及量化因子的作用量化因子可以分别取如下参数:Ke155301515151515Kec2020201030202020Ku222221410四、思考题1.位置式模糊控制器和速度式模糊控制器有无稳态误差?若有稳态误差,是否可以消除?2.输入输出量化因子Ke、Kec、Ku变大或变小对系统响应有何影响13实验二 BP神经网络的函数逼近一、实验目的1.熟悉掌握Matlab神经网络工具箱的使用;2.理解反向传播学习算法(BP)的原理,并利用BP算法实现函数逼近功能;3.认识隐含层神经元个数与训练函数对神经网络训练次数的影响二、实验仪器设备1.计算机(装有Matlab软件)三、实验内容1.熟悉Matlab神经网络工具箱,了解其中的命令使用2.根据BP学习算法的计算步骤,利用Matlab的神经网络工具箱的有关函数编写BP算法实现"函数逼近"功能逼近函数y=0.5*(1+sin(x))网络结构如下设置: 输入1;隐含6(tansig元);输出1(purelin元)参考代码如下:%trainnonline%训练BP网络的程序,逼近函数y=0.5*(1+sin(x))clear;P = -pi:pi/8:pi;%输入矢量T = 0.5*(1+sin(P));%输出期望值nntwarn off;%去掉警告信息[r,q] = size(P);%r行数,输入维数。

      q列数,样本个数s1 = 6;s2 = 1;%s1,s2分别为隐含层和输出层的神经元个数(单隐含层)W1 = rands(s1,r)*0.005;B1 = rands(s1,1)*0.005;%W1,B1为隐含层的权值和阈值W2 = rands(s2,s1)*0.5;B2 = rands(1,s2)*0.5;%W2,B2为输出层的权值和阈值err_goal = 0.01;%期望误差最小值max_epoch = 15000;%最大循环次数lr = 0.01;%学习速率A1 = tansig(W1*P,B1);%隐含层输出矢量A2 = purelin(W2*A1,B2);%输出层输出矢量E = T-A2;%网络误差figure(1);%打印初始曲线和各点plot(P,T,'rx',P,A2);axis([-1-pi pi+1 -0.5 1.5]);title(['初始网络的输出曲线']);%设置图形标题pause;%暂停for epoch = 1:max_epoch SSE = sumsqr(E);%求误差平方和 sse(epoch) = SSE;%记录误差数据 if SSE < err_goal break;%满足误差精度要求,则退出 end if mod(epoch,1000) == 0%每1000次打印依次结果 plot(P,T,'rx',P,A2);axis([-1-pi pi+1 -0.5 1.5]);% title(['训练',num2str(epoch),'次的结果']);%设置图形标题 pause;%暂停 end D2 = deltalin(A2,E); D1 = deltatan(A1,D2,W2); [dW1,dB1] = learnbp(P,D1,lr);%输出层误差变化量 [dW2,dB2] = learnbp(A1,D2,lr);%隐含层误差变化量 W1 = W1+dW1; B1 = B1+dB1;%输出层权值和阈值修正 W2 = W2+dW2; B2 = B2+dB2;%隐含层权值和阈值修正 A1 = tansig(W1*P,B1); A2 = purelin(W2*A1,B2); E = T-A2;%求取新的误差endplot(P,T,'rx',P,A2);axis([-1-pi pi+1 -0.5 1.5]);%打印最后一次结果title(['训练',num2str(epoch),'次的结果']);pause;%随机取10个点进行泛化性验证P1=rands(1,10)*pi;T1 = 0.5*(1+sin(P1));%随机取10个点P1,计算其期望值T1a1 = tansig(W1*P1,B1);a2 = purelin(W2*a1,B2);%代入训练好的网络,输出结果a2e = sumsqr(T1-a2);%求取误差平方和ehold on;title(['泛化性验证']);plot(P1,a2,'k.',P1,T1,'ro');hold off;%绘制网络输出(黑点)和期望输出(红圈)%绘制误差记录figure(2);plot(sse);title(['误差记录']);3.利用专门的BP网络函数建立BP网完成上述函数逼近任务。

      具体步骤如下:1)利用函数newff建立一个BP神经元网络net;2)然后利用函数train对网络进行训练有时需要设置如下参数net.trainParam.show(学习过程显示频率);net.trainParam.epochs(最大训练次数);net.trainParam.goal(误差指标);net.trainParam.lr(学习率)的值参数设置完后调用train函数 [net,tr]=train(net,P,T)3)用sim函数检查训练效果参考代码如下:%trainBP%训练BP网络的程序,逼近函数y=0.5*(1+sin(x))clear;P = -pi:pi/8:pi;%输入矢量T = 0.5*(1+sin(P));%输出期望值%建立神经网络net=newff(minmax(P),[6 1],{'tansig' 'purelin'},'traingd','learngd','sse');%设置训练参数net.trainParam.show=50;net.trainParam.goal=0.01;net.trainParam.lr=0.01;net.trainParam.epochs = 2000;%训练网络 [net , Tr] = train(net,P,T);%随机取10个点进行泛化性验证P1=rands(1,10)*pi;T1 = 0.5*(1+sin(P1));%随机取10个点P1,计算其期望值T1Y1 = sim(net,P1);%计算其网络输出plot(P,T,'k-',P1,T1,'ko',P1,Y1,'r*');hold off;%绘制期望输出(黑圈)和网络输出(红*)pause;%暂停%外推验证P2=pi:pi/20:pi*1.1;T2 = 0.5*(1+sin(P2));%计算其期望值T2Y2 = sim(net,P2);%计算其网络输出e = Y2-T2;%绘制误差记录figure(2);plot(P2,e);title(['误差记录']);程序编制完成后运行程序,观察神经网络对函数的逼近。

      然后试着修改程序中的下列语句:%建立神经网络net=newff(minmax(P),[6 1],{'tansig' 'purelin'},'traingd','learngd','sse');分别改变隐含层神经元个数和训练函数, 将训练次数的结果纪录在表2-1中表2-1 训练次数表训练函数隐含层神经元个数traingdtraingdxtrainlm691215四、思考题1.分析并比较隐含层神经元个数和训练函数这两个因素对训练次数的影响Matlab模糊逻辑工具箱的图形用户界面一、模糊推理系统编辑器(Fuzzy)模糊推理系统编辑器提供了利用图形界面(GUI)对模糊系统的高层属性的编辑和修改功能,这些属性包括输入、输出语言变量的个数和去模糊化方法等用户在基本模糊编辑器中,可以通过菜单选择激活其他几个图形界面编辑器,如隶属度函数编辑器(mfedit)、模糊规则编辑器(rulee。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.