如何使用 MATLAB 修复模糊树模型中的错误?

问题描述

我在 MATLAB 中创建了一个模糊树(聚合结构),但我有一个错误,希望得到支持

我的模糊树有 3 个模糊模型(fis1fis2fis3)。 fis1 是小费 1,它有 2 个输入:服务和食物。 fis2 是 tipper2,它有 2 个输入:服务和食物。 fis1fis2输出fis3 的输入。

然而,当我运行它时,错误是:

使用 FuzzyInferenceSystem/addRule 时出错(第 1148 行)。输入无效 规则描述中的隶属函数名称

我认为错误可能是因为我没有为 fis3 的输入创建隶属函数。但是我已经为 fis1fis2输出创建了隶属函数,所以如果我为 fis3 创建隶属函数fis3 的输入将有 2 倍的隶属函数.你能在这个问题上支持我吗?谢谢。

聚合模糊树模型:

enter image description here

% Fuzzy model 1
fis1 = mamfis('Name',"tipper1");
fis1 = addInput(fis1,[0 10],'Name',"service");
fis1 = addMF(fis1,"service","gaussmf",[1.5 0],"poor");
fis1 = addMF(fis1,[1.5 5],"good");
fis1 = addMF(fis1,[1.5 10],"excellent");
fis1 = addInput(fis1,"food");
fis1 = addMF(fis1,"food","trapmf",[-2 0 1 3],"rancid");
fis1 = addMF(fis1,[7 9 10 12],"delicIoUs");
fis1 = addOutput(fis1,[0 30],"tip1");
fis1 = addMF(fis1,"tip1","trimf",[0 5 10],"cheap");
fis1 = addMF(fis1,[10 15 20],"average");
fis1 = addMF(fis1,[20 25 30],"generous");
rulefis1a = "service==poor | food==rancid => tip1=cheap";
rulefis1b = "service==good => tip1=average";
rulefis1c = "service==excellent | food==delicIoUs => tip1=generous";
rulefis1d = [rulefis1a rulefis1b rulefis1c];
fis1b = addRule(fis1,rulefis1d);
 
%Fuzzy model 2
fis2 = mamfis('Name',"tipper2");
fis2 = addInput(fis2,"service");
fis2 = addMF(fis2,"poor");
fis2 = addMF(fis2,"good");
fis2 = addMF(fis2,"excellent");
fis2 = addInput(fis2,"food");
fis2 = addMF(fis2,"rancid");
fis2 = addMF(fis2,"delicIoUs");
fis2 = addOutput(fis2,"tip2");
fis2 = addMF(fis2,"tip2","cheap");
fis2 = addMF(fis2,"average");
fis2 = addMF(fis2,"generous");
rulefis2a = "service==poor | food==rancid => tip2=cheap";
rulefis2b = "service==good => tip2=average";
rulefis2c = "service==excellent | food==delicIoUs => tip2=generous";
rulefis2d = [rulefis2a rulefis2b rulefis2c];
fis2b = addRule(fis2,rulefis2d);

%Fuzzy model 3
fis3 = mamfis('Name','fis3','NumInputs',2,'NumOutputs',1);
fis3.Outputs(1).Name = "final_tip";
con1 = ["tipper1/tip1" "fis3/input1"];
con2 = ["tipper2/tip2" "fis3/input2"];
fis3 = addMF(fis3,"final_tip","rancid");
fis3 = addMF(fis3,"delicIoUs");
rulefis3a = "input1==cheap | input2==average => final_tip=rancid";
rulefis3b = "input1==average => final_tip=rancid";
rulefis3c = "input1==generous | input2==generous => final_tip=delicIoUs";
rulefis3d = [rulefis3a rulefis3b rulefis3c];
fis3b = addRule(fis3,rulefis3d);
 
aggTree = fistree([fis1b fis2b fis3b],[con1;con2]);
output = evalfis(aggTree,[0.2 0.25 0.3 0.2]);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)