模拟控制器的设计实例洗衣机的模糊控制.doc
模拟控制器的设计实例洗衣机的模糊控制传统的洗衣机都是人们用肉眼观看后,根据人的经历来调整洗衣时间与用水量,而模糊控制就是以人对被控对象的控制经历为依据而设计的控制器,这样就能实现控制器模拟人的思维方式来控制洗衣机。以模糊洗衣机的设计为例其控制是一个开环的决策过程,模糊控制按以下步骤进展。1.模糊控制器的构造选用单变量二维模糊控制器。控制器的输入为衣物的污泥与油脂,输出为洗涤时间。2.定义输入、输出模糊集将污泥分为3个模糊集:SD(污泥少),MD污泥中,LD污泥多;取值范围为0,100。3.定义隶属函数选用如下隶属函数采用三角形隶属函数可实现污泥的模糊化。Matlab实现污泥隶属度函数的设计,其仿真程序为0001.mClose all; N=2;x=0:0.1:100;for i=1:N+1f(i)=100/N*(i-1);endu=trimf(x,f(1),f(1),f(2);figure1;plot(x,u);for j=2:Nu=trimf(x,f(j-1),f(j),f(j+1);hold on;plot(x,u);endu=trimf(x,f(N),f(N+1),f(N+1);hold on;plot(x,u);xlabel(x);ylabel(Degree of membership);污泥程序仿真结果:将油脂分为三个模糊集:NG无油脂MG油脂中LG(油脂多),取值范围为0,100选用如下隶属度函数采用三角形隶属函数实现油脂的模糊化。Matlab实现油脂隶属度函数的设计,其仿真程序为0002.Close all; N=2;x=0:0.1:100;for i=1:N+1f(i)=100/N*(i-1);endu=trimf(y,f(1),f(1),f(2);figure1;plot(y,u);for j=2:Nu=trimf(y,f(j-1),f(j),f(j+1);hold on;plot(y,u);endu=trimf(y,f(N),f(N+1),f(N+1);hold on;plot(y,u);xlabel(y);ylabel(Degree of membership);油脂程序仿真结果:将洗涤时间分为五个模糊集:VS(很短)S短M中等L(很长)取值范围为0,60选用如下隶属函数采用三角形隶属函数实现洗涤时间的模糊化,其Matlab仿真程序如下: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);洗涤时间仿真程序结果:4.建立模糊控制规那么根据人的操作经历设计模糊规那么,模糊规那么设计的标准为:“污泥越多,油脂越多,洗涤时间越长;“污泥适中,油脂适中,洗涤时间适中;“污泥越少,油脂越少,洗涤时将越短。5.建立模糊控制表根据模糊规那么设计标准,建立模糊规那么表模糊洗衣机的洗涤规那么洗 涤 时 间 z污 泥 xNGMGLG油脂ySDVS*MLMDSMLLDMLVL第 * 条规那么为:“IF衣物污泥少且没有油脂THEN洗涤时间很短。模糊推理:分以下几步进展1规那么匹配:假定当前传感器测得的信息 污泥=60,油脂=70,分别代入所属的隶属函数中,求隶属度为通过上述4种隶属度,可得到4条匹配的模糊规那么模糊推理结果洗 涤 时 间 z污 泥 xNGMG(3/5)LG(2/5)油脂ySD000MD(4/5)0LG(1/5)02规那么触发由表3-2可知,被触发的规那么有4条,即Rule 1:IF y is MD and x is MG THEN z is MRule 2:IF y is MD and x is LG THEN z is LRule 3:IF y is LD and x is MG THEN z is LRule 4:IF y is LD and x is LG THEN z is VL3规那么前提推理在同一条规那么内,前提之间通过“与的关系得到规那么结论。前提的可信度之间通过取小运算,得到每一条规那么总前提的可信度为规那么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由此得到洗衣机规那么前提可信度表,即规那么强度表规那么前提可信度洗 涤 时 间 z污 泥 xNGMG(3/5)LG(2/5)油脂ySD000MD(4/5)03/52/5LD(1/5)01/51/54将上述两个表进展“与运算得到每条规那么总的可信度输出规那么总的可信度洗 涤 时 间 z污 泥 xSGMG(3/5)LG(2/5)油脂yND000MD(4/5)0min()min()LD(1/5)0min()min()5模糊系统的输出模糊系统总的输出为各条规那么可信度推理结果的并集,即 =11可见,有3条规那么被触发。6反模糊化模糊系统总的输出实际上是3个规那么推理结果的并集,需要进展反模糊化才能得到更准确的推理结果。下面以最大平均法为例,进展反模糊化。洗衣机的模糊推理过程如图3-4与图3-5所示。由图可知,洗涤时间隶属度最大值为。将代入洗涤时间隶属度函数中的,得到规那么前提隶属度。与规那么结论隶属度的交点,即得到采用最大平均值法,可得准确输出为即所需要的洗涤时间为25分钟。4/5MDMG(a)规那么一MMDLGLGLDLVL(b)规那么二(c)规那么三100x100y100x100x060100y100yzz60z40201010000000004/53/53/52/52/51/51/52/5洗衣机的3个规那么被触发仿真实例采用Matlab中模糊控制工具箱等的模糊命令设计洗衣机模糊控制系统。采用本节隶属函数按上述步骤设计。取,反模糊化采用重心法,模糊推理结果为。利用模糊命令ruleview可实现模糊控制的动态仿真洗衣机模糊控制系统仿真程序如下:close all:a=newfis(fuzz-wash);a=addvar(a,input,x,0,100);%Fuzzy Staina=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);%Fuzzy Axungea=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);%Fuzzy Timea=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);rule list=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) % showfuzzyrule baseal=setfis(a,Defuzz Method,mom);% Defuzzywritefis(al,wash); % Save to fuzzy file “washfisa2=readfis(wash);figure(1);plotfis(a2);figure(2);plotmf(a,intput,1);figure(3);plotmf(a,intput,2);figure(4);plotmf(a,output,1);ruleview(wash); % Dynamic Simulationx=60;y=70;z=evalfis(x,y,a2) % Using fuzzy inference采用本节隶属函数按上述步骤设计取,反模糊化采用重心法,模糊推理结果为。利用模糊命令ruleview可实现模糊控制的动态仿真10LMVL3/52/51/5019314060z洗衣机的组合输出及反模糊化图3-6 动态仿真模糊系统通过上述内容,得出理论数值与仿真数值非常接近,所以设计的是符合理论与实际的。第 11 页