这个例子展示了如何建立一个模糊推理系统(FIS)的小费的例子,描述在基本的小费问题,使用模糊逻辑工具箱™UI工具。这些工具仅支持1型模糊系金宝app统。
您可以使用以下工具来构建、编辑和查看模糊推理系统:
这些UIS是动态链接的,在该更改中,您使用其中一个对FIS构成的变化会影响您在任何另一个开放UI上所看到的内容。例如,如果更改成员函数编辑器中的成员身份函数的名称,则更改将在规则编辑器中显示的规则中反映。您可以使用UI读取和写入MATLAB的变量®工作区和文件(只读查看器仍然可以与工作区交换图并将它们保存到文件中)。您可以为任何给定的系统打开任何或所有编辑器,也可以为任意数量的模糊系统打开多个编辑器。
下图显示了FIS的主要组件和三个编辑器是如何组合在一起的。这两个查看器检查整个系统的行为。
除了这五个主要的ui外,工具箱还包括图形化去噪的设计师,您用于构建和分析Sugeno型自适应神经模糊推理系统。
模糊逻辑工具箱UIS不支持使用数据构建FIS。金宝app如果要使用数据来构建FIS,请使用以下技术之一:
genfis
生成sugeno型FIS。然后,选择文件>进口在模糊逻辑设计导入FIS并执行模糊推理,如模糊逻辑设计.
神经适应学习技术模型的FIS,如神经自适应学习和ANFIS.
如果要使用MATLAB工作区变量,请使用命令行界面而不是模糊逻辑设计.例如,请参见在命令行构建模糊系统.
这个例子创建了一个Mamdani模糊推理系统,使用的是基于美国小费实践的双输入一输出小费问题。这个例子创建了一个Mamdani FIS,使用的方法也适用于创建Sugeno系统。
假设有一个介于0到10之间的数字表示一家餐厅的服务质量(10表示非常好),以及另一个介于0到10之间的数字表示这家餐厅的食物质量(同样,10表示非常好),小费应该是多少?
首先要写下给小费的三条黄金法则:
如果服务很差或者食物很臭,那么小费就很便宜。
如果服务很好,小费是平均的。
如果服务很好或者食物很美味,那么小费就会很多。
假设平均小费是15%,慷慨的小费是25%,便宜的小费是5%。
曲线的数字和形状受当地传统,文化偏见等,但这三个规则通常是普遍的。
既然您了解规则并了解输出应该是什么样的,请使用UI工具构建该决策过程的模糊推理系统。
这模糊逻辑设计应用程序显示有关模糊推理系统的信息。打开模糊逻辑设计,在MATLAB提示符下输入以下命令:
FurizzylogicDesigner.
模糊逻辑设计打开并显示模糊推理系统的图,其中包含左边每个输入变量的名称,以及右边的每个输出变量的名称,如下图所示。框中显示的示例隶属函数仅为图标,也不会描绘成员函数的实际形状。
下图是系统的名称和所使用的推理类型。
在此示例中,您使用默认的MamDani型推断。还可提供另一种称为Sugeno-型推理的推理。有关更多信息,请参阅Mamdani和Sugeno模糊推理系统.
在模糊逻辑设计:
下拉列表允许您修改模糊推理函数。
这当前的变量Area显示输入或输出变量的名称、类型和默认范围。
底部的状态线显示有关最新操作的信息。
建立中描述的模糊推理系统基本的小费问题从Scratch,在MATLAB提示符下键入以下命令:
FurizzylogicDesigner.
通用无题模糊逻辑设计打开,只有一个输入input1,以及一个输出output1.
提示
打开模糊逻辑设计将预先建立的模糊推理系统存储在tipper.fis
,输入
fuzzyLogicDesigner (“tipper.fis”)
但是,如果加载预构建的系统,就不会构建规则或成员关系函数。
在这个例子中,您构建了一个两个输入一个输出的系统。两个输入是服务和食物.一个输出是提示.
添加第二个输入变量,并更改变量名以反映以下指定:
选择编辑>添加变量>输入.
第二个黄色的盒子上写着input2出现了。
点击黄色方框input1.此框用红色轮廓线突出显示。
编辑姓名字段input1
到服务
,按进入.
点击黄色方框input2.此框用红色轮廓线突出显示。
编辑姓名字段input2
到食物
,按进入.
点击蓝色方框output1.
编辑姓名字段output1
到提示
,按进入.
选择文件>出口>到工作空间.
进入工作空间变量姓名给小费的人
,然后点击好吧.
更新图以反映输入和输出变量的新名称。现在工作区中的一个新变量称为给小费的人
包含了关于这个系统的所有信息。通过使用新名称保存到工作区,您还可以重命名整个系统。您的窗口看起来如下图所示。
现在让左下角的推断选项保持默认位置。您已经为这个特定的UI输入了所需的所有信息。接下来,定义与每个变量关联的成员函数。为此,请打开成员函数编辑器。
您可以通过以下三种方式之一打开成员函数编辑器:
在这内模糊逻辑设计应用程序,选择编辑>会员职能.
在这内模糊逻辑设计应用程序,双击蓝色图标调用提示.
在命令行中,输入mfedit
.
成员函数编辑器是一种工具,可以显示和编辑与整个模糊推理系统的所有输入和输出变量相关联的所有成员函数。成员功能编辑器与模糊逻辑设计,如下图所示。事实上,这五种基本UI工具都有类似的菜单选项、状态行和帮助和关闭按钮。
打开会员函数编辑器以在工作区中尚不存在的模糊推理系统上工作时,没有与您定义的变量关联的会员函数模糊逻辑设计.
在成员函数编辑器的图形区域的左上方是一个“变量面板”,允许您为给定变量设置成员函数。
要设置与FIS的输入或输出变量关联的成员资格函数,请通过单击选择该区域中的FIS变量。
下一个选择编辑下拉菜单,并选择添加MFs。.出现一个新窗口,这允许您选择成员身份类型和与所选变量关联的隶属函数的数量。在窗口的右下角是允许您在选择后更改会员函数的名称,类型和参数(形状)的控件。
来自当前变量的成员函数在主图中显示。可以通过两种方式操纵这些成员函数。您可以首先使用鼠标选择与给定的变量质量相关联的特定成员身份函数(例如差,变量,服务),然后将成员身份拖动到侧面。此操作会影响与给定变量相关联的质量的数学描述。也可以通过单击成员函数上的小方形拖动点来标记所选隶属函数,然后用鼠标拖动鼠标拖动函数来标记扩张或收缩外,用于扩张,或朝向里面收缩。此操作更改与该成员关系函数关联的参数。
在变量面板下面是关于当前变量的类型和名称的一些信息。该区域中有一个文本字段,允许您更改当前变量范围的限制(话语范围),另一个文本字段允许您设置当前情节的限制(这对系统没有实际影响)。
为双输入倾倒实例指定隶属函数的过程,给小费的人
,详情如下:
双击输入变量服务
打开成员函数编辑器。
在会员函数编辑器中,输入10 [0]
在范围和显示范围字段。
为输入变量创建隶属函数服务
.
选择编辑>删除所有MFs删除输入变量的默认成员身份函数服务
.
选择编辑>添加MFs打开“成员关系函数”对话框。
在“成员功能”对话框中,选择gaussmf
作为MF型.
验证3.
被选择为MFS数量.
点击好吧向输入变量添加三条高斯曲线服务
.
重命名输入变量的隶属函数服务
,并指定其参数。
点击命名的曲线mf1
要选择它,并在当前会员函数(点击MF选择)面积:
在姓名字段中,输入贫穷的
.
在参数个数字段中,输入1.5 [0]
.
两个输入参数个数表示高斯曲线的标准差和中心。
提示
为了调整成员函数的形状,如前所述,键入所需参数或使用鼠标。
点击命名的曲线mf2
要选择它,并在当前会员函数(点击MF选择)面积:
在姓名字段中,输入好
.
在参数个数字段中,输入[1.5 5]
.
点击命名的曲线mf3
,并在当前会员函数(点击MF选择)面积:
在姓名字段中,输入优秀
.
在参数个数字段中,输入[1.5 10]
.
成员身份函数编辑器窗口类似于下图。
在FIS变量区域,单击输入变量食物
以选中它。
进入10 [0]
在范围和显示范围字段。
为输入变量创建成员关系函数食物
.
选择编辑>删除所有MFs删除输入变量的默认成员身份函数食物
.
选择编辑>添加MFs打开“成员关系函数”对话框。
在“成员功能”对话框中,选择trapmf
作为MF型.
选择2
在MFS数量下拉列表。
点击好吧向输入变量添加两条梯形曲线食物
.
重命名输入变量的隶属函数食物
,并指定其参数:
在FIS变量区域,单击输入变量食物
以选中它。
点击命名的曲线mf1
,并在当前会员函数(点击MF选择)面积:
在姓名字段中,输入馊
.
在参数个数字段中,输入[0 0 1 3]
.
点击命名的曲线mf2
选择它,并输入美味的
在姓名场地。
如果需要重置相关参数。
单击输出变量提示
以选中它。
进入30 [0]
在范围和显示范围字段以覆盖输出范围。
输入范围是0到10,但输出是5%到25%的提示。
重命名输出变量的默认三角成员关系函数提示
,并指定其参数。
单击命名为mf1
要选择它,并在当前会员函数(点击MF选择)面积:
在姓名字段中,输入便宜的
.
在参数个数字段中,输入[0 5 10]
.
单击命名为mf2
要选择它,并在当前会员函数(点击MF选择)面积:
在姓名字段中,输入平均数
.
在参数个数字段中,输入(10 15 20)
.
单击命名为mf3
选择它,并指定以下内容:
在姓名字段中,输入慷慨的
.
在参数个数字段中,输入[20 25 30]
.
成员函数编辑器类似下图。
既然,变量已被命名并且成员函数具有适当的形状和名称,可以输入规则。要调用规则编辑器,请转到编辑菜单并选择规则,或类型ruleedit.
在命令行。
使用图形化的Rule Editor界面构造规则是不言自明的。基于对输入和输出变量的定义模糊逻辑设计,规则编辑器允许您自动构建规则语句。你可以:
通过在每个输入和输出变量框中选择项目来创建规则,选择一个联系项目,然后单击添加规则.你可以选择没有一个
作为排除给定规则的那种变量的变量之一,选择不是
在任何变量名下,以否定相关的质量。
删除规则:选择规则,单击删除规则.
通过更改变量框中的选择并单击来编辑规则改变规则.
通过键入中间所需的数字来指定规则的权重0.
和1
在重量.如果您未指定重量,则假定为Unity(1)
.
类似于模糊逻辑设计和成员功能编辑器,规则编辑器有菜单栏和状态行。菜单项允许您使用5个基本UI工具打开、关闭、保存和编辑模糊系统。从菜单中,您还可以:
通过选择来设置显示的格式选项>格式.
通过选择来设置语言选项>语言.
您可以通过单击来访问关于Rule Editor的信息帮助和关闭UI使用关闭.
要在规则编辑器中插入第一个规则,请选择以下内容:
贫穷的
在变量下服务
馊
在变量下食物
这或单选按钮,在联系块
便宜的
,在输出变量下,提示.
然后,单击添加规则.
得到的规则是
1.如果(服务很差)或(食物是饶恕)那么(提示很便宜)(1) |
括号中的数字代表权重。
按照类似的过程在Rule Editor中插入第二个和第三个规则以获得
如果(服务很差)或者(食物很臭)那么(小费很便宜)
如果(服务很好)那么(提示平均)(1)
如果(服务很好)或者(食物很美味)那么(小费很慷慨)
提示
要更改规则,首先单击要更改的规则。接下来,对该规则进行所需的更改,然后单击改变规则.例如,更改第一个规则
1.如果(服务不差)或(食物不是饶恕)那么(提示并不便宜)(1) |
选择不是复选框,然后单击改变规则.
这格式弹出菜单来自选项菜单指示您正在查看详细形式的规则。试着把它改成象征性的
.你会看到
1.(服务= =差)|(食品= =腐臭)= >(提示=廉价)(1) |
2.(service==good) => (tip=average) (1) |
3.(service==excellent) = | (food==delicious) => (tip=generous) (1) |
在显示上没有太大的区别,但它稍微更中立,因为它不依赖于术语如果和然后.如果将格式更改为索引格式,则会看到规则的极度压缩版本。
1 1 1 (1): 2 |
2 0,2(1):1 |
3 2, 3 (1): 2 |
这是机器处理规则的版本。
该结构中的第一列对应于输入变量。
第二列对应于输出变量。
第三列显示应用于每个规则的权重。
第四列是表示这是OR(2)规则还是AND(1)规则的简写。
前两列中的数字指的是成员函数的索引号。
规则1的文字解释是“如果输入1是MF1(与输入1相关联的第一个隶属度函数)或者输入2是MF1,则输出1应该是MF1(与输出1相关的第一隶属关系1),其重量为1。“
符号格式不考虑这些术语,如果那然后,等等。索引格式甚至不关心变量的名称。显然,系统的功能并不取决于变量和成员函数的命名。用描述性的方式命名变量的目的是,一如既往地,使系统更容易解释。因此,除非您头脑中有一些特殊的目的,否则继续使用详细的格式。
至此,模糊推理系统已经完全定义,变量、隶属函数和计算技巧所需的规则都已经就位。现在,看看上一节末尾给出的模糊推理图,并验证一切都按照您认为的方式运行。您可以使用规则查看器,这是我们将介绍的下一个UI工具。从看法菜单中,选择规则.
规则查看器显示整个模糊推理过程的路线图。它基于上一节中描述的模糊推理图。您看到一个图形窗口,其中包含10个绘图。图中顶部的三个曲线表示第一个规则的前一种和随后的结果。每个规则是一行图,每列都是一个变量。规则编号显示在每行的左侧。您可以单击规则编号以查看状态行中的规则。
plot的前两列(6个黄色plot)显示了每个规则的前一个部分或if部分引用的成员函数。
plot的第三列(三个蓝色的plot)显示了每个规则的后件或随后部分引用的隶属函数。
请注意下食物,有一个斑点是空白的。这对应于表征没有一个
为变量食物在第二条规则中。
图中第三列的第四幅图表示给定推理系统的加权综合决策。
这个决定将取决于系统的输入值。解模糊化后的输出在这个图上显示为一条粗体的垂直线。
变量及其当前值显示在列的顶部。在左下方,有一个文本字段输入其中,您可以输入特定的输入值。对于双输入系统,你要输入一个输入向量,[9 8]
,然后按进入.您还可以通过为每个输入单击三个图中的任何一个来调整这些输入值。这将水平移动红色索引线,到您已单击的点。或者,您也可以单击并拖动这一行以更改输入值。当您释放该行时(或手动指定输入后),将执行一个新的计算,您可以看到整个模糊推理过程发生:
左上角图中表示服务的索引线越过成员函数线“服务很差”,这决定了规则1被激活的程度。
实际隶属函数曲线下的黄色颜色斑点用于在视觉上表达模糊的成员资格值。
每个变量的每个特征都以这种方式根据输入索引线指定。如果你在图的顶部遵循规则1,你可以看到结果“tip is cheap”已经被截断到与(复合)先行词完全相同的程度——这就是实际操作中的隐含过程。聚合发生在第三列,结果聚合地块显示在地块字段右下角的单个地块中。解模糊化后的输出值由通过聚合模糊集的粗线表示。
你可以使用剩下那对那下来,向上.菜单项允许您使用五个基本UI工具中的任何一种保存,打开或编辑模糊系统。
规则查看器允许您立即解释整个模糊推断过程。规则查看器还显示了某些隶属函数的形状如何影响整体结果。因为它绘制了每条规则的每个部分,因为对于特别大的系统,它可以变得笨重,但是,对于相对少量的输入和输出,它表现良好(取决于您为其投入的屏幕空间有多少)多达6或7个变量。
规则查看器一次显示一个计算,并详细介绍。从这个意义上讲,它呈现了一种模糊推理系统的微视图。如果要查看系统的整个输出表面 - 基于输入集的整个跨度的输出集的整个跨度 - 您需要打开曲面查看器。此查看器是五个基本模糊逻辑工具箱UI工具中的最后一个。要打开曲面查看器,请选择表面从看法菜单。
打开表面查看器时,您可以看到三维曲线,表示从食物和服务质量到尖端金额的映射。由于此曲线表示双输入的单输出案例,因此您可以在一个绘图中看到整个映射。当我们总体上移动超出三维时,我们开始遇到显示结果的问题。
因此,Surface Viewer配备了下拉菜单x(输入)那y(输入)和Z(输出)这让你可以选择任意两个输入和任意一个输出来绘图。在这些菜单下面是两个输入字段X网格和Y网格它允许您指定要包含多少x轴和y轴网格线。此功能允许您保持计算时间合理的复杂问题。
默认情况下,在更改输入或输出变量选择或网格点数时,曲面绘图会自动更新。要禁用自动绘图更新,请在选项菜单,清除总评价选项。禁用此选项后,要更新绘图,请单击评估.
如果要创建更平滑的绘图,请使用情节点字段指定在输入或输出范围内对成员函数求值所依据的点的数目。该字段默认为最小地块数量,101
.如果指定较少的绘图点,字段值将自动重置为101
.指定绘图点数时,曲面绘图会自动更新。
通过单击绘图轴并拖动鼠标,可以对表面进行操作,以便从不同角度查看它。
这Ref。输入当系统需要的输入比地面测绘更多的情况下,就会使用实地。您可以编辑此字段,以显式设置曲面图中未指定的输入。
假设您有一个四输入一输出的系统,并且希望看到输出面。Surface Viewer可以生成一个三维的输出表面,其中任意两个输入都不同,但其中两个输入必须保持不变,因为计算机显示器无法显示五维形状。在这种情况下,输入是一个四维向量南
S持有变化输入的位置,而数值表示保持固定的值。
菜单项允许您使用5个基本UI工具打开、关闭、保存和编辑模糊系统。您可以通过单击来访问有关Surface Viewer的信息帮助和关闭UI使用关闭.
当您将模糊系统保存到文件中时,您是在保存该系统的ASCII文本FIS文件表示形式和文件后缀.fis
.不要手动编辑a.fis
文件。这样做会在加载文件时产生意想不到的结果。当您将模糊系统保存到MATLAB工作空间时,您正在创建一个变量,作为模糊系统的MATLAB对象。
笔记
如果您没有将FIS保存到文件中,而只是将其保存到MATLAB工作区中,则无法恢复它以便在新的MATLAB会话中使用。