好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

智能控制基础实验报告

智能控制基础实验报告 本文关键词:智能控制,实验,基础,报告

智能控制基础实验报告 本文简介:智能控制基础实验报告姓名:班级:学号: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等工具相结合对参数进行整定才能取得较好的效果。通过本次实验,掌握了模糊控制和神经网络工具箱的一些基本用法,这里感谢老师提供的课件和演示。

TAG标签: