参考《智能控制》第三章
以模糊洗衣机的设计为例,其控制是一个开环的决策过程,模糊控制按以下步骤进行。
(1)模糊控制器的结构
选用单变量二维模糊控制器。控制器的输入为衣物的污泥和油脂,输出为洗涤时间。
(2)定义输入输出模糊集
X:将污泥分为三个模糊集:SD(污泥少),MD(污泥中),LD(污泥多),取值范围为[0,100]。
Y:将油脂分为三个模糊集:NG(无油脂),MG(油脂中),LG(油脂多),取值范围为[0,100]。
Z:将洗涤时间分为三个模糊集:VS(很短),S(短),M(中等),L(长),VL(很长),取值范围为[0,60]。
(3)定义隶属函数
选用如下隶属函数:
a、污泥隶属度
b、污泥隶属度
c、 输出隶属度
(4)建立模糊控制规则
根据人的操作经验设计模糊规则,模糊规则设计的标准为:“污泥越多,油脂越多,洗涤时间越长”;“污泥适中,油脂适中,洗涤时间适中”;“污泥越少,油脂越少,洗涤时间越短”。
(5)建立模糊控制表
根据模糊规则的设计标准,建立模糊规则表
dxp_fis=newfis('fuzz_wash');
%增加模糊语言变量x
dxp_fis=addvar(dxp_fis,'input','污泥量x',[0,100]);
dxp_fis=addmf(dxp_fis,'input',1,'SD','trimf',[0,0,50]); %增加模糊语言名称,即模糊集合 污泥少
dxp_fis=addmf(dxp_fis,'input',1,'MD','trimf',[0,50,100]); %污泥中
dxp_fis=addmf(dxp_fis,'input',1,'LD','trimf',[50,100,100]); %污泥多
%增加模糊语言变量y
dxp_fis=addvar(dxp_fis,'input','油脂量y',[0,100]);
dxp_fis=addmf(dxp_fis,'input',2,'NG','trimf',[0,0,50]); %无油脂
dxp_fis=addmf(dxp_fis,'input',2,'MG','trimf',[0,50,100]); %油脂中
dxp_fis=addmf(dxp_fis,'input',2,'LG','trimf',[50,100,100]); %油脂多
%模糊输出变量z
dxp_fis=addvar(dxp_fis,'output','洗涤时间z',[0,60]);
dxp_fis=addmf(dxp_fis,'output',1,'VS','trimf',[0,0,10]); %很短
dxp_fis=addmf(dxp_fis,'output',1,'S','trimf',[0,10,25]); %短
dxp_fis=addmf(dxp_fis,'output',1,'M','trimf',[10,25,40]); %中等
dxp_fis=addmf(dxp_fis,'output',1,'L','trimf',[25,40,60]); %长
dxp_fis=addmf(dxp_fis,'output',1,'VL','trimf',[40,60,60]); %很长
%[输入1条件索引 输入2条件索引 输出1条件索引 1 1]
% 最后两个分别表示该条规则的权重和个条件的关系
% 1-AND,2-OR
rule=[
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;
];
dxp_fis = addrule(dxp_fis,rule);
ruleview('洗衣时间'); %动态仿真