赞
踩
(1)确定模糊控制器的结构
控制器的输入为衣物的污泥和油脂
控制器的输出为洗涤时间
(2)定义输入、输出的模糊集
污泥定义为3个模糊集:SD(少)、MD(中)、LD(多)
油脂定义为3个模糊集:NG(少)、MG(中)、LG(多)
洗涤时间定义为5个模糊集:VS(很短)、S(短)、M(中等)、L(长)、VL(很长)
(3)定义隶属函数
污泥和油脂模糊集相同,则可采用相同的隶属函数。
(4)建立模糊控制规则
“污泥越多,油脂越多,洗涤时间越长”
“污泥适中,油脂适中,洗涤时间适中”
“污泥越少,油脂越少,洗涤时间越短”
(5)建立模糊控制集
(6)模糊推理
(7)仿真实例
污泥(油脂)隶属度函数
clear all; close all; N= 2; x = 0:0.1:100; for i = 1:N+1 f(i)=100/N*(i-1); end u = trimf(x,[f(1),f(1),f(2)]); figure(1); plot(x,u); for j = 2:N u=trimf(x,[f(j-1),f(j),f(j+1)]); hold on; plot(x,u); end u = trimf(x,[f(N),f(N+1),f(N+1)]); hold on; plot(x,u); xlabel('x'); ylabel('Degree of membership');
洗涤时间隶属度函数
clear all; close all; z = 0:0.1:60; u = trimf(z,[0,0,10]); figure(1); plot(z,u); u=trimf(z,[0,10,25]); hold on; plot(z,u); u = trimf(z,[10,25,40]); hold on; plot(z,u); u = trimf(z,[25,40,60]); hold on; plot(z,u); u = trimf(z,[40,60,60]); hold on; plot(z,u); xlabel('z'); ylabel('Degree of membership');
洗衣机模糊控制完整代码
。
clear all; close all; a = newfis('fuzz_wash'); a = addvar(a,'input','x',[0,100]); 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]); 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]); 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 = [1 1 1 1 1; 1 2 3 1 1; 1 3 4 1 1; 2 1 2 1 1; 2 2 3 1 1; 2 3 4 1 1; 3 1 3 1 1; 3 2 4 1 1; 3 3 5 1 1]; a = addrule(a,rulelist); showrule(a) a1 = setfis(a,'DefuzzMethod','mom'); writefis(a1,'wash'); a2 = readfis('wash'); figure(1); plotfis(a2); figure(2); plotmf(a,'input',1); figure(3); plotmf(a,'input',2); figure(4); plotmf(a,'output',1); ruleview('wash'); x = 60; y = 70; z = evalfis([x,y],a2
污泥隶属度函数
。
a = addvar(a,'input','x',[0,100]);
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]);
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]);
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]);
模糊规则
。
[1 1 1 1 1]表示If (x is SD) and (y is NG) then (z is VS) (1)
第一个值表示x取值
第二个值表示y取值
第三个值表示z取值
rulelist = [1 1 1 1 1;
1 2 3 1 1;
1 3 4 1 1;
2 1 2 1 1;
2 2 3 1 1;
2 3 4 1 1;
3 1 3 1 1;
3 2 4 1 1;
3 3 5 1 1];
a = addrule(a,rulelist);
showrule(a)
建立模糊推理系统
。
a1 = setfis(a,'DefuzzMethod','mom');
writefis(a1,'wash');
a2 = readfis('wash');
模糊控制的动态仿真
。
ruleview('wash');
x = 60;
y = 70;
z = evalfis([x,y],a2)
ruleview实现模糊控制的动态仿真。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。