洗衣机模糊控制建模(共10页).docx
精选优质文档-倾情为你奉上智能控制课程作业模糊控制理论实验报告题目 洗衣机系统模糊控制建模与仿真班级 姓名 学号 2014年3月13日一 实验目的通过设计洗衣机洗涤时间的模糊控制系统,理解模糊控制的基本原理。掌握模糊控制系统MATLAB建模与仿真的方法。二 实验原理洗衣机洗涤时间的模糊控制是一个开环模糊决策过程,其基本原理框图如图1-1所示。它的核心部分是模糊控制器,模糊控制器的控制律由计算机程序来实现。 图1-1 系统原理框图系统选用两输入单输出的模糊控制器。控制器的输入为衣物的污泥量x和油脂量y,输出为洗涤时间z。将污泥分为3个模糊集:SD(污泥少),MD(污泥中),LD(污泥多);将油脂分为3个模糊集:NG(油脂少),MG(油脂中),LG(油脂多);将洗涤时间分为5个模糊集:VS(很短),S(短),M(中等),L(长),VL很长。首先,定义输入x,y变量,输出z变量的隶属函数。根据“污泥越多,油脂越多,洗涤时间越长”;“污泥适中,油脂适中,洗涤时间适中”;“污泥越少,油脂越少,洗涤时间越短”的规律建立洗衣机模糊规则表。然后,根据模糊规则进行模糊推理并得到洗涤时间的模糊集合。最终,利用重心法对模糊系统反模糊化,将洗涤时间的推理结果转化成精确值z输出。三 实验内容 利用MATLAB软件实现上述洗衣机系统模糊控制的建模与仿真。1. 建立x,y,z的隶属函数洗衣机系统变量x,y,z的隶属函数分段表达式,如式1-1所示。 在MATLAB中,定义本系统为一个Mamdani(普通)型模糊控制系统,命名为a。根据式1-1,分段建立系统a的x,y,z变量隶属函数,如图1-2所示。图1-2 x,y,z隶属函数2. 编辑控制规则在生成系统a的基础上,在rulelist(规则表)矩阵中编辑系统a的模糊控制规则。并利用命令showrule观察规则库,如下:1. If (x is SD) and (y is NG) then (z is VS) (1)2. If (x is MD) and (y is NG) then (z is M) (1) 3. If (x is LD) and (y is NG) then (z is L) (1) 4. If (x is SD) and (y is MG) then (z is S) (1) 5. If (x is MD) and (y is MG) then (z is M) (1) 6. If (x is LD) and (y is MG) then (z is L) (1) 7. If (x is SD) and (y is LG) then (z is M) (1) 8. If (x is MD) and (y is LG) then (z is L) (1) 9. If (x is LD) and (y is LG) then (z is VL) (1)3. 反模糊化输出在生成了模糊控制规则库的基础上,用重心法(式(1-2))对系统a反模糊化处理。利用函数setfis(a,'DefuzzMethod','centroid')进行反模糊化(属性centroid代表重心法,属性mom为最大隶属度法),然后,调用plotfis(a)函数输出a的模糊控制结构特性,如图1-3所示。图1-3 模糊控制系统结构特性取x=50,y=50,模糊处理结果为z=25,利用ruleview实现模糊控制的动态仿真,如图1-4所示 图1-4 动态仿真模糊系统4. MATLAB源程序%Fuzzy Control for washer clear 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 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); %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);rulelist=1 1 1 1 1; %编辑模糊规则 2 1 3 1 1; 3 1 4 1 1; 1 2 2 1 1; 2 2 3 1 1; 3 2 4 1 1; 1 3 3 1 1; 2 3 4 1 1; 3 3 5 1 1; a=addrule(a,rulelist);showrule(a) %Show fuzzy rule basea1=setfis(a,'DefuzzMethod','centroid'); %Defuzzy 重心法writefis(a1,'wash'); %Save to fuzzy file "wash.fis"a2=readfis('wash');plotfis(a2);figure(2);subplot(3,1,1); plotmf(a,'input',1);subplot(3,1,2);plotmf(a,'input',2);subplot(3,1,3)plotmf(a,'output',1);ruleview('wash'); %Dynamic Simulationx=40;y=60;z=evalfis(x,y,a2) %Using fuzzy inference四 结论基于重心法的模糊控制系统,对于不同输入变量,可得到恰当的输出结果。理论上讲,与最大隶属度法相比,重心法可得到更平滑的输出推理控制。因此,不同的反模糊化方法对完全相同的系统和输入或许得到的不同的输出值。专心-专注-专业