模糊神经网络实验报告-张伦珺
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验课程:神经网络控制
学生姓名:张伦珺
学号:416114312110
专业班级:电气工程
2013年5月21日
三容水箱神经网络控制设计
一、实验目的
1、了解三容水箱液位定值控制系统的结构和组成
2、通过实验进一步掌握RBF 监督网络控制原理及RBF 监督控制规则的生成
3、掌握RBF 监督方法及实现
二、实验设备及条件
计算机(装有MATLAB )
三、实验原理
1.RBF 神经网络结构
最基本的RBF 神经网络的构成包括三层,分别为输入层、隐层(中间层)和输出层。其中输入层由一些源点(感知单元)组成,它们将网络与外部环境连接起来,仅起到数据信息的传递作用,对输入信息不进行任何变换;隐层神经元的核函数(或称作用函数)取为径向基函数,对输入信息到隐层空间之间进行非线性变换,通常具有较高的维数;输出层是线性的,为输入层的激活模式提供响应。
图2 RBF 神经网络模型
设隐层、输出层上的神经元数分别为M ,Q ,输入模式记为X ,12[,,,]T R X x x x =,
输出记为Y ,12[,,
,]T Q Y y y y =。本文取径向基函数为Gauss 函数,隐单元输出则为
2
exp j
j j X C
z σ⎛⎫
- ⎪=-
⎪⎝⎭
1,2,,j M = ()1 式中:j z 为隐层第j 个神经元的输出值;j C 为隐层第j 个神经元的中心,由隐层第j 个神经元对应于输入层所有神经元的中心分量构成,12,,,T
j j j jR C c c c ⎡⎤=⎣⎦;j σ为隐层第j 个
神经元的宽度,与j C 相对应;∙为欧氏范数。
输出层神经元的输入输出关系表达式是:
1
M
k kj j j y w z ==∑ 1,2,,k Q
= ()2 式中:k y 为输出层第j 个神经元的输出值;kj w 为输出层第k 个神经元与隐层第j 个神经元间的权值。
四、实验要求
1. 三个水箱的初始液位是在0~200之间的随机数。
2. RBF 监督控制或者模糊神经网络控制。
3.
设定值随机(20~180cm )。
4. 要有系统响应曲线图与误差曲线图。
5. 超调量≤设定值15%。
6. 延时≥3步。
7.
下水箱输出半波形。
五、 实验设计过程及结果
1、 三容水箱模型
如图所示的三容水箱串级相连,要求通过
模糊控制,随着q4的正弦变化,能够通过调节阀门开度k 来使第三个水箱液位h3稳定在设定值,并且其他两水箱水不会流尽。
其数学表达式为: q1=5.2*k;
h1=h1+(q1-q2)/s; q2=1.9*sqrt(h1); h2=h2+(q2-q3)/s; q3=2.2*sqrt(h2);
q4=4.5*abs(sin(5.5*pi*i+0.3)); h3=h3+(q3-q4)/s; k 为阀门开度。
各个参数含义:h1,h2,h3分别代表三水箱的液位;q1代表水箱1流进流量,q2为水箱1流出流量, q3为水箱2流出流量,q4为水箱3流出流量;s 为水箱底面积。
2、根据神经网络控制器的设计规律,设计RBF控制器(1)确定观测量和控制量
当M=1时是传统控制,误差偏大。
当M=2时,修正误差。
(2)实验结果及分析:
如上图所示,曲线最终接近设定值100,在设定值附近达到稳定,满足控制要求。
(3)编写程序并调试:
%RBF Supervisory Control clear all;
close all;
ts=0.001;
s=100;
h1=rand*200;
h2=rand*200;
h3=rand*200;
q1=0;
q2=0;
q3=0;
k=rand*100;
y_1=0;y_2=0;
u_1=0;u_2=0;
e_1=0;
xi=0;
x=[0,0]';%e e'
numNeu=4;
b=28*ones(numNeu,1);
c=[30 33 35 40;30 33 35 40]; w=1*rands(numNeu,1);
w_1=w;w_2=w_1;
c_1=c;c_2=c_1;
b_1=b;b_2=b_1;
d_w=0*w;
d_b=0*b;
d_c=0*c;
xite=0.011;
alfa=0.8;
kp=4.05;
kd=0.1;
r=100;%rand*(180-20)+20;
time=zeros(4000,1);
for k=1:1:4000
time(k)=k;
%model
q1=2*u_1;
h1=h1+(q1-q2)/s;
if h1<0%水箱流空
h1=0;
end
if k<=3
q2=20*sqrt(h1);
else
if h1~=0
q2=20*sqrt(L1(k-3));%延迟3步
else
q2=0;
end
end
h2=h2+(q2-q3)/s;
if h2<0%水箱流空
h2=0;
end
if k<=3
q3=20*sqrt(h2);
else