《智能控制基础实验报告》由会员分享,可在线阅读,更多相关《智能控制基础实验报告(24页珍藏版)》请在金锄头文库上搜索。
1、智 能 控 制 基 础实 验 报 告姓名:班级:学号: 1 建立一个两输入一输出的模糊规则控制器,并用simulink仿真分别通过一阶和二阶传递函数,观察模糊控制器输出、误差及其变化率和输出响应。解:这里选取二阶和一阶传递函数为和,查看其阶跃响应。用MATLAB模糊逻辑工具箱设计模糊控制器模糊控制器为两输入一输出,这里定义输入为E、EC,输出为U。选择E、EC和U的论域如下:E range: -1 1EC range: -1 1U range: 0 2其模糊子集都为NB,NM,NS,ZO,PS,PM,PB;模糊规则确定:UECNBNMNSZOPSPMPBENBPBPBPBPBPMZOZONMP
2、BPBPBPBPMZOZONSPMPMPMPMZONSNSZOPMPMPSZONSNMNMPSPSPSZONMNMNMNMPMZOZONMNBNBNBNBPBZOZONMNBNBNBNB模糊决策和反模糊方法的确定:隐含采用 mamdani方法: max-min推理方法, 即 min 方法去模糊方法:面积重心法(centroid)选择隶属函数的形式:输入为三角型trimf,输出为也为三角型trimf输入E、EC和输出U隶属函数:输入E输入EC输出U按照上述模糊规则在模糊规则编辑器窗口中输入控制规则如下:模拟规则图形如下:模糊推理的输出曲面如下:下面进行仿真:前面所建立的模糊推理系统,在FIS E
3、ditor界面下单击File菜单,选择其中的“Export To Workspace ”,将其保存到MATLAB工作区中。仿真时,将选项“Fuzzy Logic Controller”拖到Simulink仿真系统中,双击图标,在弹出的FIS Matrix文本框中输入刚建立的模糊控制器的“monikongzhiqi”,以实现工作区中的FIS结构与模糊控制器的连接。二阶仿真程序如下:仿真结果:系统输出误差及其变化率模糊控制器输出一阶仿真程序如下:仿真结果:系统输出误差及其变化率模拟控制器输出2.用BP网络实现对于两个非线性映射的逼近:(1)(2), 采样点数解:BP神经网络对函数进行逼近要用到BP
4、网络工具箱中的以下函数:(1)newff(),用于建立一个BP神经网络;(2)神经元传递函数tansig()函数和purelin()函数;(3)网络训练函数train(),用于训练建立的BP神经网络;(4)网络仿真函数sim(),用于仿真训练前后的BP神经网络。(1)实现对正弦函数的逼近程序代码如下:(由于直接从M文件中粘过来的代码注释是乱码,下面代码是UE中粘贴过来的) %定义要逼近的函数 t = 0:0.05:2; y = sin(pi*t); plot(t,y,-) grid title(要逼近的非线性函数); xlabel(时间); ylabel(非线性函数); %建立相应的BP网络
5、net = newff(minmax(t),10,1,tansig purelin,trainlm); %对没有训练的网络进行仿真 y1 = sim(net,t); %绘出仿真得到的曲线 figure; plot(t,y,-,t,y1,*) grid title(没有训练的网络仿真结果); xlabel(时间); ylabel(仿真输出* 原函数-); %训练网络 net.trainParam.epochs = 50; net.trainParam.goal = 0.01; net = train(net,t,y); %对训练后的网络进行仿真 y2 = sim(net,t); %绘出训练后的仿
6、真结果 figure; plot(t,y,-,t,y1,*,t,y2,+) grid title(训练后的网络仿真结果); xlabel(时间); ylabel(仿真输出); figure plot(t,y2-y) grid axis(0 2 -1 1)运行结果:训练过程误差变化曲线(2)实现对抛物线的逼近由于不能直接画出抛物线,先找一些抛物线上的点进行拟合,得到理想抛物线方程式,然后再对得到拟合函数进行逼近,过程基本同用BP网络逼近正弦函数。程序代码如下: %定义要逼近的函数 t = 0,0.5,1; t0=0,0.25,1; a=polyfit(t,t0,2) x=-1:0.05:1; y
7、=a(3)+a(2)*x+a(1)*x.2 plot(x,y) grid title(要逼近的非线性函数); xlabel(X); ylabel(非线性函数); %建立相应的BP网络 net = newff(minmax(t),10,1,tansig purelin,trainlm); %对没有训练的网络进行仿真 y1 = sim(net,x); %绘出仿真得到的曲线 figure; plot(x,y,-,x,y1,*) grid title(没有训练的网络仿真结果); xlabel(X); ylabel(仿真输出* 原函数-); %训练网络 net.trainParam.epochs = 5
8、0; net.trainParam.goal = 0.01; net = train(net,x,y); %对训练后的网络进行仿真 y2 = sim(net,x); %绘出训练后的仿真结果 figure; plot(x,y,-,x,y1,*,x,y2,+r) grid title(训练后的网络仿真结果); xlabel(X); ylabel(仿真输出);运行结果:a = 1.0000 0.0000 -0.0000(也即)训练过程误差变化曲线实验总结:由于此前对MATLAB工具箱功能不是太熟悉,实验刚开始无从下手,后来通过学习课件和相关参考资料,对MATLAB工具箱有了进一步的认识,MATLAB工具箱用起来非常方便,但要想真正的使用好,还要与Simulink等工具相结合对参数进行整定才能取得较好的效果。通过本次实验,掌握了模糊控制和神经网络工具箱的一些基本用法,这里感谢老师提供的课件和演示。