系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、创建 FIS 结构
- 二、定义输入变量
- 三、定义输出变量
- 四、定义成员函数
- 五、定义规则库
- 六、设计分析
- 七、存储和修改设计
- 八、导出 FIS
- 总结
前言
本例演示如何使用 Fuzzy Logic Designer 应用程序交互式创建 1 型 Mamdani 模糊推理系统(FIS)。
R2022b 之前:如本例所示,使用上一版本的 Fuzzy Logic Designer 应用程序交互式创建 1 型 FIS。
在本例中,您将创建一个 FIS 来解决模糊逻辑与非模糊逻辑中定义的倾覆问题。小费行为是通过以下三条规则定义的。
-
如果服务差或食物变质,则小费便宜。
-
如果服务良好,则小费一般。
-
如果服务出色或食物美味,则小费丰厚。
本例创建的是 1 型 Mamdani 模糊推理系统,所使用的一般方法也适用于创建 2 型和 Sugeno 系统。有关不同类型模糊系统的更多信息,请参阅 Mamdani 和 Sugeno 模糊推理系统以及 2 型模糊推理系统。
您还可以使用模糊逻辑设计器交互式创建 FIS 树。有关示例,请参阅使用模糊逻辑设计器构建 FIS 树。
有关在命令行下构建 FIS 的更多信息,请参阅在命令行下构建模糊系统。
在本例中,您将从头开始构建一个给小费 FIS。或者,也可以从 tipper.fis 文件加载系统。为此,请使用以下命令。
fuzzyLogicDesigner("tipper.fis")
一、创建 FIS 结构
要自行构建 FIS,首先要打开应用程序。在 "应用程序 "选项卡的 "控制系统设计与分析 "下,单击应用程序图标。
应用程序将打开 "入门 "对话框。有关创建初始 FIS 结构选项的更多信息,请参阅《模糊逻辑设计器入门》。
在本例中,由于您要创建的是具有两个输入和一个输出的 1 型 Mamdani 系统,因此可以使用内置模板作为起点。具体方法如下
由于您是手动定义模糊推理系统的规则,因此请清除自动生成规则复选框。
在模板模糊推理系统下,选择 Mamdani Type-1。
应用程序创建 FIS 模板并将其加载到应用程序中。
在 "属性编辑器 "窗格中,您可以指定 FIS 的名称及其推理方法。本例中使用默认推理方法。有关可用推理方法的更多信息,请参阅《模糊推理过程》和《模糊逻辑基础》。
在名称字段中,输入 tipper 名称。
二、定义输入变量
在本例中,模板 FIS 已经有两个输入变量。在 "系统浏览器 "窗格中,单击 “输入”。应用程序会在属性编辑器中显示输入变量的属性。
在属性编辑器中,为每个输入变量定义以下属性。
-
Name - 输入变量名称。在本例中,命名第一个输入服务和第二个输入食物。
-
Range - 输入变量范围。在本例中,两个输入变量的评分范围都是从 0 到 10。因此,请将每个变量的范围指定为 [0 10]。
如果应用程序需要,您可以添加更多输入变量。为此,请在 "设计 "选项卡的 "添加组件 "图库中单击 “输入”。
三、定义输出变量
在本例中,模板 FIS 已经有一个输出变量。在系统浏览器窗格中,单击输出。应用程序会在属性编辑器中显示输出变量的属性。
在属性编辑器中,为输出变量定义以下属性。
-
Name - 输出变量名称。本例中,将输出变量命名为 tip。
-
Range - 输出变量范围。在本例中,指定输出变量范围为 [0 30]。
如果您的应用程序需要输出变量,您可以添加这些变量。为此,请在 "添加组件 "图库中单击 “输出”。
四、定义成员函数
要添加或删除给定变量的成员函数(MF),请在系统浏览器中选择该变量或在模糊推理系统文档中点击该变量。例如,选择食物输入变量。在属性编辑器中,应用程序会显示输入变量和成员函数的属性。
默认情况下,模板会为每个变量添加三个成员函数。在本例中,服务输入变量和小费输出变量都需要三个成员函数。
但是,食物变量需要两个成员函数。要删除其中一个默认成员函数,请在系统浏览器的食物下右键单击该成员函数并选择删除。
如果应用程序需要,您可以为给定变量添加成员函数。为此,请在添加组件库中单击 MF。
要编辑成员函数属性,请在系统浏览器中选择成员函数或相应变量。然后,在属性编辑器中指定以下成员函数属性。
-
Name - 成员函数名称
-
Type - 成员函数类型
-
Parameters - 成员函数参数
要查看给定变量的成员函数图,请在系统浏览器中选择变量并打开成员函数编辑器。下图显示了服务输入变量的成员函数。
使用图中显示的属性配置服务输入的成员函数。
同样,配置食物输入变量的属性。
最后,定义尖端输出的成员函数。
有关定义成员函数的更多信息,请参阅使用模糊逻辑设计器定义成员函数。
五、定义规则库
为 FIS 定义变量和成员函数后,就可以为系统定义 "如果-那么 "规则库了。
在本例中,使用以下规则。
-
如果服务差或食物变质,则小费便宜。
-
如果服务良好,则小费一般。
-
如果服务出色或食物美味,则小费丰厚。
打开规则编辑器文档。
要添加规则,请单击加号图标。应用程序会将规则添加到规则表中,并在属性编辑器中显示规则属性。
修改第一条规则的属性:如果服务差或食物馊了,则小费便宜。
-
将 "Connection "参数设置为 “Or”。
-
对于 service 输入,选择 "poor "作为语言术语。
-
对于 food 输入,选择 rancid 作为语言术语。
-
对于 tip 输出,选择 cheap 作为语言术语。
同样,添加下一条规则:如果服务很好,那么小费就是平均值。对于这条规则
对于 service 输入,选择 good 作为语言术语。
对于 tip 输出,选择 average 作为语言术语。
由于这条规则的前件只有 service 输入,因此忽略 food 输入,将其语言项设置为 “none”。
最后,添加第三条规则:如果服务很好或食物很美味,那么小费就会很丰厚。对于这条规则
将 " Connection "参数设置为 " Or "。
对于 service 输入,选择 Excellent 作为语言术语。
对于 food 输入,选择 delicious 作为语言术语。
对于 tip 输出,选择 generous 作为语言术语。
在规则编辑器中查看最终规则库。
有关为 FIS 指定规则的更多信息,请参阅使用模糊逻辑设计器定义模糊规则。
六、设计分析
定义规则库后,您可以使用以下文档分析您的设计。
-
Rule Inference 规则推理 - 指定输入值并查看推理图和结果输出值。
-
Control Surface 控制面 - 绘制两个输入变量所有组合的输出值。
-
System Validation 系统验证 - 将每个 FIS 设计的输出值与测试数据中的相应输出值进行比较。(自 R2023a 版起)
-
Error Distribution 误差分布 - 对于给定的 FIS 设计和测试数据,查看不同输入组合的输出误差。(自 R2023a 版起)
有关 FIS 分析方法的更多信息,请参阅使用模糊逻辑设计器分析模糊系统。
在本例中,使用 Rule Inference 和 Control Surface 文档分析 FIS。要打开任一文档,请在 "Design "选项卡上单击 " Simulation "图库中的相应图标。
规则推理
在 "规则推理 "文档中,您可以指定输入变量的值,检查推理过程,并查看结果输出值。
例如,考虑服务很差(1/10)但食物很好(9/10)的情况。使用输入值参数指定这些输入值。或者,您也可以在推理图中拖动输入条。
服务评级低会导致第一条规则以高触发强度触发,食品评级高会导致第三条规则以高触发强度触发。对输出的成员函数进行汇总和模糊化处理后,最终的小费值为 15.2%。
有关模糊推理的更多信息,请参阅模糊推理过程。
Control Surface 控制面
Control Surface 文档显示了两个输入变量所有可能组合的 FIS 输出值。在本例中,该图显示了所有服务和食物等级组合的小费值。一般来说,当食物和服务输入均接近 0 时,小费值较低 (5%),而当食物和服务输入均接近 10 时,小费值较高 (25%)。
七、存储和修改设计
您可以在应用程序中存储多个 FIS 设计,从而探索可能的设计方案。所有存储的设计必须具有相同数量的输入和相同数量的输出。
一个常见的设计方案是将 Mamdani 系统转换为 Sugeno 系统。一般来说,Sugeno 系统的计算效率更高,这也是部署 FIS 时的一个重要考虑因素。
要将 FIS 转换为 Sugeno 系统,请在 "设计 "选项卡上选择 “从 Mamdani 到 Sugeno”。
在 "设计浏览器 "窗格中,应用程序会创建一个名为 tipper_1 的 Sugeno FIS 版本。
要使该设计处于活动状态,请在表格中选择该设计,然后单击设置活动设计。
您也可以在设计浏览器中手动存储当前 FIS 的副本。为此,请在 "设计 "选项卡上选择 “存储当前设计”。
然后,您可以用与第一种设计相同的方式分析替代设计。
控制面文件中的 Sugeno 系统曲线图与 Mamdani 系统曲线图相似
使用 "规则推理 "文档,您可以看到,对于相同的服务和食物评级,Sugeno 系统产生的小费为 16.1%,与 Mamdani 系统产生的 15.2% 的小费相似。使用 "规则推理 "文档,您可以看到,对于相同的服务和食物评级,Sugeno 系统产生的小费为 16.1%,与 Mamdani 系统产生的 15.2% 的小费相似。
八、导出 FIS
使用 Fuzzy Logic Designer 设计 FIS 后,可以将活动和存储的设计导出到 MATLAB® 工作区,以便进一步模拟和部署。
要将 FIS 设计导出到 MATLAB 工作区,请在 Fuzzy Logic Designer 中选择导出 > 将模糊推理系统导出到工作区。
导出模糊推理系统到工作区 "对话框会列出活动的模糊推理系统设计和任何已存储的设计。
在 Export(导出)栏中,选择要导出的一个或多个系统。
在 "导出为 "列中,指定工作区变量的名称。
单击导出。
应用程序会将 FIS 保存到 MATLAB 工作区。
有关导出和保存 FIS 的更多信息,请参阅从 Fuzzy Logic Designer 导出 FIS 和仿真数据。