模拟控制器的设计实例洗衣机的模糊控制Word文件下载.docx
《模拟控制器的设计实例洗衣机的模糊控制Word文件下载.docx》由会员分享,可在线阅读,更多相关《模拟控制器的设计实例洗衣机的模糊控制Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
N+1
f(i)=100/N*(i-1);
end
u=trimf(x,[f
(1),f
(1),f
(2)]);
figure
(1);
plot(x,u);
forj=2:
N
u=trimf(x,[f(j-1),f(j),f(j+1)]);
holdon;
u=trimf(x,[f(N),f(N+1),f(N+1)]);
xlabel(‘x’);
ylabel(‘Degreeofmembership’);
污泥程序仿真结果:
将油脂分为三个模糊集:
NG(无油脂)MG(油脂中)LG(油脂多),取值范围为[0,100]
选用如下隶属度函数
采用三角形隶属函数实现油脂的模糊化。
Matlab实现油脂隶属度函数的设计,其仿真程序为0002.
u=trimf(y,[f
(1),f
(1),f
(2)]);
plot(y,u);
u=trimf(y,[f(j-1),f(j),f(j+1)]);
u=trimf(y,[f(N),f(N+1),f(N+1)]);
xlabel(‘y’);
油脂程序仿真结果:
将洗涤时间分为五个模糊集:
VS(很短)S(短)M(中等)L(很长)取值范围为[0,60]
采用三角形隶属函数实现洗涤时间的模糊化,其Matlab仿真程序如下:
Z=0:
60;
U=trimf(z,[0,0,10]);
Figure
(1);
Plot(z,u);
U=trimf(z,[0,10,25]);
plot(z,u);
U=trimf(z,[10,25,40]);
U=trimf(z,[25,40,60]);
U=trimf(z,[40,60,60]);
xlabel(‘z’)
ylabel(“Degreeofmembership”);
洗涤时间仿真程序结果:
4.建立模糊控制规则
根据人的操作经验设计模糊规则,模糊规则设计的标准为:
“污泥越多,油脂越多,洗涤时间越长”;
“污泥适中,油脂适中,洗涤时间适中”;
“污泥越少,油脂越少,洗涤时将越短”。
5.建立模糊控制表
根据模糊规则设计标准,建立模糊规则表
模糊洗衣机的洗涤规则
洗涤时间z
污泥x
NG
MG
LG
油
脂
y
SD
VS*
M
L
MD
S
LD
VL
第*条规则为:
“IF衣物污泥少且没有油脂THEN洗涤时间很短”。
模糊推理:
分以下几步进行
(1)规则匹配:
假定当前传感器测得的信息
(污泥)=60,
(油脂)=70,分别代入所属的隶属函数中,求隶属度为
,
通过上述4种隶属度,可得到4条匹配的模糊规则
模糊推理结果
洗涤时间z
MG(3/5)
LG(2/5)
MD(4/5)
LG(1/5)
(2)规则触发
由表3-2可知,被触发的规则有4条,即
Rule1:
IFyisMDandxisMGTHENzisM
Rule2:
IFyisMDandxisLGTHENzisL
Rule3:
IFyisLDandxisMGTHENzisL
Rule4:
IFyisLDandxisLGTHENzisVL
(3)规则前提推理
在同一条规则内,前提之间通过“与”的关系得到规则结论。
前提的可信度之间通过取小运算,得到每一条规则总前提的可信度为
规则1前提的可信度为:
min(4/5,3/5)=3/5
规则2前提的可信度为:
min(4/5,2/5)=2/5
规则3前提的可信度为:
min(1/5,3/5)=1/5
规则4前提的可信度为:
min(1/5,2/5)=1/5
由此得到洗衣机规则前提可信度表,即规则强度表
规则前提可信度
3/5
2/5
LD(1/5)
1/5
(4)将上述两个表进行“与”运算
得到每条规则总的可信度输出
规则总的可信度
SG
ND
min(
)
(5)模糊系统的输出
模糊系统总的输出为各条规则可信度推理结果的并集,即
=
[11]
可见,有3条规则被触发。
(6)反模糊化
模糊系统总的输出
实际上是3个规则推理结果的并集,需要进行反模糊化才能得到更精确的推理结果。
下面以最大平均法为例,进行反模糊化。
洗衣机的模糊推理过程如图3-4和图3-5所示。
由图可知,洗涤时间隶属度最大值为
。
将
代入洗涤时间隶属度函数中的
,得到规则前提隶属度
与规则结论隶属度
的交点,即
得到
采用最大平均值法,可得精确输出为
即所需要的洗涤时间为25分钟。
洗衣机的3个规则被触发
仿真实例采用Matlab中模糊控制工具箱等的模糊命令设计洗衣机模糊控制系统。
采用本节隶属函数按上述步骤设计。
取
,反模糊化采用重心法,模糊推理结果为33.6853。
利用模糊命令ruleview可实现模糊控制的动态仿真
洗衣机模糊控制系统仿真程序如下:
closeall:
a=newfis(‘fuzz-wash’);
a=addvar(a,‘input’,‘x’,[0,100]);
%FuzzyStain
a=addmf(a,‘input’,1,‘SD’,‘trimf’,[0,0,50]);
a=addmf(a,‘input’,1,‘MD’,‘trimf’,[0,50,100]);
a=addmf(a,‘input’,1,‘LD’,‘trimf’,[50,100,100]);
a=addvar(a,‘input’,‘y’,[0,100]);
%FuzzyAxunge
a=addmf(a,‘input’,2,‘NG’,‘trimf’,[0,0,50]);
a=addmf(a,‘input’,2,‘MG’,‘trimf’,[0,50,100]);
a=addmf(a,‘input’,2,‘LG’,‘trimf’,[50,100,100]);
a=addvar(a,‘output’,‘z’,[0,60]);
%FuzzyTime
a=addmf(a,‘output’,1,‘VS’,‘trimf’,[0,0,10]);
a=addmf(a,‘output’,1,‘S’,‘trimf’,[0,10,25]);
a=addmf(a,‘output’,1,‘M’,‘trimf’,[10,25,40]);
a=addmf(a,‘output’,1,‘L’,‘trimf’,[25,40,60]);
a=addmf(a,‘output’,1,‘VL’,‘trimf’,[40,60,60]);
rulelist=[11111:
12311:
13411:
21211:
22311:
23411:
31311:
32411:
33511];
a=addrule(a,rulelist);
showrule(a)%showfuzzy
rulebaseal=setfis(a,‘DefuzzMethod’,‘mom’);
%Defuzzy
writefis(al,‘wash’);
%Savetofuzzyfile“washfis”a2=readfis(‘wash’);
plotfis(a2);
figure
(2);
plotmf(a,‘intput’,1);
figure(3);
plotmf(a,‘intput’,2);
figure(4);
plotmf(a,‘output’,1);
ruleview(‘wash’);
%DynamicSimulation
x=60;
y=70;
z=evalfis([x,y],a2)%Usingfuzzyinference
采用本节隶属函数按上述步骤设计
洗衣机的组合输出及反模糊化
图3-6动态仿真模糊系统
通过上述内容,得出理论数值与仿真数值非常接近,所以设计的是符合理论和实际的。