MATLAB 模糊设计器 构建 模糊系统

news2025/1/17 21:42:41

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、创建 FIS 结构
  • 二、定义输入变量
  • 三、定义输出变量
  • 四、定义成员函数
  • 五、定义规则库
  • 六、设计分析
  • 七、存储和修改设计
  • 八、导出 FIS
  • 总结


前言

本例演示如何使用 Fuzzy Logic Designer 应用程序交互式创建 1 型 Mamdani 模糊推理系统(FIS)。

R2022b 之前:如本例所示,使用上一版本的 Fuzzy Logic Designer 应用程序交互式创建 1 型 FIS。

在本例中,您将创建一个 FIS 来解决模糊逻辑与非模糊逻辑中定义的倾覆问题。小费行为是通过以下三条规则定义的。

  1. 如果服务差或食物变质,则小费便宜。

  2. 如果服务良好,则小费一般。

  3. 如果服务出色或食物美味,则小费丰厚。

本例创建的是 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 定义变量和成员函数后,就可以为系统定义 "如果-那么 "规则库了。

在本例中,使用以下规则。

  1. 如果服务差或食物变质,则小费便宜。

  2. 如果服务良好,则小费一般。

  3. 如果服务出色或食物美味,则小费丰厚。

打开规则编辑器文档。

在这里插入图片描述

要添加规则,请单击加号图标。应用程序会将规则添加到规则表中,并在属性编辑器中显示规则属性。

在这里插入图片描述
修改第一条规则的属性:如果服务差或食物馊了,则小费便宜。

  1. 将 "Connection "参数设置为 “Or”。

  2. 对于 service 输入,选择 "poor "作为语言术语。

  3. 对于 food 输入,选择 rancid 作为语言术语。

  4. 对于 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 和仿真数据。


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1215806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自动化测试】Appium环境搭建与配置-详细步骤,一篇带你打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Node.js环境搭…

easyExcle单元格合并

自定义单元格合并策略: /*** 自定义单元格合并策略** create: 2023-11-15 13:41**/ Data NoArgsConstructor AllArgsConstructor Slf4j public class EasyExcelCustomMergeStrategy implements RowWriteHandler {/*** 总数*/private Integer totalNum;//合并行计数…

【ARM Trace32(劳特巴赫) 使用介绍 5 -- Trace32 scan dump 详细介绍】

文章目录 1.1 JTAG 测试逻辑架构1.2 D型扫描触发器1.2.1 全扫描介绍1.3 IR 寄存器1.4 TDR(Test data registers)1.4.1 TDR 的实现1.4.1.1 Bypass Register1.4.1.2 Boundary-scan register1.5 Scan Dump1.5.1 soft fusion1.1 JTAG 测试逻辑架构 图 1-1 片上测试逻辑概念图 如前面…

我这些年对于自动化测试的理解

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

DTW(Dynamic Time Warping)算法学习应用实践与效率对比分析

DTW(Dynamic Time Warping)算法是一种用于度量两个时间序列之间的相似性的方法。它的构建原理如下: 基本思想:DTW算法通过计算两个时间序列之间的最小距离,来度量它们的相似性。与欧氏距离等传统距离度量方法不同&…

MariaDB安装配置、使用、授权、增删改查以及数据库备份与恢复

目录 1 MariaDB安装 1.1 MariaDB源配置 1.2 清空缓存 1.3 安装MariaDB 2 MariaDB的基本配置 2.1 启动MariaDB 2.2 MariaDB进程查看 2.3 MariaDB数据库初始化 2.3.1 数据库初始化 2.3.2 初始化测试登录 3 MariaDB的使用 3.1 查看数据库 3.2 修改密码 3.3 创建数据库test 3…

conda环境下Tesseract:Failed loading language ‘eng‘问题解决

1 问题描述 使用Tesseract进行ocr文字识别,运行识别代码,报错如下: C:\Users\lishu\anaconda3\envs\pt2\python.exe D:/code/ptcontainer/opencv/car_reg.py Traceback (most recent call last): File "D:\code\ptcontainer\opencv\…

C#WPF文本转语音实例

本文介绍C#WPF文本转语音实例 实现方法:使用类库(SpeechSynthesizer )实现的。 一、首先是安装程序包。 二、创建项目 需要添加引用using System.Speech.Synthesis; UI界面 <Windowx:Class="TextToSpeechDemo.MainWindow"xmlns="http://schemas.micr…

著名的《NP问题》是个啥概念?

一、说明 关于复杂问题&#xff0c;始终是计算机科学挡在路前的一块巨石。所谓一个问题有解&#xff0c;但需要秒完成&#xff0c;这相当于说&#xff0c;此类问题无解。还有一类问题是说不清楚到底有没有一个具体解法&#xff0c;该解法能在多项式时间复杂函数上完成&#xff…

mybatis-plus3.5.3.1 支持不同数据源sql适配

mybatis-plus3.5.3.1 支持不同数据源sql适配 背景 最近公司要求支持国产数据库达梦&#xff0c;人大金仓&#xff0c;高斯等数据库&#xff0c;这些数据库与mysql的语法有一些差异&#xff0c;需要做一些兼容操作。 解决问题 1.不同数据库分页不同 2.支持通过参数控制执行…

JQuery ajax 提交数据提示:Uncaught TypeError:Illegal invocation

JQuery ajax 提交数据提示&#xff1a;Uncaught TypeError:Illegal invocation 1 问题描述 用jQuery Ajax向DRF接口提交数据的时候&#xff0c;console提示&#xff1a;Uncaught TypeError:Illegal invocation(未捕获的异常&#xff1a;非法调用)。 这个问题可能有两种原因导…

MatrixOne 实战系列回顾 | 建模与多租户

本次分享主要介绍MatrixOne建模与多租户相关内容。 1 建模 #1 与MySQL的区别 使用create table语句建表和MySQL建表语句基本相同&#xff0c;也有几点要注意。 MatrixOne暂不支持空间数据类型&#xff0c;其他数据类型在保持与 MySQL 命名一致的情况下&#xff0c;在精度与…

android studio导入eclipse项目

网上下载一个老工程&#xff0c;.project文件里有eclipse。 android studio导入eclipse项目 eclipse项目结构 Android studio文件结构 下面是导入步骤&#xff1a; 第一步&#xff0c;打开一个项目。 选择File->New->Import Project 第二步&#xff0c;选择Eclipse项目根…

保护数据库防止数据泄露

为了避免金钱损失、声誉损害、机密性损失、不遵守政府法规等&#xff0c;保护组织的数据至关重要&#xff0c;保护数据库可以保护您的企业免受无数安全威胁&#xff0c;包括权限滥用、数据泄露、数据库注入和其他网络攻击。 选择工具保护数据库 Log360 是一站式 SIEM 解决方案…

element-plus使用el-date-picker组件时,如何禁止用户选择当前时间之后的日时分秒

element-plus使用el-date-picker组件时&#xff0c;如何禁止用户选择当前时间之后的日时分秒 例&#xff1a; 当前时间为2023-11-15 14.24&#xff0c;不能选择这之后的时分秒。&#xff08;禁止用户选择2023-11-15 14.28&#xff09; <el-date-pickerv-model"form.s…

MM MSTA-STATM数据丢失问题

2001工厂的采购视图已经维护了&#xff0c;但是在MSTA里面找不到对应的记录 解决方案&#xff1a; 1、se38 执行程序 RMMMVERW 参考 data were lost in table msta | SAP Community 2、取数逻辑换位置&#xff0c;从marc 取数 附加&#xff1a;RMMMVERW 执行界面 执行后…

nvm安装详细教程(卸载旧的nodejs,安装nvm、node、npm、cnpm、yarn及环境变量配置)

文章目录 一、完全卸载旧的nodejs1、打开系统的控制面板&#xff0c;点击卸载程序&#xff0c;卸载nodejs&#xff08;1&#xff09;打开系统的控制面板&#xff0c;点击程序下的卸载程序&#xff08;2&#xff09;找到node.js&#xff0c;鼠标右击出现下拉框&#xff0c;点卸载…

【Python语言】字典的使用方法总结

目录 1、基本知识 1.1 定义 1.2 定义字典变量 1.3 定义空字典 2、字典的常用方法介绍 2.1 基于key获取value 2.2 嵌套字典 2.3 新增元素 2.4 更新元素 2.5 删除元素 2.6 清空字典 2.7 获取全部的key 2.8 遍历字典 2.9 统计字典内的元素数量 3、 字典常用操作总结…

如何快速搭建Spring Boot接口调试环境并实现公网访问

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

Figma语言设置教程:简易切换至中文,提高操作便捷性!

Figma是世界领先的在线协作UI设计工具。它摆脱了Sketch等传统设计软件对设备的依赖&#xff0c;使设计师可以随时随地使用任何设备打开网页浏览器&#xff0c;轻松实现跨平台、跨时空的设计合作。那么&#xff0c;Figma如何改变中文&#xff0c;以提高国内设计师的使用体验呢&a…