1、什么是模糊、模糊性和随机性的区别?
【答:】
2、传统反馈控制系统的模型
【答:】
传统反馈控制系统由三部分组成:
系统框图如下:
3、设计水位的模糊控制器。
设有一贮水容器,具有可变的水位,另有一调节阀门可以向内注水和向外抽水,试设计一个模糊控制器,并通过调节阀将水位稳定在固定点(设为o点)附近。
“若水位高于o点,则排水;差值越大,排水越快。”
“若水位低于o点,则向内注水;差值越大,注水越快。”
题目要求:①具体要求:要求写出具体步骤和过程并编程实现。
②用模糊工具箱设计此水箱的模糊控制器,每一步的结果都要求编号并截图显示、说明,截图除每一步的结果图外,还有模糊控制器模型设计图、模糊控制变量设计图,surface图。
【答:】
1、
观测量是水位对于o点的偏差e,它可以分为五级:负大(NB)、负小(NS)、零(O)、正小(PS)、正大(PB)。并将误差分为7档,即7个等级并以-3,-2,-1,0,+1,+2,+3来表示之,它们是将水位变化范围适当划分而得。此处论域:U = { -3,-2,-1,0,+1,+2,+3 },由此得到水位误差划分表(隶属度表示 ):
|
-3 |
-2 |
-1 |
0 |
+1 |
+2 |
+3 |
PBe |
0 |
0 |
0 |
0 |
0 |
0.5 |
1 |
PSe |
0 |
0 |
0 |
0 |
1 |
0.5 |
0 |
Oe |
0 |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
NSe |
0 |
0.5 |
1 |
0 |
0 |
0 |
0 |
NBe |
1 |
0.5 |
0 |
0 |
0 |
0 |
0 |
控制量是阀门转盘的角度变化u,逆时针旋转为正(注水),顺时针旋转为负(排水)。 设阀门角度变化分为9档。此处论域为:V = { -4,-3,-2,-1,0,+1,+2,+3,+4 },正为注水,负为排水,阀门角度变化划分表(隶属度表示):
|
-4 |
-3 |
-2 |
-1 |
0 |
+1 |
+2 |
+3 |
+4 |
PBu |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0.5 |
1 |
PSu |
0 |
0 |
0 |
0 |
0 |
0.5 |
1 |
0.5 |
0 |
Ou |
0 |
0 |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
0 |
NSu |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
0 |
0 |
0 |
NBu |
1 |
0.5 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
按照人的控制经验,给出下列控制规则:
“若e负大,则u正大”;if e=NB then u=PB
“若e负小,则u正小” if e=NS then u=PS
“若e为0,则u为0” if e=0 then u=0
“若e正小,则u负小” if e=PS then u=NS
“若e正大,则u负大” ife=PB then u=NB
If |
NBe |
NSe |
Oe |
PSe |
PBe |
Then |
PBu |
PSu |
Ou |
NSu |
NBu |
语言控制规则是一个多级条件语句,它可以表示为U×V的一个模糊子集,即模糊关系Ψ: Ψ = ( NBe×PBu )∪( NSe×PSu )∪( Oe×Ou )∪( PSe×NSu )∪( PBe×NBu )
任意给出一个观测结果 X 作为输入,则把 Ψ 作为模糊控制器,则得输出(并称之模糊响应):
Y =X ο Ψ
matlab实现:
%水位模糊控制算法
clear all;
close all;
a = newfis('fuzzy tank');
a = addvar(a,'input','e',[-3,3]);
a = addmf(a,'input',1,'NB','zmf',[-3,-1]);
a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);
a = addmf(a,'input',1,'PB','smf',[1,3]);
a = addvar(a,'output','u',[-4,4]);
a = addmf(a,'output',1,'NB','zmf',[-4,-2]);
a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);
a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);
a =addmf(a,'output',1,'PS','trimf',[0,2,4]);
a = addmf(a,'output',1,'PB','smf',[2,4]);
%建立模糊规则
rulelist=[1 5 1 1;
2 4 1 1;
3 3 1 1;
4 2 1 1;
5 1 1 1];
a = addrule(a,rulelist);
%设置反模糊化算法
a1 = setfis(a,'DefuzzMethod','mom');
writefis(a1,'tank');
a2 = readfis('tank');
figure(1);
plotfis(a2);
figure(2);
plotmf(a,'input',1);
figure(3);
plotmf(a,'output',1);
showrule(a);
ruleview('tank');
for i=1:1:7
e(i)=i-4;
Ulist(i)=evalfis([e(i)],a2);
end
Ulist = round(Ulist); %对决策结果四舍五入取整
disp('------------------------------------------------------');
disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
disp('------------------------------------------------------');
fprintf('| a |');
fprintf(' %d |',e);
fprintf('\n');
fprintf('| u |');
fprintf(' %d |',Ulist);
fprintf('\n');
2、
①打开模糊推理系统Fuzzy,设置输入输出以及系统名
②设置输入输出论域,编辑隶属度函数
③启动模糊规则编辑器,添加规则
④启动规则观察器
⑤模糊推理输入输出曲面视图,surface图