主要内容

fistree

连接模糊推理系统网络

描述

使用一个fistree对象表示互连的模糊推理系统的树。

创建

描述

例子

fisTree= Fistree(FIS.连接创建一个相互关联的模糊推理系统对象的网络,设置其金融中间人连接特性。

fisTree= Fistree(___,'disablebructuralchecks',拒绝设置不符合残疾人遗址财产。

属性

全部展开

此属性是只读的。

模糊推理系统,指定为阵列FIS对象。您可以指定任何组合mamfisSugfis.mamfistype2, 和sugfistype2对象。每个模糊推理系统金融中间人数组必须至少有一个输入和一个输出fistree建设。评估一个fistree,每个模糊推理系统必须至少有一条规则。

模糊推理系统之间的连接,指定为一个二维字符串数组。每一行表示两个FIS对象之间的连接。指定连接如下:

  1. 输出到输入连接,[" fromFISName / fromFISOutputName”“toFISName / toFISInputName”).在本例中,输出为“fromFISName”用作输入“toFISName”“fromFISName”“toFISName”必须是不同的。

  2. Input-to-input连接,[" fromFISName / fromFISInputName”“toFISName / toFISInputName”).在这种情况下,输入的输入“fromFISName”“toFISName”使用相同的输入值进行评估。“fromFISName”“toFISName”可以相同,也可以不同。

下图描述了使用两个fis的不同连接类型,fis1, 和fis2

fis1的输入a和b连接在一起,fis1的输出连接到fis2的输入c。

联系[“FIS1 / X”“FIS2 / C”]在输出之间指定Xfis1和输入Cfis2.联系[" fis1 / " " fis1 / b”)在“fis1”的输入“a”和“b”之间指定。在这个图中fistree输入是fis1 /fis2 / d输出是fis2 / y

连接必须满足以下条件:

  1. 一种fistree对象必须至少有一个没有任何输入连接的FIS输入和一个没有任何输出连接的FIS输出。

  2. 一个FIS输入不能有多个输入连接。

  3. 一个FIS输出可以有多个输出连接。

  4. 无法连接相同的FIS的输入和输出。换句话说,您无法在连接的FIS对象之间创建循环。

  5. 两个输入之间无法指定对称连接,[“FIS1 / A”“FIS1 / B”;“FIS1 / B”“FIS1 / A”]不被允许。任何一个[" fis1 / " " fis1 / b”)[“FIS1 / B”“FIS1 / A”]可以指定。

  6. 不允许自输入循环,[" fis1 / " " fis1 / "]不能被指定。

FIS树的输入,指定为字符串数组。输入自动确定使用指定的连接fistree对象。没有传入连接的FIS输入包括在内输入.通过更新连接来更新此属性fistree对象。

FIS树的输出指定为字符串。输出自动确定使用指定的连接fistree对象。没有任何传出连接的FIS输出输出.的初始构造之后,可以更新此属性fistree对象。可以删除现有的输出,也可以添加新的输出。输出不能为空。

用于禁用结构检查、输入和输出的标志,指定为其中之一错误的真的.集不符合残疾人遗址真的当一个FIS在构建后更新时,禁用连接、输入和输出的自动更新fistree对象。禁用结构检查可能会产生意外的故障evalfis.功能。

对象功能

evalfis. 评价模糊推理系统
gettubalablesstings. 从模糊推理系统获取可调调节设置
getTunableValues 从模糊推理系统中获取可调参数的值
塞塞堡价值 指定模糊推理系统的可调参数值

例子

全部收缩

创建Mamdani模糊推理系统和Sugeno模糊推理系统。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis2 = sugfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);

定义两个模糊推理系统之间所需的连接。

con1 = [“fis1 / output1”“FIS2 / INPUT1”];con2 = [“fis1 / input1”“fis1 / input2”];

创建模糊推理系统的树。

Tree = Fistree([FIS1 FIS2],[CON1; CON2])
tree = fistree with properties: FIS: [1x2 FuzzyInferenceSystem] Connections: [2x2 string] Inputs: [2x1 string] Outputs: "fis2/output1" DisableStructuralChecks: 0参数优化见' gettunlessettings '方法。

创建一个fis树。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);fisT = fistree([fis1 fis2],[]);

显示FIS树配置信息。

plotfis(拳头)
FIS名称:FIS1 FIS2连接:[]输入:FIS1 / INPUT1 FIS1 / INPUT2 FIS2 / INPUT1 FIS2 / INPUT2输出:FIS1 / OUTPUT1 FIS2 / OUTPUT1

添加FIS.

添加fis3拳头

fis3 = mamfis('姓名'“fis3”“NumInputs”2,'numoutputs'1);拳头.FIS(终点+ 1)= FIS3;

添加联系fis1fis2, 和fis3

拳头连接= [“fis1 / output1”“fis3 / input1”“fis2 / output1”“fis3 / input2”];

显示更新的FIS树配置。

plotfis(拳头)
FIS名称:fis1 fis2 fis3连接:From To ------------ ----------- fis1/output1 fis3/input1 fis2/output1 fis3/input2 Inputs: fis1/input1 fis1/input2 fis2/input1 fis2/input2 Outputs: fis3/output1

删除FIS

消除fis1拳头

fisT.FIS (1) = [];

显示更新的FIS树配置。

plotfis(拳头)
FIS Names: fis2 fis3 Connections: From To ------------ ----------- fis2/output1 fis3/input2 Inputs: fis2/input1 fis2/input2 fis3/input1 Outputs: fis3/output1

创建fis1fis2, 和fis3,每个有两个输入和一个输出。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);fis3 = mamfis('姓名'“fis3”“NumInputs”2,'numoutputs'1);

在输出1之间创建连接fis1输入1fis3

con1 = [“fis1 / output1”“fis3 / input1”];

在输出1之间创建连接fis2输入2fis3

con2 = [“fis2 / output1”“fis3 / input2”];

在输入2之间建立连接fis1输入1fis2

con3 = [“fis1 / input2”“FIS2 / INPUT1”];

创建FIS树。

[con1;con2;con3];

显示FIS树的输入。

fuzztree.inpuls.
ans =.3x1字符串“fis1 / input1”“fis1 / input2”“fis2 / input2”

评估模糊树。指定输入1的值fis1,输入2fis1,并输入2fis2.的输入2的值fis1也被发送到输入1fis2

if (fuzzTree,[0.8 . 0. 0. 0]);

此示例显示如何添加或删除FIS树输出。

添加输出

创建fis1fis2, 和fis3,每个有两个输入和一个输入。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);fis3 = mamfis('姓名'“fis3”“NumInputs”2,'numoutputs'1);

在输出1之间创建连接fis1输入1fis3

con1 = [“fis1 / output1”“fis3 / input1”];

在输出1之间创建连接fis2输入2fis3

con2 = [“fis2 / output1”“fis3 / input2”];

创建FIS树。

[con1;con2]; [con1;

显示FIS树的输出。默认情况下,唯一的开放式FIS输出(来自fis3)是FIS树的输出。

fuzztree.outputs.
ans = " fis3 / output1”

添加输出fis2输出到树输出列表。

fuzztree.outputs(end + 1)=“fis2 / output1”

显示FIS树的更新输出列表。

fuzztree.outputs.
ans =.2 x1字符串“FIS3 / OUTPUT1”“FIS2 / OUTPUT1”

评估FIS树。结果包含来自的输出fis3fis2

evalfis(fuzzTree,[0.5 0.2 0.8 0.45])
ans =.1×20.1507 0.1579

删除输出

从列表中删除第一个输出。

fuzztree.outputs(1)= [];

显示FIS树的更新输出列表。

fuzztree.outputs.
ans = " fis2 / output1”

再次评估FIS树。结果现在包含仅限的输出fis2

evalfis(fuzzTree,[0.5 0.2 0.8 0.45])
ans = 0.1579

此示例显示了增量FIS树的构造。有关模糊树结构类型的更多信息,请参阅模糊树木

创建模糊系统fis1fis2, 和fis3,每个有两个输入和一个输入。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis1.Inputs(1)。Name =“颜色”;fis1.Inputs(2)。Name =“门”;fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);FIS2.INPUTS(2).name =“权力”;fis3 = mamfis('姓名'“fis3”“NumInputs”2,'numoutputs'1);fis3.Inputs(2)。Name =“自动驾驶仪”;fis3.outputs(1).name =“predition”

在输出1之间创建连接fis1输入1fis2

con1 = [“fis1 / output1”“FIS2 / INPUT1”];

在输出1之间创建连接fis2输入1fis3

con2 = [“fis2 / output1”“fis3 / input1”];

创建FIS树。

inctree = fistree([FIS1 FIS2 FIS3],[CON1; CON2]);

显示FIS树的输入。

incTree。输入
ans =.4x1字符串“FIS1 / Color”“FIS1 / DOORS”“FIS2 / POWER”“FIS3 / AUTOPILOT”

显示FIS树的输出。

inctree.outpuls.
ans = " fis3 / predition”

这个例子展示了级联FIS树的构造。有关模糊树结构类型的更多信息,请参阅模糊树木

创建模糊系统fis1fis2fis3, 和fis4,每个有两个输入和一个输入。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis1.Inputs(1)。Name =“dist_obs”;fis1.Inputs(2)。Name =“angle_obs”;fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);fis2.Inputs(1)。Name =“dist_tar”;FIS2.INPUTS(2).name =“Angle_tar”;fis3 = mamfis('姓名'“fis3”“NumInputs”2,'numoutputs'1);fis4 = mamfis ('姓名'“fis4”“NumInputs”2,'numoutputs'1);fis4.inputs(2).name =“premonding_robot”;fis4.outputs(1).name =“heading_robot”

在输出1之间创建连接fis1输入1fis3

con1 = [“fis1 / output1”“fis3 / input1”];

在输出1之间创建连接fis2输入2fis3

con2 = [“fis2 / output1”“fis3 / input2”];

在输出1之间创建连接fis3输入1fis4

con3 = [“fis3 / output1”“fis4 / input1”];

创建FIS树。

Castree = Fistree([FIS1 FIS2 FIS4 FIS4],[CON1; CON2; CON3]);

显示FIS树的输入。

casTree。输入
ans =.5 x1字符串"fis1/dist_obs" "fis1/angle_obs" "fis2/dist_tar" "fis2/angle_tar" "fis4/preheading_robot"

显示FIS树的输出信息。

castree.outputs.
ans =“fis4 / heading_robot”

这个例子展示了一个聚合的FIS树的构造。有关模糊树结构类型的更多信息,请参阅模糊树木

创建模糊系统fis1fis2, 和fis3,每个有两个输入和一个输入。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis1.Inputs(1)。Name =“dist_obs”;fis1.Inputs(2)。Name =“angle_obs”;fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);fis2.Inputs(1)。Name =“dist_tar”;FIS2.INPUTS(2).name =“Angle_tar”;fis3 = mamfis('姓名'“fis3”“NumInputs”2,'numoutputs'1);fis3.outputs(1).name =“heading_robot”

在输出1之间创建连接fis1输入1fis3

con1 = [“fis1 / output1”“fis3 / input1”];

在输出1之间创建连接fis2输入2fis3

con2 = [“fis2 / output1”“fis3 / input2”];

创建FIS树。

aggTree = fistree([fis1 fis2 fis3],[con1;con2]);

显示FIS树的输入。

aggtree.Inputs.
ans =.4x1字符串"fis1/dist_obs" "fis1/angle_obs" "fis2/dist_tar" "fis2/angle_tar"

显示FIS树的输出信息。

aggTree。输出
ans =“fis3 / heading_robot”

此示例显示了并行FIS树的构造。有关模糊树结构类型的更多信息,请参阅模糊树木

创建模糊系统fis1fis2, 和fis3,每个有两个输入和一个输入。

fis1 = mamfis('姓名'“fis1”“NumInputs”2,'numoutputs'1);fis2 = mamfis('姓名'“fis2”“NumInputs”2,'numoutputs'1);

创建FIS树,这样所有的FIS对象都是并行的;也就是说,没有相互连接,所有的FIS输出都是FIS树的输出。

parTree = fistree([fis1 fis2],[]);

显示FIS树的输入。

parTree。输入
ans =.4x1字符串"fis1/input1" "fis1/input2" "fis2/input1" "fis2/input2"

显示FIS树的输出信息。

parTree。输出
ans =.2 x1字符串“fis1 / output1”“fis2 / output1”

评估FIS树。

output = evalfis(parTree,[0.1 0.3 0.8 0.4]);

通过求解FIS树输出来生成最终输出。

FinalOutput = Sum(输出);
在R2019A介绍