智能控制实验报告.docx
《智能控制实验报告.docx》由会员分享,可在线阅读,更多相关《智能控制实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
智能控制实验报告
智能控制课实验报告
(3次)
学院:
自动化学院
班级:
智能
姓名:
学号:
智能控制课实验
(1)
模糊控制器的设计
学院:
自动化学院
姓名:
班级:
学号:
日期:
2017-9-30
实验1.1模糊控制器的设计
一、实验目的
在matlab环境下,完成一个对水位控制的模糊控制器的设计。
二、实验容
(1)确定控制器的输入、输出的隶属度函数
偏差e(t):
e(t)=r(t)-c(t)负反馈
三个模糊子集“负大”(水位高)、“零”和“正大”(水位低)。
偏差变化率:
de,
三个模糊子集“负大”(高趋势)、“零”和“正大”(低趋势)。
控制量u:
“负大”、“负中”、“零”、“正中”、“正大”。
Matlab操作方法:
打开matlab在命令行输入:
fuzzy
出现以下图界面:
在上图选择“edit”出现以下图:
选择“AddVariable--Input”再添加输入
这样就建立了两个输入,一个输出的模糊控制器。
再修改输入、输出的各参数:
input1改为e;input2改为de;output1改为u;如以下图:
双击“e”,修改模糊子集:
如以下图修改e的负大:
注意各参数的设置
修改好的e的模糊子集如以下图:
用同样的方法修改de如以下图:
修改u的方法如以下图:
需要5个模糊子集
添加模糊子集的方法:
在“edit”菜单下选择“AddCustomMF”
以下图是对”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);
训练过程
第四步网络测试
用sim()观察训练后的网络输出如图5所示。
y2=sim(net1,p);
figure;
plot(p,t,'r*',p,y1,'b-',p,y2,'ko')
title('训练后网络的输出结果')
xlabel('时间')
ylabel('仿真输出')
legend('要逼近的非线性函数','未训练网络的输出结果','训练后网络的输出结果')
图5训练后网路的输出结果
从图5可以看出经过很短时间的训练后BP网络很好的逼近了非线性函数。
讨论:
1.改变非线性函数的频率,即改变N的值时发现,网络的训练时间会长些,逼近效果要差些。
2.改变隐层的神经元数目对网络的逼近效果也有影响,一般来说,隐层的神经元数目越多,则BP网络逼近非线性函数能力越强,但也并非隐层的神经元数目越多,网络性能就越好,而同时训练时间有所增长。
四.结论
智能控制课实验
(2)
基于MATLAB的神经网络设计
学院:
自动化学院
姓名:
班级:
学号:
日期:
2017-10-25
实验2基于MATLAB的神经网络设计
一实验目的:
1掌握matlab工具箱设计前馈型神经网络的方法
2掌握图形用户界面的神经网络工具的设计方法
二实验容:
1感知器线形分类器设计
已知:
样本点(0,0),(1,1),(1,3),(3,1),(3,3),(5,5)。
对应目标:
t=[000111]
编程设计感知器,实现样本点的分类。
用测试样本进行分类测试。
新建m文件,参考程序:
p=[011335;013135];%六个输入样本
t=[000111];%样本的目标值
ptest=[0134;3221];%四个测试样本
net=newp(minmax(p),1);%创建感知器网络
[nettr]=train(net,p,t);%训练网络
iw1=net.iw{1};%得到感知器的权值
b1=net.b{1};%得到阈值
epoch1=tr.epoch;%得到训练的次数
perf1=tr.perf;%训练每步误差
%pause;
plotpv(p,t);%显示训练样本
plotpc(net.iw{1},net.b{1});figure;%显示分类面
%pause;
t2=sim(net,ptest);%对测试样本进行仿真
plotpv(ptest,t2);%显示测试样本
plotpc(iw1,b1);%再显示分类面
2设计前馈网络逼近平方函数
设计前馈网络在
区间上逼近平方函数
。
新建m文件,产生100个样本,建立网络进行仿真。
参考程序:
rand(‘state’,sum(100*clock)) ;%设置随机函数种子
p=10*rand(1,100) ;%样本随机输入
t=p.^2 ;%训练样本的目标值
Testp=0 :
0.1 :
10 ;%测试样本
net=newff([010],[51],{‘tansig’‘purelin’},’trainlm’) ;%建立前馈网络
net.trainParam.epochs=50 ;%设置最大训练次数
net.trainParam.goal=0.0001 ;%设置误差目标
net.trainParam.show=1 ;%多少步显示误差
net=train.(net,p,t) ;%训练神经网络
y2=sim(net,p) ;%仿真输出
plot(p,t,’r+’,p,y2,’.’) ;%显示输出曲线
figure;
y3=sim(net,Testp) ;%显示测试样本
plot(Testp,y3,’k.’) ;%再显示测试样本输出曲线
3图形工具设计神经网络
在图形界面下设计前馈型网络,在区间[-4,4]上逼近函数
。
在命令行键入输入变量:
>>indata=-4:
0.1:
4;
得到函数目标输出:
targetdata=1.1*(1-indata+2*indata.*indata).*exp(-indata.*indata/2) ;
在命令窗口输入:
nntool
出现如以下图形界面
图1图形界面
点击import按钮,添加输入变量和目标输出变量;
按import按钮,导入输入变量
按import按钮,导入目标输出变量。
在图1按new按钮,新建网络
按create按钮创建网络。
双击上图的network1,得到以下图:
点击按钮TrainNetwork,训练网络得到以下图:
点击上图的performance按钮得到以下图的网络的训练误差性能:
三、总结
总结m文件和图形界面方法设计前馈型网络的设计仿真方法。
智能控制课实验(3)
应用遗传算法求解优化问题
学院:
自动化学院
姓名:
班级:
学号:
日期:
2017-11-25
实验3应用遗传算法求解优化问题
一、实验目的
掌握matlab遗传算法工具箱的函数命令实现函数优化问题的方法和图形用户界面下求解优化问题的方法。
二、实验容
1、利用matlba工具箱函数命令实现多峰函数的优化:
(1)编写适应度函数:
文件名f_exp1.m
functionz=f_exp1(x)
z=x+10*sin(5*x)+7*cos(4*x);
z=-z;%求最大要取反
(2)调用遗传算法函数求解
options=gaoptimset(‘MutationFcn’,mutationadaptfeasible);
[xfval]=ga(f_exp1,1,[],[],[],[],15,25,[],options)
得到优化结果
2、图形用户界面下应用遗传算法求解优化问题
(1)编写适应度函数
文件名f_exp2.m
functionz=f_exp2(x)
z=3*(1-x
(1)).^2.*exp(-(x
(1).^2)-(x
(2)+1).^2)…
-10*(x
(1)/5-x
(1).^3-x
(2).^5).*exp(-x
(1).^2-x
(2).^2)...
-1/3*exp(-(x
(1)+1).^2-x
(2).^2);
z=-z;
注意路径问题
(2)在图形界面下运行遗传算法命令窗口键入命令:
gatool
点击上图的start开始运行。
得到
三、总结
总结函数命令和图形界面实现遗传算法优化的方法。