智能控制基础实验报告 本文关键词:智能控制,实验,基础,报告
智能控制基础实验报告 本文简介:智能控制基础实验报告姓名:班级:学号:1.建立一个两输入一输出的模糊规则控制器,并用simulink仿真分别通过一阶和二阶传递函数,观察模糊控制器输出、误差及其变化率和输出响应。解:这里选取二阶和一阶传递函数为和,查看其阶跃响应。用MATLAB模糊逻辑工具箱设计模糊控制器模糊控制器为两输入一输出,这
智能控制基础实验报告 本文内容:
智
能
控
制
基
础
实
验
报
告
姓名:
班级:
学号:
1.
建立一个两输入一输出的模糊规则控制器,并用simulink仿真分别通过一阶和二阶传递函数,观察模糊控制器输出、误差及其变化率和输出响应。
解:这里选取二阶和一阶传递函数为和,查看其阶跃响应。
用MATLAB模糊逻辑工具箱设计模糊控制器
模糊控制器为两输入一输出,这里定义输入为E、EC,输出为U。
选择E、EC和U的论域如下:
E
range:
[-1
1]
EC
range:
[-1
1]
U
range:
[0
2]
其模糊子集都为{NB,NM,NS,ZO,PS,PM,PB};
模糊规则确定:
U
EC
NB
NM
NS
ZO
PS
PM
PB
E
NB
PB
PB
PB
PB
PM
ZO
ZO
NM
PB
PB
PB
PB
PM
ZO
ZO
NS
PM
PM
PM
PM
ZO
NS
NS
ZO
PM
PM
PS
ZO
NS
NM
NM
PS
PS
PS
ZO
NM
NM
NM
NM
PM
ZO
ZO
NM
NB
NB
NB
NB
PB
ZO
ZO
NM
NB
NB
NB
NB
模糊决策和反模糊方法的确定:
隐含采用
‘mamdani’方法:
‘max-min’
推理方法,
即
‘min‘
方法
去模糊方法:面积重心法(centroid)
选择隶属函数的形式:输入为三角型trimf,输出为也为三角型trimf
输入E、EC和输出U隶属函数:
输入E
输入EC
输出U
按照上述模糊规则在模糊规则编辑器窗口中输入控制规则如下:
模拟规则图形如下:
模糊推理的输出曲面如下:
下面进行仿真:
前面所建立的模糊推理系统,在FIS
Editor界面下单击File菜单,选择其中的“Export
To
Workspace”,将其保存到MATLAB工作区中。
仿真时,将选项“Fuzzy
Logic
Controller”拖到Simulink仿真系统中,双击图标,在弹出的FIS
Matrix文本框中输入刚建立的模糊控制器的“monikongzhiqi”,以实现工作区中的FIS结构与模糊控制器的连接。
二阶仿真程序如下:
仿真结果:
系统输出
误差及其变化率
模糊控制器输出
一阶仿真程序如下:
仿真结果:
系统输出
误差及其变化率
模拟控制器输出
2.用BP网络实现对于两个非线性映射的逼近:
(1)
(2),采样点数
解:BP神经网络对函数进行逼近要用到BP网络工具箱中的以下函数:(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网络
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);
%绘出训练后的仿真结果
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=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
=
50;
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等工具相结合对参数进行整定才能取得较好的效果。通过本次实验,掌握了模糊控制和神经网络工具箱的一些基本用法,这里感谢老师提供的课件和演示。