主要内容

在命令行构建模糊系统

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

这个例子向您展示了如何创建一个Mamdani模糊推理系统。当你创建一个Mamdani FIS,方法适用于创建Sugeno系统。

在命令行小费问题

演示创建和查看的命令行功能模糊推理系统,下面的例子使用了翻斗金融中间人。

fis = readfis (“tipper.fis”);

这个命令返回一个mamfis对象包含模糊系统的属性。对于Sugeno系统,该命令返回一个sugfis对象。

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

fis.Inputs
ans = 1 x2 fisvar数组属性:名称范围MembershipFunctions细节:名称范围MembershipFunctions _____ _________ ___________________ 1“服务”0 10 {1 x3 fismf} 2“食物”0 10 {1 x2 fismf}

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

金融中间人。Name =“小费”;

FIS对象

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

  • fisvar对象代表输入和输出变量。

  • fismf对象表示隶属度函数在每个输入和输出变量。

  • fisrule对象表示输入映射到输出的模糊规则。

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

金融中间人
fis = mamfis属性:名称:“小费”AndMethod:“敏”OrMethod:“max”ImplicationMethod:“敏”AggregationMethod:“max”DefuzzificationMethod:“重心”输入:[1 x2 fisvar]输出:[1 x1 fisvar]规则:[1 x3 fisrule] DisableStructuralChecks: 0看到getTunableSettings参数优化方法。

您可以查看对象的属性在FIS对象使用点符号。例如,查看fisvar对象的第一个输入变量。

fis.Inputs (1)
ans = fisvar属性:名称:“服务”范围:10 [0]MembershipFunctions: [1 x3 fismf]

同时,查看该变量的隶属度函数。

fis.Inputs (1) .MembershipFunctions
ans = 1 x3 fismf数组属性:类型参数名称详细信息:名称类型参数___________ _____ __________ 1“可怜”“gaussmf”1.5 0 2“好”“gaussmf”1.5 - 5 3“优秀”“gaussmf”1.5十

系统显示功能

得到一个高级视图从命令行模糊系统,使用plotfis,plotmf,gensurf功能。plotfis显示整个系统框图,如图所示模糊逻辑设计

plotfis (fis)

图包含4轴对象。坐标轴对象1包含3线类型的对象。坐标轴对象包含2线类型的对象。坐标轴对象3包含3线类型的对象。坐标轴对象4包含3文本类型的对象。

plotmf功能块的隶属函数与一个给定的变量。例如,视图的第一个输入变量的隶属度函数。

plotmf (fis,“输入”,1)

图包含一个坐标轴对象。坐标轴对象包含6行类型的对象,文本。

同样的,把第一个输出的隶属度函数,类型:

plotmf (fis,“输出”,1)

图包含一个坐标轴对象。坐标轴对象包含6行类型的对象,文本。

plotmf不支持查看输出隶属金宝app度函数Sugeno系统。

查看模糊系统规则类型:

fis.Rules
ans = 1 x3 fisrule数组属性:描述前期顺向体重连接细节:描述__________________________________________________________ 1”服务贫困| = = = =腐臭的食物= >提示=廉价(1)”2"service==good => tip=average (1)" 3 "service==excellent | food==delicious => tip=generous (1)"

gensurf功能块的输出FIS对于任何一个或两个输入变量。

gensurf (fis)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

建立模糊推理系统

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

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

fis = mamfis (“名字”,“蒂珀”);

为服务添加第一个输入变量使用质量addInput

fis = addInput (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 = addInput (fis, [0 10],“名字”,“食物”);fis = addMF (fis,“食物”,“trapmf”(2 0 1 3),“名字”,“讨厌的”);fis = addMF (fis,“食物”,“trapmf”(7 9 10 12),“名字”,“美味”);

添加的输出变量,并添加三个三角形隶属度函数。三角形隶属函数的更多信息,请参阅trimf

fis = addOutput (fis, 30] [0,“名字”,“小费”);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或)

隶属函数的指数,表明没有条件使用一个负值。模糊规则规范的更多信息,请参阅addRule

ruleList = [1 1 1 1 2;2 0 1 1;3 2 3 1 2];

添加FIS的规则。

ruleList fis = addRule (fis);

或者,您可以创建一个使用点符号和模糊推理系统fisvar,fismf,fisrule对象。这种方法不是一个好的实践对于大多数应用程序。然而,您可以使用此方法当你的应用程序需要更大的灵活性在构建和修改你的金融中间人。

建立模糊推理系统。

fis = mamfis (“名字”,“蒂珀”);

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

fis.Inputs (1) = fisvar;fis.Inputs (1)。Name =“服务”;fis.Inputs (1)。范围= (10 0);

定义第一个输入变量的隶属度函数。对于每个MF,创建一个fismf使用点符号对象,并设置属性。

fis.Inputs (1) .MembershipFunctions (1) = fismf;fis.Inputs (1) .MembershipFunctions (1)。Name =“穷”;fis.Inputs (1) .MembershipFunctions (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.Inputs (1) .MembershipFunctions (3)。参数= 1.5 [10];

添加和配置第二个输入变量。这个变量,当你创建指定名称和范围fisvar对象。

fis.Inputs (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),“名字”,“美味”);

同样地,添加和配置输出变量及其隶属度函数。

fis.Outputs (1) = fisvar (30] [0,“名字”,“小费”);

在这种情况下,指定的输出隶属度函数使用一个向量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];

创建规则的模糊系统。对于每个规则创建一个fisrule对象。然后,使用一个向量的对象指定规则。当创建一个fisrule对象使用数字值,您必须指定输入变量的数量。

规则1 = fisrule ([1 1 1 1 2], 2);rule2 = fisrule ((2 0 2 1 1), 2);规则3 = fisrule ((3 2 3 1 2), 2);规则=(规则1 rule2规则3);

将您的规则添加到您的模糊系统之前,您必须更新他们使用FIS中的数据对象。更新规则使用更新功能,并将它们添加模糊系统。

=更新规则(规则、fis);fis.Rules= rules;

当构建你的模糊系统,您还可以指定自定义隶属度函数和推理功能。有关更多信息,请参见建立模糊系统使用自定义函数

评估的模糊推理系统

评价模糊系统的输出对于一个给定的输入组合,使用evalfis命令。例如,评估金融中间人使用输入变量的值12

[1 - 2]evalfis (fis)
ans = 5.5586

你也可以评估多个输入组合使用一个数组,每一行代表一个输入组合。

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

另请参阅

|||||

相关的话题