模糊神经网络实验报告-张伦珺

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档