智能控制理论基础实验报告(北科大版)

《智能控制理论基础》

实  验  报  告 

学    院:                 

专业班级:                 

姓    名:                 

学    号:                 

实验一 采用SIMULINK的系统仿真

一、实验目的及要求:

1.熟悉SIMULINK 工作环境及特点

2.掌握线性系统仿真常用基本模块的用法

3.掌握SIMULINK 的建模与仿真方法

二、实验内容:

1. 了解SIMULINK模块库中各子模块基本功能

通过实验熟悉以上模块的使用。

2. SIMULINK 的建模与仿真方法

(1)打开模块库,找出相应的模块。鼠标左键点击相应模块,拖拽到模型窗口中即可。

(2)创建子系统:

当模型大而复杂时,可创建子系统。

(3)模块的封装:

(4)设置仿真控制参数。

3SIMULINK仿真实际应用

PID控制器的仿真实现。

控制对象的开环传递函数如下图:

加入PID控制器,求系统单位负反馈闭环单位阶跃响应,要求通过调节器的作用使系统满足超调量20%,上升时间3s,调节时间10s的要求。使输出曲线如下图。要求加入的PID控制器封装成一个模块使用。

SIMULINK仿真结果如下:

三、实验报告要求:

1.针对具体实例写出上机的结果,体会其使用方法,并作出总结。

在Matlab的SIMULINK中仿真,首先绘制出实验要研究的开环传递系统,再加上负反馈形成闭环传递系统,在最后加上PID调节器调整各参数,使阶跃相应曲线达到实验要求。首先调节比例系数,比例系数越大,响应速度越快,但比例系数过大系统会不稳定,且无法消除稳态误差,需要加入积分作用;调节积分时间常数,使得系统快速消除稳态误差;通过不断改善各系数,优化相应曲线,最终使相应曲线达到实验要求。

实验二BP神经网络设计

一、实验目的

1.  熟悉神经网络的特征、结构以及学习算法

2.  了解神经网络的结构对控制效果的影响     

3.  掌握用MATLAB实现神经网络控制系统仿真的方法。

二、实验原理

人工神经网络ANN(Artificial Neural Network)系统由于具有信息的分布存储、并行处理以及自学习能力等优点,已经在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其是基于误差反向传播(Back Propagation)算法的多层前馈网络(Muhiple-LayerFeedforward Network),即BP网络,可以以任意精度逼近任意连续函数,所以广泛地应用于非线性建模、函数逼近和模式分类等方面。

1.BP网络算法实现

BP算法属于算法,是一种监督式的学习算法。其主要思想是:对于M个输人学习样本,已知与其对应的输出样本。学习的目的是用网络的实际输出与目标矢量之间的误差来修改其权值,使实际与期望尽可能地接近,即使网络输出层的误差平方和达到最小,他是通过连续不断地在相对于误差函数斜率下降的方向上计算网络权值和偏差的变化而逐渐逼近目标的。每一次权值和偏差的变化都与网络误差的影响成正比,并以反向传播的方式传递到每一层。

2.BP网络的设计

在MATLAB神经网络工具箱中.有很方便的构建神经网络的函数。对于BP网络的实现.其提供了四个基本函数:newff,init.train和sim.它们分别对应四个基本步骤.即新建、初始化、训练和仿真

(1)初始化前向网络

初始化是对连接权值和阈值进行初始化。initff函数在建立网络对象的同时,自动调用初始化函数,根据缺省的参数对网络的连接权值和阈值进行初始化。

格式:

[wl,bl,w2,b2]=initff(p,sl,fl,s2,f2)

其中P表示输入矢量,s表示神经元个数,f表示传递函数,W表示权值,b表示阈值。

(2)训练网络

BP网络初始化以后,就可对之进行训练了。函数采用批处理方式进行网络连接权值和阈值的更新,要对其参数进行设置,如学习步长、误差目标等,同时在网络训练过程中,还用图形显示网络误差随学习次数的变化。

①基本梯度下降法训练网络函数trainbp

格式:

[wl,bl,w2,b2,te,tr];trainbp(wl,bl,fl,w2,b2,f2,p,t,tp)

②带有动量项的自适应学习算法训练网络函数trainbpx

格式:

[wl,bl,w2,b2,te,tr]=trainbpx(wl,bl,fl,w2,b2,f2,p,t,tp)

其中P表示输入矢量,t表示目标矢量,te为网络的实际训练次数,tr为网络训练误差平方和的行矢量,tp表示网络训练参数(如学习率、期望误差、最大学习次数等)。

(3)网络仿真

仿真函数simff用来对网络进行仿真。利用此函数,可以在网络训练前后分别进行输入输出的仿真,以做比较,从而对网络进行修改评价。

格式:

a=simff(p,wl,b1,fl,w2,b2,f2)

其中a表示训练好的BP网络的实际输出。

三、实验内容

建立一个只有一个隐层的BP网络,来逼近一个函数,其隐层的神经元个数为6.隐层和输出层的转移函数分别为双曲正切S函数和线性函数,训练函数为trainlm。输入向量为P=一1:0.1:1.目标向量为t=p. 2。

由于本实例数据量少。所以采用元素列表方式输入数据

BP网络的具体实现如下:

1.建立网络

Net=newff([一1 1],[6 1],{‘tansig’,’purelin’},’trainlm’);

2.初始化

采用默认的初始化参数对网络进行初始化,即

net=init(net)

3.网络的训练

训练函数的参数设置如下:

net.trainParam.show =10:

net.trainParam.epochs =100;

net.trainParam.goal=0.0001:

net.trainParam.1r=0.01:

网络的训练函数如下:

[net,tr]=train(net.P.t);

4.仿真

在这个网络的设计中.共用到了三次sim函数.旨在对网络训练结果进行比较。第一次是在对网络进行初始化之后,训练之前,用y=sim(net,p)来进行仿真;第二次是在网络训练之后.再次用该函数进行仿真。

四、实验报告

1.给出BP神经网络程序清单。

p=-1:0.1:1;

t=p.^2;

plot(p,t);

title('要逼近的函数曲线');

net=newff([-1 1],[6 1],{'tansig','purelin'},'trainlm');

net=init(net);

y1=sim(net,p);

figure

plot(p,t,'-',p,y1,'-.');

xlabel('p');

ylabel('t/y1');

title('未训练的BP网络输出和原函数曲线');

net.trainParam.show =10;

net.trainParam.epochs =100;

net.trainParam.goal=0.0001;

net.trainParam.lr=0.01;

[net,tr]=train(net,p,t);

y2=sim(net,p);

figure

plot(p,t,'-',p,y1,'-.',p,y2,'.');

xlabel('p');

ylabel('t/y1/y2');

title('采用trainlm函数训练后的输出');

2.记录实验数据和曲线,并作出总结。

图1 要逼近的函数曲线                      图2 未训练的BP网络输出

图3 采用trainlm函数训练后的输出              图4 matlab中的神经网络工具

通过仿真我们可以直观的看出,为训练的BP网络输出与要逼近的函数曲线相差甚远,且多次仿真可知,为训练的BP网络输出是随机变化的。而采用trainlm函数训练后的输出曲线可以完美逼近原函数曲线。

 

第二篇:北科大数学实验报告全

《数学实验》报告

实验名称  MATLAB基础知识           

学    院         

专业班级               

姓    名             

学    号           

20##年5月

一、        【实验目的】

     学会用MATLAB绘制二维曲线、三维曲线、三维曲面,掌握gtext, legend, title, xlabel, ylabel等指令用法。

二、        【实验任务】

 P34  3    P79 1,3,5

三、        【实验程序】

P34 第3题

n=1;

 sum=0;

 while n<=50;

     sum=sum+prod(1:n);

     n=n+1;

 end

 sum

P79第1题

x=0:pi/50:4*pi;

y1=exp(x/3).*sin(3*x);

y2=exp(x/3);y3=-exp(x/3);

plot(x,y1,'b*'),hold on

plot(x,y2,'r-.',x,y3,'r-.'),grid on

P79第3题

x1=-pi:pi/100:pi;

y1=x1.*cos(x1);

x2=pi:pi/100:4*pi;

y2=x2.*tan(1./x2).*sin(x2.^3);

x3=1:0.1:8;

y3=exp(1./x3).*sin(x3);

subplot(131),plot(x1,y1,'rp'),grid on

axis tight

title('y1=x1cosx1')

xlabel('xÖá'),ylabel('yÖá')

gtext('y1=x1cosx1')

legend('y1=x1cosx1')

subplot(132),plot(x2,y2,'c-'),grid on

axis tight

title('y2=x2tan(1/x2)sin(x2^3)')

xlabel('xÖá'),ylabel('yÖá')

gtext('y2=x2tan(1/x2)sin(x2^3)')

legend('y2=x2tan(1/x2)sin(x2^3)')

subplot(133);plot(x3,y3,'mx'),grid on

axis tight

title('y3=e^(1/x3)sin(x3)')

xlabel('xÖá'),ylabel('yÖá')

gtext('y3=e^(1/x3)*sin(x3)')

legend('y3=e^(1/x3)sin(x3)')

P79 第5题

t=0:pi/50:20*pi;

x=t.*cos(pi/6.*t);

y=t.*sin(pi/6.*t);

z=2*t;

plot3(x,y,z),grid on

xlabel('xÖá x=tcos(pi/6t)')

ylabel('yÖá y=tsin(pi/6t)')

zlabel('zÖá z=2t')

title('Բ׶ÂÝÏߣ¨0 t 20pi£©')

legend('Բ׶ÂÝÏß')

四、        【实验结果】

P34 第3题

P79第1题

P79第3题

P79 第5题

五、        【实验总结】

上课认真听讲并练习了一些图形之后做题,感觉轻松了许多,再加上对软件的掌握熟练了,题目可以轻松搞定了。这次课我感受到了软件绘图功能的强大。

相关推荐