这个例子展示了如何建立一个模糊推理系统(FIS)的小费的例子,描述在基本的小费问题,使用模糊逻辑工具箱™UI工具。这些工具只支持1型模糊系金宝app统。
您可以使用以下工具来构建、编辑和查看模糊推理系统:
这些ui是动态链接的,因为您使用其中一个ui对FIS所做的更改,会影响您在任何其他开放ui上看到的内容。例如,如果在成员关系函数编辑器中更改成员关系函数的名称,则更改将反映在规则编辑器中显示的规则中。您可以使用ui在MATLAB中读取和写入变量®工作区和文件(只读查看器仍然可以与工作区交换图并将它们保存到文件中)。您可以为任何给定的系统打开任何或所有编辑器,也可以为任意数量的模糊系统打开多个编辑器。
下图显示了FIS的主要组件和三个编辑器是如何组合在一起的。这两个查看器检查整个系统的行为。
除了这五个主要的ui外,工具箱还包括图形化去噪的设计师,用来建立和分析sugeno型自适应神经模糊推理系统。
模糊逻辑工具箱ui不支持使用数据构建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提示符下输入以下命令:
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变量。
下一个选择编辑下拉菜单,并选择添加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
在重量.如果你没有指定重量,它被认为是统一的(1)
.
类似于模糊逻辑设计和成员功能编辑器,规则编辑器有菜单栏和状态行。菜单项允许您使用5个基本UI工具打开、关闭、保存和编辑模糊系统。从菜单中,您还可以:
通过选择设置显示的格式选项>格式.
通过选择来设置语言选项>语言.
您可以通过单击来访问关于Rule Editor的信息帮助和关闭UI使用关闭.
要在规则编辑器中插入第一个规则,请选择以下内容:
可怜的
在变量服务
令人作呕的
在变量食物
的或单选按钮,在连接块
便宜的
,在输出变量下,提示.
然后,单击添加规则.
得到的规则是
1.如果(服务很差)或者(食物很臭)那么(小费很便宜) |
括号中的数字表示权重。
按照类似的过程在Rule Editor中插入第二个和第三个规则以获得
如果(服务很差)或者(食物很臭)那么(小费很便宜)
如果(服务很好)那么(小费是一般的)
如果(服务很好)或者(食物很美味)那么(小费很慷慨)
提示
要更改规则,首先单击要更改的规则。接下来,对该规则进行所需的更改,然后单击变化规律.例如,要将第一条规则更改为
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。”
符号格式不考虑这些术语,如果,然后,等等。索引格式甚至不关心变量的名称。显然,系统的功能并不取决于变量和成员函数的命名。用描述性的方式命名变量的目的是,一如既往地,使系统更容易解释。因此,除非您头脑中有一些特殊的目的,否则继续使用详细的格式。
至此,模糊推理系统已经完全定义,变量、隶属函数和计算技巧所需的规则都已经就位。现在,看看上一节末尾给出的模糊推理图,并验证一切都按照您认为的方式运行。您可以使用规则查看器,这是我们将介绍的下一个UI工具。从视图菜单中,选择规则.
规则查看器显示了整个模糊推理过程的路线图。它基于上一节描述的模糊推理图。您将看到一个单个数字窗口,其中嵌套了10个plot。图上方的三个图形代表了第一条规则的前件和后件。每条规则是一行图,每一列是一个变量。规则编号显示在每一行的左侧。您可以单击规则编号,在状态行查看该规则。
plot的前两列(6个黄色plot)显示了每个规则的前一个部分或if部分引用的成员函数。
plot的第三列(三个蓝色的plot)显示了每个规则的后件或随后部分引用的隶属函数。
请注意下食物,有一个情节是空白的。这对应于没有一个
为变量食物在第二条规则中。
图中第三列的第四幅图表示给定推理系统的加权综合决策。
这个决定将取决于系统的输入值。解模糊化后的输出在这个图上显示为一条粗体的垂直线。
变量及其当前值显示在列的顶部。在左下方,有一个文本字段输入其中,您可以输入特定的输入值。对于双输入系统,你要输入一个输入向量,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。输入当系统需要的输入比地面测绘更多的情况下,就会使用实地。您可以编辑此字段,以显式设置曲面图中未指定的输入。
假设您有一个四输入一输出的系统,并且希望看到输出面。Surface Viewer可以生成一个三维的输出表面,其中任意两个输入都不同,但其中两个输入必须保持不变,因为计算机显示器无法显示五维形状。在这种情况下,输入是一个四维向量南
S表示变化输入的位置,而数值表示那些保持不变的值。
菜单项允许您使用5个基本UI工具打开、关闭、保存和编辑模糊系统。您可以通过单击来访问有关Surface Viewer的信息帮助和关闭UI使用关闭.
当您将模糊系统保存到文件中时,您是在保存该系统的ASCII文本FIS文件表示形式和文件后缀.fis
.不要手动编辑a.fis
文件。这样做会在加载文件时产生意想不到的结果。当您将模糊系统保存到MATLAB工作空间时,您正在创建一个变量,作为模糊系统的MATLAB对象。
请注意
如果您没有将FIS保存到文件中,而只是将其保存到MATLAB工作区中,则无法恢复它以便在新的MATLAB会话中使用。