智能控制实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能控制课实验报告

(3次)

学院:自动化学院

班级:智能

姓名:

学号:

智能控制课实验(1)模糊控制器的设计

学院:自动化学院

姓名:

班级:

学号:

日期:2017-9-30

实验1.1模糊控制器的设计

一、实验目的

在matlab环境下,完成一个对水位控制的模糊控制器的设计。

二、实验容

(1)确定控制器的输入、输出的隶属度函数

偏差e(t) :e(t)=r(t)-c(t)负反馈

三个模糊子集“负大”(水位高)、“零”和“正大”(水位低)。

偏差变化率:de,

三个模糊子集“负大”(高趋势)、“零”和“正大”(低趋势)。

控制量u:“负大”、“负中”、“零”、“正中”、“正大”。

Matlab操作方法:

打开matlab在命令行输入:fuzzy

出现下图界面:

在上图选择“edit”出现下图:选择“Add Variable-- Input”再添加输入

这样就建立了两个输入,一个输出的模糊控制器。

再修改输入、输出的各参数:

input1改为e;input2改为de; output1改为u ;如下图:

双击“e” ,修改模糊子集:

如下图修改e的负大:注意各参数的设置

修改好的e的模糊子集如下图:

用同样的方法修改de如下图:

修改u的方法如下图:需要5个模糊子集

添加模糊子集的方法:在“edit”菜单下选择“Add Custom MF”

下图是对”O”这个模糊子集的设置:

设置好的u的模糊子集如下图:

(2)添加规则的方法:

添加规则的界面如下:

这样一个模糊推理控制器就建立完毕了。

(3)利用模糊控制器可以得到规则曲面以及根据输入得到输出

如上图操作可以得到规则曲面:

如下图可以得到规则的推理结果:

改变上图e和de的值,可以看到u的不同的输出。

然后可以把该系统存为tank.fis.

三、写出实验的心得体会

总结建立模糊控制器的方法。

实验1.2神经网络工具箱的应用

二.神经网络工具箱函数

最新版的MATLAB 神经网络工具箱为Version4.0.3, 它几乎涵盖了所有的神经网络的基本常用类型,对各种网络模型又提供了各种学习算法,我们可以根据自己的需要调用工具箱中的有关设计与训练函数,很方便地进行神经网络的设计和仿真。目前神经网络工具箱提供的神经网络模型主要用于:

1. 数逼近和模型拟合;

2. 信息处理和预测;

3. 神经网络控制;

4. 故障诊断。

神经网络工具箱提供了丰富的工具函数,其中有针对某一种网络的,也有通用的,下面列表中给出了一些比较重要的工具箱函数。

三.仿真实例

BP 网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。BP 网络模型结构见图1。网络同层节点没有任何连接,隐层节点可以由一个或多个。网络的学习过程由正向和反向传播两部分组成。在正向传播中,输入信号从输入层节点经隐层节点逐层传向输出层节点。每一层神经元的状态只影响到下一层神经元网络,如输出层不能得到期望的输出,那么转入误差反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,在经正向传播过程,这两个过程反复运用,使得误差信号最小或达到人们所期望的要求时,学习过程结束。

利用神经网络工具箱进行设计和仿真的具体步骤:

1.确定信息表达方式:将实际问题抽象成神经网络求解所能接受的数据形式;

2. 确定网络模型:选择网络的类型、结构等;

3. 选择网络参数:如神经元数,隐含层数等;

4. 确定训练模式:选择训练算法,确定训练步数,指定训练目标误差等;

5. 网络测试:选择合适的训练样本进行网络测试。

下面给出一个利用BP 神经网络进行函数逼近的例子。

第一步问题的提出

设计一个简单的BP 网络,实现对非线性函数的逼近,通过改变BP 网络的隐层神经元的数目,采用不同的训练方法来观察训练时间和训练误差的变化情况。假设将要将要逼近的函数为正弦函数,其频率参数N=1,绘制此函数见图2 所示。

N=1;

p= [- 1:0.05:1] ;

t=sin (N*pi*p) ;%假设N=1,绘制此函数曲线

plot (p,t,'r*');

title ('要逼近的非线性函数')

xlabel ('时间')

要逼近的非线性函数

第二步网络建立

应用newff () 建立两层的BP 网络,隐层神经元数目可以改变,此时S=8 ,输出层一个神经元,隐层和输出层的传递函数分别为tansig 和purelin ,学习算法采用Levenberg - Marquadt ( trainlm) 。用sim() 观察初始化网络输出如图3 所示。

S=8;

net=newff (minmax (p) , [S,1] , {'tansig','purelin'} ,'trainlm');

y1=sim (net,p);

figure;

plot (p,t, 'r* ',p,y1,'b- ')

title ('未训练网络的输出结果')

xlabel ('时间')

ylabel ('仿真输出- 原函数*')

legend ('要逼近的非线性函数','未训练网络的输出结果')

未训练时网络的输出结果结果接

第三步网络训练

将训练时间设为10,精度为0.001,用train ()进行训练,误差曲线见图4 所示。net.trainParam.epochs=10;

net.trainParam.goal=0.001;

net1 = train (net,p,t);

相关文档
最新文档