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