此示例显示如何为提示示例构建模糊推理系统(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表示非常好),小费应该是多少?
首先要写下给小费的三条黄金法则:
如果服务很差或者食物很臭,那么小费就很便宜。
如果服务很好,那么TIP是平均值。
如果服务是优秀的或食物很美味,那么提示很慷慨。
假设平均小费是15%,慷慨的小费是25%,便宜的小费是5%。
曲线的数字和形状受当地传统,文化偏见等,但这三个规则通常是普遍的。
既然您了解规则并了解输出应该是什么样的,请使用UI工具构建该决策过程的模糊推理系统。
的模糊逻辑设计应用程序显示有关模糊推理系统的信息。打开模糊逻辑设计,在MATLAB提示符下键入以下命令:
fuzzyLogicDesigner
模糊逻辑设计打开并显示模糊推理系统的图,左边是每个输入变量的名称,右边是每个输出变量的名称,如下图所示。方框中显示的示例成员函数只是图标,并没有描述成员函数的实际形状。
下图是系统的名称和所使用的推理类型。
在本例中,您使用默认的mamdani类型推断。另一种类型的推断,称为sugeno型推断,也可用。有关更多信息,请参见Mamdani和Sugeno模糊推理系统.
在模糊逻辑设计:
下拉列表允许您修改模糊推理函数。
的当前变量区域显示输入或输出变量的名称,其类型和默认范围。
底部的状态行显示关于最近操作的信息。
构建描述的模糊推理系统基本的提示问题从Scratch,在MATLAB提示符下键入以下命令:
fuzzyLogicDesigner
一般无标题的模糊逻辑设计打开,只有一个输入INPUT1.和一个输出输出1.
小费
打开模糊逻辑设计将预先建立的模糊推理系统存储在Tipper.fis.
, 进入
FurizzylogicDesigner('tipper.fis')
但是,如果加载预构建的系统,就不会构建规则或成员关系函数。
在此示例中,您构造了一个两个输入,一个输出系统。两个输入是服务和食物.一个输出是小费.
添加第二个输入变量,并更改变量名以反映以下指定:
选择编辑>添加变量>输入.
第二个黄色的盒子上写着Input2.出现了。
单击黄色框INPUT1..此框以红色轮廓突出显示。
编辑名称场上INPUT1.
到服务
,并按进入.
单击黄色框Input2..此框以红色轮廓突出显示。
编辑名称场上Input2.
到食物
,并按进入.
点击蓝色方框输出1.
编辑名称场上输出1
到小费
,并按进入.
选择文件>出口>到工作区.
进入工作空间变量名称泼妇
,然后单击行.
图表被更新以反映输入和输出变量的新名称。现在在工作空间中有一个新变量叫做泼妇
包含有关此系统的所有信息。通过使用新名称保存到工作区,您还可以重命名整个系统。您的窗口看起来像下图。
现在让左下角的推断选项保持默认位置。您已经为这个特定的UI输入了所需的所有信息。接下来,定义与每个变量关联的成员函数。为此,请打开成员函数编辑器。
您可以以三种方式之一打开会员函数编辑器:
在这内模糊逻辑设计应用程序,选择编辑>会员职能.
在这内模糊逻辑设计应用程序,双击调用的蓝色图标小费.
在命令行,键入MFEDIT.
.
成员函数编辑器是允许您显示和编辑与整个模糊推理系统的所有输入和输出变量相关联的所有隶属函数的工具。成员函数编辑器与某些功能共享模糊逻辑设计,如下图所示。事实上,这五种基本UI工具都有类似的菜单选项、状态行和帮助和关纽扣。
当您打开成员资格函数编辑器以处理工作空间中不存在的模糊推理系统时,没有与您所定义的变量相关联的成员资格函数模糊逻辑设计.
在成员函数编辑器中的图形区域的左上侧是一个“可变调色板”,允许您为给定变量设置成员资格函数。
要设置与FIS的输入或输出变量关联的成员函数,请单击该区域中的FIS变量。
下一个选择编辑下拉菜单,并选择添加MFS。.将出现一个新窗口,它允许您选择成员函数类型和与所选变量关联的成员函数的数量。在窗口的右下角有一些控件,可以在成员函数被选中后更改成员函数的名称、类型和参数(形状)。
来自当前变量的成员函数在主图中显示。可以通过两种方式操纵这些成员函数。您可以首先使用鼠标选择与给定的变量质量相关联的特定成员身份函数(例如差,变量,服务),然后将成员身份拖动到侧面。此操作会影响与给定变量相关联的质量的数学描述。也可以通过单击成员函数上的小方形拖动点来标记所选隶属函数,然后用鼠标拖动鼠标拖动函数来标记扩张或收缩外,用于扩张,或朝向里面收缩。此操作更改与该成员关系函数关联的参数。
在变量面板下面是关于当前变量的类型和名称的一些信息。该区域中有一个文本字段,允许您更改当前变量范围的限制(话语范围),另一个文本字段允许您设置当前情节的限制(这对系统没有实际影响)。
为双输入倾倒实例指定隶属函数的过程,泼妇
,详情如下:
双击输入变量服务
打开成员函数编辑器。
在成员函数编辑器中,输入10 [0]
在范围和显示范围字段。
为输入变量创建隶属函数服务
.
选择编辑>删除所有MFS.删除输入变量的默认成员身份函数服务
.
选择编辑>添加MFs打开“成员关系函数”对话框。
在“成员功能”对话框中,选择高斯
随着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.
在命令行。
使用图形规则编辑器界面构建规则相当自我明显。根据定义的输入和输出变量的描述模糊逻辑设计,规则编辑器允许您自动构造规则语句。您可以:
通过在每个输入和输出变量框中选择一个项来创建规则,并选择一个联系项,并点击添加规则.你可以选择没有一个
将该变量排除在给定的规则之外并进行选择不是
在任何变量名下,以否定相关的质量。
通过选择规则并单击删除规则删除规则.
通过更改变量框中的选择并单击“编辑规则”变化规律.
通过在所需的数量之间键入来指定规则的权重0
和1
在重量.如果您未指定重量,则假定为Unity(1)
.
类似于模糊逻辑设计和成员函数编辑器,规则编辑器具有菜单栏和状态行。菜单项允许您使用五个基本UI工具打开,关闭,保存和编辑模糊系统。从菜单中,您还可以:
通过选择设置显示的格式选项>格式.
通过选择来设置语言选项>语.
您可以通过单击访问有关规则编辑器的信息帮助和关闭UI使用关.
要在规则编辑器中插入第一个规则,请选择以下内容:
可怜的
在变量服务
令人作呕的
在变量食物
的要么单选按钮,在联系堵塞
便宜的
,在输出变量下,小费.
然后,点击添加规则.
由此产生的规则是
1.如果(服务很差)或者(食物很臭)那么(小费很便宜) |
括号中的数字表示权重。
遵循类似的过程以在规则编辑器中插入第二个和第三规则以获得
如果(服务很差)或者(食物很臭)那么(小费很便宜)
如果(服务很好)那么(小费是一般的)
如果(服务是优秀的)或(食物是美味的)那么(提示很大)(1)
小费
要更改规则,请首先单击要更改的规则。接下来对该规则进行预期的更改,然后单击变化规律.例如,要将第一条规则更改为
1.如果(服务不差)或(食物不是饶恕)那么(提示并不便宜)(1) |
选择不是在每个变量下复选框,然后单击变化规律.
的格式弹出菜单来自选项菜单表示您正在查看规则的详细形式。尝试改变它象征
.你会看见
1.(服务==差)|(食物== Rancid)=>(提示=便宜)(1) |
2.(服务==好)=>(提示=平均)(1) |
3.(服务==优秀)|(食物==可口)=>(提示=慷慨)(1) |
显示屏上没有太大差异,但它的语言中性有点稍微,因为它不依赖于术语如果和然后.如果更改要索引的格式,则会看到规则的极其压缩版本。
1 1,1(1):2 |
2 0, 2 (1): 1 |
3 2, 3 (1): 2 |
这是机器处理的规则的版本。
该结构中的第一列对应于输入变量。
第二列对应于输出变量。
第三列显示应用于每个规则的权重。
第四列是简写的,指示这是一个或(2)规则或AN和(1)规则。
前两列中的数字是指成员函数的索引号。
规则1的字面解释是“如果输入1是MF1(与输入1相关联的第一个成员函数)或如果输入2是MF1,那么输出1应该是MF1(与输出1相关联的第一个成员函数),其权重为1。”
符号格式不考虑这些术语,如果,然后,等等。索引格式甚至不关心变量的名称。显然,系统的功能并不取决于变量和成员函数的命名。用描述性的方式命名变量的目的是,一如既往地,使系统更容易解释。因此,除非您头脑中有一些特殊的目的,否则继续使用verb格式。
此时,模糊推理系统已经完全定义,因为变量,隶属函数和计算提示所需的规则就位。现在,查看上一节末尾呈现的模糊推理图,并验证了一切都表现在您的思考方式。您可以使用规则查看器,我们将关注的UI工具的下一个。来自视图菜单,选择规则.
规则查看器显示整个模糊推理过程的路线图。它基于上一节中描述的模糊推理图。您看到一个图形窗口,其中包含10个绘图。图中顶部的三个曲线表示第一个规则的前一种和随后的结果。每个规则是一行图,每列都是一个变量。规则编号显示在每行的左侧。您可以单击规则编号以查看状态行中的规则。
图的前两列(六个黄色图)显示了由前所未有的隶属函数,或每个规则的If部分。
第三列图(三个蓝色图)显示了由此引用的隶属函数,或每个规则的那段部分。
请注意下食物,有一个情节是空白的。这对应于没有一个
对于变量食物在第二条规则中。
第三列图中的第四曲线表示给定推理系统的聚合加权决策。
此决定将取决于系统的输入值。Defuzzized输出显示为此图上的粗体垂直线。
变量及其当前值显示在列之上。在左下角,有一个文本字段输入您可以在其中输入特定的输入值。对于双输入系统,您将输入输入向量,[9 8]
,然后按进入.您还可以通过为每个输入单击三个图中的任何一个来调整这些输入值。这将水平移动红色索引线,到您已单击的点。或者,您也可以单击并拖动这一行以更改输入值。当您释放该行时(或手动指定输入后),将执行一个新的计算,您可以看到整个模糊推理过程发生:
在表示服务的索引线交叉的情况下,左上绘图中的隶属函数行“服务较差”确定所激活规则的程度。
实际隶属函数曲线下的黄色颜色斑点用于在视觉上表达模糊的成员资格值。
以这种方式对输入索引线指定每个变量的每个特征。如果您在图表顶部遵循规则1,则可以看到随后的“提示便宜”被截断到完全相同的程度(复合)前一种 - 这是行动中的蕴涵过程。聚合发生在第三列中,并且所得到的聚合图在出现在绘图场的右下角的单个曲线中。Defuzzized输出值由通过聚合模糊集的粗线显示。
你可以使用地图左,正确的,下, 和向上.菜单项允许您使用五个基本UI工具中的任何一种保存,打开或编辑模糊系统。
规则查看器允许您立即解释整个模糊推断过程。规则查看器还显示了某些隶属函数的形状如何影响整体结果。因为它绘制了每条规则的每个部分,因为对于特别大的系统,它可以变得笨重,但是,对于相对少量的输入和输出,它表现良好(取决于您为其投入的屏幕空间有多少)多达6或7个变量。
规则查看器一次显示一个计算,并且非常详细。在这个意义上,它提出了一种模糊推理系统的微观观点。如果您想查看系统的整个输出表面—基于输入集的整个输出集范围—您需要打开surface Viewer。这个查看器是五个基本模糊逻辑工具箱UI工具中的最后一个。要打开Surface Viewer,选择表面从视图菜单。
打开表面查看器时,您可以看到三维曲线,表示从食物和服务质量到尖端金额的映射。由于此曲线表示双输入的单输出案例,因此您可以在一个绘图中看到整个映射。当我们总体上移动超出三维时,我们开始遇到显示结果的问题。
因此,表面观察器配备了下拉菜单X(输入),y(输入)和Z(输出)这让您选择任何两个输入和任何一个输出进行绘图。下面这些菜单是两个输入字段X网格和Y网格它允许您指定要包含多少x轴和y轴网格线。此功能允许您保持计算时间合理的复杂问题。
默认情况下,当您更改输入或输出变量的选择或网格点的数量时,曲面图将自动更新。要禁用自动情节更新,请在选项菜单,清除总是评估选项。禁用此选项后,要更新绘图,请单击评价.
如果你想创造一个更流畅的情节,使用情节点字段指定在输入或输出范围内对成员函数求值所依据的点的数目。该字段默认为最小地块数量,101.
.如果指定较少的绘图点,则字段值会自动重置为101.
.当您指定绘图点的数量时,曲面绘图将自动更新。
通过单击绘图轴并拖动鼠标,可以对表面进行操作,以便从不同角度查看它。
的Ref。输入当系统需要的输入比地面测绘更多的情况下,就会使用实地。您可以编辑此字段,以显式设置曲面图中未指定的输入。
假设您有四输入的单输出系统,并希望看到输出表面。表面观察器可以产生三维输出表面,其中任何两个输入都有所不同,但两个输入必须保持恒定,因为计算机监视器不能显示五维形状。在这种情况下,输入是四维向量南
S表示变化输入的位置,而数值表示那些保持不变的值。
菜单项允许您使用五个基本UI工具打开,关闭,保存和编辑模糊系统。您可以通过单击访问有关Surface Viewer的信息帮助和关闭UI使用关.
将模糊系统保存到文件时,您可以使用文件后缀保存该系统的ASCII文本FIS文件表示.fis.
.不要手动编辑一个内容.fis.
文件。这样做可以在加载文件时产生意外结果。将模糊系统保存到MATLAB工作区时,您正在创建一个可用作模糊系统的MATLAB对象的变量。
请注意
如果您不将FIS保存到文件,但只将其保存到MATLAB工作区,则无法恢复它以用于新的MATLAB会话。