在命令行构建模糊系统

您可以在MATLAB®命令行上构建一个模糊推理系统(FIS)。这种方法是交互式设计您的FIS使用的一种替代方法模糊逻辑设计.

这个例子向您展示了如何创建Mamdani模糊推理系统。在创建Mamdani FIS时,所使用的方法也适用于创建Sugeno系统。

命令行提示问题

为了演示用于创建和查看模糊推理系统的命令行功能,本示例使用了提示器FIS。

fis=readfis(“tipper.fis”);

该命令返回mamfis对象,该对象包含模糊系统的属性。对于Sugeno系统,此命令返回asugfis对象。

您可以使用点表示法访问FIS属性。例如,查看模糊系统的输入。

财政投入
ans=1x2 fisvar数组及其属性:名称范围成员身份函数详细信息:名称范围成员身份函数(名称范围成员身份函数)(名称范围成员身份函数)(名称范围成员身份函数)(名称范围成员身份函数)(名称范围成员身份函数)(名称范围成员身份函数)(名称范围成员身份函数

要设置模糊系统的属性,请使用点符号。例如,设置FIS的名称。

财政司司长姓名=“小费”

FIS对象

您可以使用mamfissugfis对象。这些对象包含所有模糊推理系统信息,包括变量名称、隶属函数定义和模糊推理方法。每个FIS本身就是对象的层次结构。以下对象在模糊系统中使用:

  • fisvar对象同时表示输入和输出变量。

  • fismf对象表示每个输入和输出变量中的成员函数。

  • 费斯勒对象表示将输入映射到输出的模糊规则。

通过直接列出FIS的属性来查看它的所有信息。

金融机构
fis=MAMFI,属性:名称:“小费”和方法:“最小”或方法:“最大”含义方法:“最小”聚合方法:“最大”解模糊方法:“质心”输入:[1x2 fisvar]输出:[1x1 fisvar]规则:[1x3 fisrule]禁用结构检查:0有关参数优化,请参阅“getTunableSettings”方法。

可以使用点表示法查看FIS对象中的对象属性。例如,查看fisvar对象的第一个输入变量。

财政投入(1)
ans = fisvar with properties: Name: "service" Range: [0 10] MembershipFunctions: [1x3 fismf]

另外,查看此变量的成员关系函数。

fis.输入(1).成员资格函数
ans=1x3 fismf数组,带属性:类型参数名称详细信息:名称类型参数\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

系统显示功能

要从命令行获得模糊系统的高级视图,请使用plotfis,plotmf,根瑟夫功能。plotfis将整个系统显示为框图,如图所示模糊逻辑设计.

plotfis (fis)

这个plotmf函数绘制与给定变量关联的所有成员函数。例如,查看第一个输入变量的成员关系函数。

plotmf (fis,“输入”, 1)

类似地,要查看第一个输出的成员函数,请键入:

plotmf (fis,“输出”, 1)

plotmf不支持查看Suge万博1manbetxno系统的输出成员函数。

查看模糊系统的规则,输入:

fis规则
ans = 1 x3 fisrule数组属性:前期顺向体重连接细节描述:描述  __________________________________________________________ 1”服务= =差= = |食品酸败= >提示=廉价(1)”2 "服务==好=>小费=平均(1)"“服务==出色的|食物==美味的>小费=慷慨的(1)”

这个根瑟夫函数绘制任意一个或两个输入变量的FIS输出。

gensurf (fis)

建立模糊推理系统

作为使用模糊逻辑设计应用程序,您可以完全从命令行构造FIS。

首先,创建一个Mamdani FIS,指定它的名称。

fis = mamfis (“姓名”,“翻斗车”);

为使用的服务质量添加第一个输入变量附加输入.

fis=附加输入(fis,[0 10],“姓名”,“服务”);

为每个服务质量级别添加成员函数addMF。在这种情况下,请使用高斯隶属函数。有关高斯隶属函数属性的更多信息,请参阅gaussmf.

fis = addMF (fis,“服务”,“gaussmf”1.5 [0],“姓名”,“穷”);fis = addMF (fis,“服务”,“gaussmf”(1.5 - 5),“姓名”,“好”);fis = addMF (fis,“服务”,“gaussmf”1.5 [10],“姓名”,“好极了”);

添加食品质量的第二个输入变量,并添加两个梯形隶属函数。有关梯形隶属函数的信息,请参阅trapmf.

fis=附加输入(fis,[0 10],“姓名”,“食物”);fis = addMF (fis,“食物”,“trapmf”,[-2 0 1 3],“姓名”,“讨厌的”);fis = addMF (fis,“食物”,“trapmf”,[7 9 10 12],“姓名”,“美味”);

为提示添加输出变量,并添加三个三角成员关系函数。有关三角隶属函数的更多信息,请参见trimf.

fis = addOutput(fis,[0 30],“姓名”,“提示”);fis = addMF (fis,“提示”,“trimf”, [0 5 10],“姓名”,“便宜”);fis = addMF (fis,“提示”,“trimf”(10 15 20),“姓名”,“平均”);fis = addMF (fis,“提示”,“trimf”(20 25 30),“姓名”,“慷慨”);

为FIS指定以下三个规则作为数字数组:

  1. 如果(服务差)或(食物腐臭),那么(小费便宜)。

  2. 如果(服务好),那么(小费一般)。

  3. 如果(服务很好)或(食物很美味),那么(小费就很多了)。

数组的每一行包含以下格式的一条规则。

  • 第1列-第一个输入的成员函数的索引

  • 列2 -第二次输入的成员函数的索引

  • 第3列-输出成员函数的索引

  • 第4栏-规则权重(来自01.)

  • 第5列-模糊算子(1.为,2.或)

对于隶属函数索引,请使用负值指示NOT条件。有关模糊规则规范的更多信息,请参阅addRule.

规则列表= [1 1 1 1 2;2 0 2 1 1;3 2 3 1 2];

在FIS中添加规则。

ruleList fis = addRule (fis);

或者,您可以使用点符号和符号的组合创建模糊推理系统fisvar,fismf,费斯勒对象。对于大多数应用程序,此方法不是一种好的做法。但是,当应用程序在构造和修改FIS时需要更大的灵活性时,可以使用此方法。

创建模糊推理系统。

fis = mamfis (“姓名”,“小费工”);

添加并配置第一个输入变量。在这种情况下,创建一个默认值fisvar对象,并使用点表示法指定其属性。

财务输入(1)=财务变量;财务输入(1).名称=“服务”;fis.Inputs(1)。范围= [0 10];

定义第一个输入变量的成员函数。对于每个MF,创建一个fismf对象,并使用点表示法设置属性。

fis.Inputs (1) .MembershipFunctions (1) = fismf;fis.Inputs (1) .MembershipFunctions(1)。Name =“穷”;fis.输入(1).成员资格函数(1).类型=“gaussmf”;fis.Inputs (1) .MembershipFunctions(1)。参数= [1.5 0];fis.Inputs (1) .MembershipFunctions (2) = fismf;.MembershipFunctions fis.Inputs(1)(2)。Name =“好”;.MembershipFunctions fis.Inputs(1)(2)。类型=“gaussmf”;.MembershipFunctions fis.Inputs(1)(2)。参数= [1.5 5];fis.Inputs (1) .MembershipFunctions (3) = fismf;fis.Inputs (1) .MembershipFunctions(3)。Name =“好极了”;fis.Inputs (1) .MembershipFunctions(3)。类型=“gaussmf”; fis.输入(1).成员资格函数(3).参数=[1.5 10];

添加并配置第二个输入变量。对于此变量,请在创建变量时指定名称和范围fisvar对象。

input (2) = fisvar([0 10],“姓名”,“食物”);

为第二个输入指定成员函数。属性时,为每个MF指定名称、类型和参数fismf对象。

fis.Inputs (2) .MembershipFunctions (1) = fismf (“trapmf”,[-2 0 1 3],...“姓名”,“讨厌的”);fis.Inputs (2) .MembershipFunctions (2) = fismf (“trapmf”,[7 9 10 12],...“姓名”,“美味”);

类似地,添加并配置输出变量及其成员函数。

财务产出(1)=fisvar([0 30],“姓名”,“提示”);

在本例中,使用的向量指定输出成员函数fismf对象。

mf1 = fismf (“trimf”, [0 5 10],“姓名”,“便宜”);mf2 = fismf (“trimf”(10 15 20),“姓名”,“平均”);mf3 = fismf (“trimf”(20 25 30),“姓名”,“慷慨”);fis.Outputs(1)。MembershipFunctions = [mf1 mf2 mf3];

为模糊系统创建规则。为每个规则创建费斯勒然后,使用这些对象的向量指定规则费斯勒对象时,必须指定输入变量的数量。

rule([1 1 1 1 2],2);Rule2 = ([2 0 2 1 1],2);Rule3 = fisrule([3 2 3 1 2],2);= [rule1 rule2 rule3];

在将规则添加到模糊系统之前,必须使用FIS对象中的数据更新规则使现代化函数,并将其添加到模糊系统中。

规则=更新(规则,fis);fis.规则=规则;

在构造模糊系统时,还可以指定自定义成员函数和推理函数。有关详细信息,请参阅使用自定义函数构建模糊系统.

评价模糊推理系统

为了评估一个给定输入组合的模糊系统的输出,使用评估命令。例如,评估金融机构使用的输入变量值1.2..

评估指标(金融机构[12])
ans = 5.5586

还可以使用数组计算多个输入组合,其中每一行表示一个输入组合。

输入= [3 5;2 7;3 1];输入evalfis (fis)
ans =3×112.2184 7.7885 8.9547

另见

|||||

相关的话题