模糊控制设计器
定义
模糊规则的形式为:if x is A then y is B。其中A和B为由论域X和Y上的模糊集合定义的语言值。“x is A”称为前提,“y is B”称为结论。
以上模糊规则可以简写为A → B。本质上模糊规则是定义在X × Y上的二元模糊关系R。A → B有两种解释,一种是A耦合(coupled with)B,另一种是A导致(entails)B。基于这两种解释和不同的tnorm, tconorm算子,模糊规则可以有多种合法的计算公式。
代码
%模糊控制器设计
a=newfis(‘fuzzf’); %创建新的模糊推理系统
%输入1
f1=1;
a=addvar(a,‘input’,‘e’,[-3f1,3f1]);
%添加 e 的模糊语言变量
a=addmf(a,‘input’,1,‘NB’,‘zmf’,[-3f1,-1f1]);
%添加 e 的模糊语言变量的隶属度函数(z型)
a=addmf(a,‘input’,1,‘NM’,‘trimf’,[-3f1,-2f1,0]);
%隶属度函数为三角形
a=addmf(a,‘input’,1,‘NS’,‘trimf’,[-3f1,-1f1,1f1]);
a=addmf(a,‘input’,1,‘Z’,‘trimf’,[-2f1,0,2f1]);
a=addmf(a,‘input’,1,‘PS’,‘trimf’,[-1f1,1f1,3f1]);
a=addmf(a,‘input’,1,‘PM’,‘trimf’,[0,2f1,3f1]);
a=addmf(a,‘input’,1,‘PB’,‘smf’,[1f1,3f1]);
%输出
f3=1.5;
a=addvar(a,‘output’,‘u’,[-3f3,3f3]);
%添加 u 的模糊语言变量
a=addmf(a,‘output’,1,‘NB’,‘zmf’,[-3f3,-1f3]);
a=addmf(a,‘output’,1,‘NM’,‘trimf’,[-3f3,-2f3,0]);
a=addmf(a,‘output’,1,‘NS’,‘trimf’,[-3f3,-1f3,1f3]);
a=addmf(a,‘output’,1,‘Z’,‘trimf’,[-2f3,0,2f3]);
a=addmf(a,‘output’,1,‘PS’,‘trimf’,[-1f3,1f3,3f3]);
a=addmf(a,‘output’,1,‘PM’,‘trimf’,[0,2f3,3f3]);
a=addmf(a,‘output’,1,‘PB’,‘smf’,[1f3,3f3]);
%规则库
rulelist=[1 1 1 1 1; %编辑模糊规则,后俩个数分别是规则权重和AND OR选项
1 2 1 1 1;
1 3 1 1 1;
1 4 2 1 1;
1 5 2 1 1;
1 6 3 1 1;
1 7 4 1 1;
2 1 1 1 1;
2 2 2 1 1;
2 3 2 1 1;
2 4 2 1 1;
2 5 3 1 1;
2 6 4 1 1;
2 7 5 1 1;
利用MATLAB提供的模糊逻辑工具箱函数
创建一个新的模糊推理系统(模糊控制器)
输入输出的量化等级都为7级
e、 ec、 u ={-3,-2,-1,0, 1,2, 3}各取7个语言值,可取:模糊子集:小、零、正小、正中、正大e、ec的论域=[-3, 3]u的论域=[-4. 5, 4. 5]隶属度函数任意确定。
运行结果
新增规则:
3 1 1 1 1
3 2 2 1 1
3 3 3 1 1
3 4 3 1 1
3 5 4 1 1
3 6 5 1 1
3 7 6 1 1
4 1 1 1 1
4 2 3 1 1
4 3 3 1 1
4 4 3 1 1
4 5 4 1 1
4 6 5 1 1
4 7 6 1 1];