三容水箱的模糊控制南昌大学实验报告.docx
《三容水箱的模糊控制南昌大学实验报告.docx》由会员分享,可在线阅读,更多相关《三容水箱的模糊控制南昌大学实验报告.docx(12页珍藏版)》请在冰点文库上搜索。
三容水箱的模糊控制南昌大学实验报告
实验报告
实验课程:
模糊控制
学生姓名:
学号:
专业班级:
2012年3月28日
三容水箱的模糊控制
一.实验目的
1.通过实验掌握模糊控制的基本原理,能利用模糊控制解决生活中的实际问题;
2.通过实验熟悉掌握MATLAB编程语句;
3掌握三容水箱的基本模型,能够实现三容水箱的基本控制。
二.实验要求
如图1所示的三容水箱串级相连,要求通过模糊控制,随着q4的正弦变化,能够通过调节阀门开度k来使第三个水箱液位h3稳定在设定值,并且其他两水箱水不会流尽。
图1水箱串级相连图
三.实验原理
模糊控制系统设计的关键在于模糊控制器的设计。
模糊控制器如图2所示:
图2模糊控制的基本原理框图
模糊控制器的设计主要有三个部分:
1)输入量的模糊化
所谓模糊化(Fuzzification)就是先将某个输入测量量的测量值作标准化处理,把该输入测量量的变化范围映射到相应论域中,再将论域中的各输入数据以相应的模糊语言值的形式表示,并构成模糊集合。
这样就把输入的测量量转换为用隶属度函数表示的某一模糊语言变量。
2)模糊逻辑推理
根据事先已定制好的一组模糊条件语句构成模糊规则库,运用模糊数学理论对模糊控制规则进行推理计算,从而根据模糊控制规则对输入的一系列条件进行综合评估,以得到一个定性的用语言表示的量,即模糊输出量。
完成这部分功能的过程就是模糊逻辑推理过程。
3)反模糊化过程
反模糊化(Defuzzification)有时又叫模糊判决。
就是将模糊输出量转化为能够直接控制执行部件的精确输出量的过程。
三.实验过程
水箱系统的模糊控制器设计为两个输入和一个输出,一个输入为水箱的液位给定值与实际液位h的误差e,另一个输入为误差e的变化率ec。
模糊控制器的输出是阀门开度k,阀门开度间接控制容器的水位高度,从而达到调节水箱的液位高度。
1.确定观测量和控制量
定义给定液位为h,实际测得的水位高度为h3,选择液位差为e=h-h3。
选择液位误差的增量ec=e-e_1。
则可选e和ec作为本次实验的观测量。
显然本次实验的控制量为阀门开度k。
根据系统实际情况,选择e,de和u的论域
erange:
[-55]
ecrange:
[-0.90.9]
urange:
[0.43.7]
2.输入量和输出量的模糊化
输入量共两个,e和ec,输出量为阀门开度k。
将偏差e分为5个模糊集:
负大(NB),负小(NS),零(Z),正小(PS),正大(PB)。
与此相同,我们把ec也分为5个模糊集:
负大(NB),负小(NS),零(Z),正小(PS),正大(PB)。
我们把输出量阀门开度k分为5个模糊集:
小(S),中小(SM),中(M),中大(MB),大(B)。
3.模糊规则的确定
确定模糊控制规则的原则是必须保证控制器的输出能够使系统输出响应的动态特性达到最佳。
根据水箱液位系统的要求,当实际的液位小于给定的液位,即输入量e大,将阀门开度变大时,实际液位高度就会上升,这样就设计出k的规则表如下:
表1k的模糊规则表
4、隐含和推理方法的制定
隐含采用‘mamdani’方法:
‘max-min‘
推理方法,即‘min‘方法
去模糊方法:
模糊控制器只有一个输出,解模糊的方法采用重心法centroid。
选择隶属函数的形式:
Z形隶属函数,S形隶属函数以及三角型隶属函数。
5实验模型
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为水箱底面积。
四.实验内容
1.程序代码
clearall;
closeall;
h1=0.0;
h2=0.0;
h3=0.0;
q1=0.0;
q2=0.0;
q3=0.0;
q4=0.0;
s=8.0;
k=2.0;
a=newfis('fuzz_tank');%声明一个模糊系统,添加模糊推理器a中。
%newfis功能:
建立新的FIS.
%添加第一个输入变量到模糊系统中。
a=addvar(a,'input','e',[-5,5]);%addvar功能:
在FIS中添加变量
a=addmf(a,'input',1,'NB','zmf',[-5,-2]);
%addmf功能:
隶属度函数添加到FIS(模糊推理系统)。
a=addmf(a,'input',1,'NS','trimf',[-2,-1,0]);
a=addmf(a,'input',1,'Z','trimf',[-1,0,1]);
a=addmf(a,'input',1,'PS','trimf',[1,2,3]);
a=addmf(a,'input',1,'PB','smf',[3,5]);
%添加第二个输入变量到模糊系统中
a=addvar(a,'input','ec',[-0.9,0.9]);
a=addmf(a,'input',2,'NB','zmf',[-0.9,-0.5]);
a=addmf(a,'input',2,'NS','trimf',[-0.5,-0.3,-0.1]);
a=addmf(a,'input',2,'Z','trimf',[-0.1,0,0.1]);
a=addmf(a,'input',2,'PS','trimf',[0.1,0.3,0.5]);
a=addmf(a,'input',2,'PB','smf',[0.5,0.9]);
%添加第一个输出变量到模糊系统中
a=addvar(a,'output','k',[0.4,3.7]);
a=addmf(a,'output',1,'S','zmf',[0.4,0.8]);
a=addmf(a,'output',1,'SM','trimf',[0.8,1.6,1.8]);
a=addmf(a,'output',1,'M','trimf',[1.8,2.0,2.2]);
a=addmf(a,'output',1,'MB','trimf',[2.2,2.4,2.6]);
a=addmf(a,'output',1,'B','smf',[2.6,3.7]);
%添加模糊控制规则
rulelist=[11111;
12111;
13111;
14111;
15211;
21111;
22211;
23211;
24211;
25311;
31311;
32311;
33311;
34311;
35411;
41311;
42311;
43411;
44411;
45411;
51411;
52411;
53511;
54511;
55511;]
%addrule功能:
在FIS中添加规则。
a=addrule(a,rulelist);%先输入模糊规则,然后调用addrule把模糊规则添加到指定的模糊推理器a。
a=setfis(a,'DefuzzMethod','centroid');%解模糊方法为重心法.
writefis(a,'tank');%保存模糊推理器a,到文件fuzypid后缀为.FIS
a=readfis('tank');%readfis功能:
从磁盘中装入FIS。
格式:
fismat=raedfis(filename)
for(i=1:
1:
1000)
time(i)=i;
h=1.0;
e_1=1.5;
ec_1=0;
e=h-h3;
ec=e-e_1;
e_1=e;
ec_1=ec;
k=evalfis([e,ec],a);%完成模糊推理计算。
格式:
output=evalfis(input,fismat)
%模型建立
q1=5.2*k;
h1=h1+(q1-q2)/s;
q2=1.9*sqrt(h1);
h2=h2+(q2-q3)/s;
q3=2.2*sqrt(h2);
h3=h3+(q3-q4)/s;
q4=4.5*abs(sin(5.5*pi*i+0.3));
L1(i)=h1;
L2(i)=h2;
L3(i)=h3;
end
%输出图形
figure
(1);
plotmf(a,'input',1);gridon%绘制出给定变量的隶属度函数。
title('输入变量e的隶属函数')
figure
(2);
plotmf(a,'input',2);gridon
title('输入变量ec的隶属函数')
figure(3);
plotmf(a,'output',1);gridon
title('输出变量k的隶属函数')
figure(4);
plotfis(a);%绘图表示FIS。
格式:
plotfis(fismat)
title('模糊推理系统')
figure(5);
plot(time,L1,'r',time,L2,'g',time,L3,'b');gridon
xlabel('时间t(s)')%标横坐标
ylabel('高度h1,h2,h3(m)')%标纵坐标
title('三容水箱串级相连模湖控制')%标题
五.实验记录与分析
1.实验结果
图1输入变量e的隶属函数
图2输入变量ec的隶属函数
图3输出变量k的隶属函数
图4模糊系统
图5:
h1,h2,h3的变化
其中红色曲线是h3,绿色曲线是h1,蓝色曲线是h2。
2.实验分析
本文通过对中位水箱系统液位偏差和液位偏差的变化率进行模糊化处理,利用控制经验知识建立了两位液位模糊控制规则,再通过反模糊化输出改变调节阀的开度来改变水箱的液位高度,达到用两维模糊控制器的方法来控制水箱系统的液位高度,程序运行结果表明了水箱模糊控制系统获得更好的控制性能。
基本满足控制要求。