主要内容

fisrule

模糊规则

自从R2018b

描述

使用fisrule相关的对象来表示模糊if - then规则输入隶属函数条件相应输出隶属度函数。的如果模糊规则的一部分先行词,它指定每个输入变量的隶属函数。的然后模糊规则的一部分顺向,它指定每个输出变量的隶属函数。隶属度函数和模糊规则的更多信息,参见模糊逻辑的基础

创建

建立模糊规则对象,使用fisrule函数。使用此功能,您可以创建一个多模糊规则的模糊规则或一个向量。

描述

例子

规则= fisrule创建一个单一的模糊规则与默认的描述“input1 = = mf1 = > output1 = mf1”

例子

规则= fisrule (ruleText)创建一个或多个使用文本描述模糊规则ruleText

例子

规则= fisrule (ruleValues,numInputs)创建一个或多个使用数字规则值模糊规则ruleValues。使用指定的规则输入变量numInputs

输入参数

全部展开

文本规则描述,指定为以下之一:

  • 字符串或字符向量指定一个规则。

    规则=“如果服务很差或腐臭的食物然后技巧是便宜”;
  • 字符串数组,每个元素对应于一个规则。

    ruleList = [“如果服务很差或腐臭的食物然后技巧是便宜”;“如果服务很好,技巧是平均”;“如果服务很好或食物是美味的技巧是慷慨的”];
  • 字符数组的每一行对应一个规则。

    规则1 =如果服务很差或腐臭的食物然后技巧是廉价的;规则2 =如果服务很好然后技巧是平均的;规则3 =如果服务是优秀的或食物是美味的技巧是慷慨的;ruleList = char(规则1、规则2、规则3);

对于每个规则,使用下列规则之一的文本格式。

  • 详细,语言表达在以下格式,使用如果然后关键词:

    “如果<前期>,<顺向>(<重量>)”

    <前期>,指定使用的每个输入变量的隶属函数不是关键字。连接这些条件使用关键词。如果规则不使用一个给定的输入变量,省略先行词。

    <顺向>,指定为每个输出变量使用条件不是关键字,并使用逗号分开的这些条件。的不是关键字不支持Sugeno输出。金宝app如果规则不使用一个给定的输出变量,从随之而来的省略它。

    使用积极的数值指定的重量。

    “如果一个B是A和B不是那么X是X, Y不是Y (1)”
  • 符号表达式,使用下表中的符号相反的关键词。没有的象征如果关键字。

    象征 关键字
    = = (在规则先行词)
    ~ = 不是
    &
    |
    = > 然后
    = (在规则的)

    例如,下面的符号规则相当于前面的详细规则。

    “B & B ~ = = = = > X = X, Y ~ = Y (1)”

当你指定一个规则使用文本描述,fisrule设置描述,重量,连接规则的基础上描述的属性。

描述数字规则,指定为以下之一:

  • 行向量指定一个单一的模糊规则

  • 数组,每一行的ruleValues指定一个规则

对于每一行,数字规则描述+N+ 2列,输入变量的数量和吗N输出变量的数量。每一列包含以下信息:

  • 第一个列指定输入隶属函数指数和对应先行词财产的规则。来表示条件,指定一个负值。如果规则不使用一个给定的输入,设置相应的索引0。对于每个规则,至少一个输入隶属函数索引必须是零。

  • 下一个N列指定输出隶属函数指数和对应顺向财产的规则。来表示条件Mamdani系统,指定一个负值。条件不支持Sugeno输出。金宝app如果规则不使用一个给定的输出,设置相应的索引0。对于每个规则,至少一个输出隶属函数索引必须是零。

  • +N+ 1指定重量和对应的规则重量财产的规则。

  • 最后一列指定前期模糊算子和对应连接财产的规则。

当你指定一个规则使用ruleVlaues,fisrule设置描述财产使用默认变量和成员函数的名字。

数字输入变量的规则,指定为一个正整数。如果您指定使用规则描述ruleValues,您还必须指定输入变量的数量。fisrule解析规则前期值为输入和输出变量的隶属函数指标使用numInputs

属性

全部展开

文本规则描述,指定为字符串或字符向量。规则描述存储为一个象征性的表达无论你如何指定规则。例如,如果您指定以下详细规则使用ruleText:

“如果一个B是A和B不是那么X是X, Y不是Y (1)”

存储规则是:

“B & B ~ = = = = > X = X, Y ~ = Y (1)”

有关详细的和象征性的规则格式的更多信息,见ruleText输入参数。

当你指定一个规则使用ruleVlaues,fisrule设置描述财产使用默认变量和成员函数的名字。在模糊系统使用规则之前,您必须更新描述使用变量和模糊系统使用成员函数名更新函数。

统治前期,指定为一个数值向量的长度,在那里是输入变量的数量。的每个元素先行词包含下列值之一:

  • 正整数——输入隶属函数的指数,这代表了条件

  • 负整数的负输入隶属函数,它代表了不是条件

  • 0——一个不关心条件,这意味着规则不使用相应的输入变量

这个值设置当您创建一个模糊规则使用ruleValues。如果您创建了一个模糊规则使用ruleText在模糊系统使用规则之前,你必须填充先行词财产的使用更新函数。

如果你更新指标规则前期使用点符号,描述财产不更新,以反映更改。更新规则描述,使用更新函数。

规则的,指定为一个数值向量的长度N,在那里N输出变量的数量。的每个元素顺向包含下列值之一。

  • 正整数,输出隶属函数的指数,它代表了条件。

  • 负整数,输出隶属函数的负面,这代表了不是条件。Sugeno系统不支持的规则没有逻辑。金宝app

  • 0——一个不关心条件,这意味着规则不使用相应的输出变量。

这个值设置当您创建一个模糊规则使用ruleValues。如果您创建了一个模糊规则使用ruleText在模糊系统使用规则之前,你必须填充顺向财产的使用更新函数。

如果你更新指标规则顺向使用点符号,描述财产不更新,以反映更改。更新规则描述,使用更新函数。

规定重量,指定为一个积极的数字标量范围内(01]。

如果你更新规则重量使用点符号,重量值描述属性的文本也更新。

规则先行词连接,指定为以下之一:

  • 1-评估规则祖先使用和操作符。

  • 2-评估规则祖先使用或操作符。

如果你更新规则连接使用点符号,前期运营商描述属性的文本也更新。

对象的功能

更新 更新使用模糊推理系统的模糊规则

例子

全部折叠

创建一个默认的模糊规则。

规则= fisrule
规则= fisrule属性:描述:“input1 = = mf1 = > output1 = mf1 (1)”先行词:1顺向:1重量:1连接:1

修改规则属性,使用点符号。例如,指定一个规则的重量0.5

规则。重量= 0.5;

创建一个使用详细的文本描述模糊规则。

规则= fisrule (“如果服务很差,食物是美味的小费是平均(1)”);

或者,您可以使用一个象征性的文本描述指定相同的规则。

规则= fisrule (“服务= =差&食品= = = >美味提示=平均”)
规则= fisrule属性:描述:“服务= =差&食品= =美味= >提示=平均(1)”先行词:[] Consequent: [] Weight: 1 Connection: 1

使用前规则模糊系统,更新规则先行词顺向属性的使用更新函数。

fis = readfis (“蒂珀”);规则=更新(规则,fis)
规则= fisrule属性:描述:“服务= =差&食品= =美味= >提示=平均(1)”先行词:[1 2] Consequent: 2 Weight: 1 Connection: 1

创建一个使用数字描述模糊规则。指定该规则有两个输入变量。

规则= fisrule ([1 2 2 0.5 - 1), 2)
规则= fisrule属性:描述:“input1 = = mf1 & input2 = = mf2 = > output1 = mf2 (0.5)”先行词:[1 2] Consequent: 2 Weight: 0.5000 Connection: 1

使用前规则模糊系统,更新规则描述财产的使用更新函数。

fis = readfis (“蒂珀”);规则=更新(规则,fis)
规则= fisrule属性:描述:“服务= =差&食品= = = >美味提示=平均(0.5)"先行词:[1 2] Consequent: 2 Weight: 0.5000 Connection: 1

创建一个字符串数组的文本规则描述。

rules1 = [“如果服务很差或腐臭的食物然后技巧是廉价的(0.5)”“如果服务很好,食物不是腐臭的技巧是慷慨(0.75)”];

使用这些描述创建一组模糊规则。

fuzzyRules1 = fisrule (rules1)
fuzzyRules1 = 1 x2 fisrule数组属性:描述前期顺向体重连接细节:描述__________________________________________________________ 1”服务贫困| = = = =腐臭的食物= >提示=廉价(0.5)”2"service==excellent & food~=rancid => tip=generous (0.75)"

或者,您可以使用一个数组指定多个规则的数字规则描述。

rules2 = [1 1 1 0.5 - 2;2 1 3 0.75 1];fuzzyRules2 = fisrule (rules2, 2)
fuzzyRules2 = 1 x2 fisrule数组属性:描述前期顺向体重连接细节:描述_________________________________________________ 1”input1 = = mf1 | input2 = = mf1 = > output1 = mf1 (0.5)”2"input1==mf2 & input2~=mf1 => output1=mf3 (0.75)"

版本历史

介绍了R2018b