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

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、创建 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.mzph.cn/news/147768.shtml

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

相关文章

在线文档频繁故障不稳定,其实可以自己搭一个Etherpad在线文档

正文共:1116 字 20 图,预估阅读时间:2 分钟 最近某头部云厂商多次出现故障,导致在线文档使用受限,虽说影响不大,但我们有必要考虑一下是否有备用方案。 在自己搭建在线文档方面,我们之前测试过部…

Flutter打包iOS过程中pod访问github失败

问题描述 执行Flutter打包iOS命令出现如下错误: # flutter build ios ...Error output from CocoaPods: ↳Cloning into /var/folders/q8/sd0qtp6d69b30yt6gsh1jrg40000gq/T/d20231116-58127-8g2zje...fatal: unable to access https://github.com/ccgus/fmdb.git…

[Jenkins] 物理机 安装 Jenkins

这里介绍Linux CentOS系统直接Yum 安装 Jenkins,不同系统之间类似,操作命令差异,如:Ubuntu用apt; 0、安装 Jenkins Jenkins是一个基于Java语言开发的持续构建工具平台,主要用于持续、自动的构建/测试你的软…

uniapp基础学习笔记01

文章目录 本博客根据黑马教程学习uniapp一、技术架构二、创建项目2.1 Hbuilder创建2.2 插件安装2.3 微信开发者工具配置与运行2.3.1 简单修改基础页面 2.4 pages.json和tabBar2.4.1 pages.json与tabBar配置2.4.2 案例 3.1 通过命令行创建项目3.2 命令行运行项目3.2.1 命令行总结…

C#装箱与拆箱详解

装箱和拆箱是C#语言中非常重要的两个概念。在C#中,值类型(如int,double,struct等)和引用类型(如class,interface等)是两种完全不同的数据类型。而装箱和拆箱就是这两种类型之间转换的…

五、Linux目录结构

1.基本介绍 1.Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"r/",然后在此目录下再创建其他的目录。 2.深刻理解linux树状文件目录是非常重要的 3.记住一句经典的话:在Linux世界里,一切皆文件…

android jni通过反射打印java类的所有方法

如果让你在jni层&#xff0c;找到一个目标函数&#xff0c;你应该怎么做&#xff1f; 1.找到目标类&#xff0c;然后打印所有的方法&#xff0c;然后通过方法返回值&#xff0c;方法参数&#xff0c;方法修饰符来确定我们要找的目标函数代码如下 #include <jni.h> #incl…

某60区块链安全之整数溢出漏洞实战学习记录

区块链安全 文章目录 区块链安全整数溢出漏洞实战实验目的实验环境实验工具实验原理攻击过程分析合约源代码漏洞EXP利用 整数溢出漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊整数溢出漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理…

英文公司库

beigene 百济神州

6.3 Map接口

Map接口是一种双列集合&#xff0c;它的每个元素都包含一个键对象Key和值对象Value&#xff0c;键和值对象之间存在一种对应关系&#xff0c;称为映射。Map中键对象Key不允许重复&#xff0c;访问Map集合中的元素时&#xff0c;只要指定了Key&#xff0c;就能找到对应的Value。…

如何查看 class 文件的编译器版本

文章目录 原理分析解决方案其它解决方案javap 命令行工具 在平时的 Java 开发中&#xff0c;有时候我们需要知道某个 class 文件是由哪个版本的 Java 编译器编译生成的 原理分析 class 文件&#xff0c;即字节码文件&#xff0c;它有特定的二进制格式&#xff0c;这种格式是由…

十三、Linux文件目录指令

pwd 指令 基本语法&#xff1a;pwd &#xff08;功能描述&#xff1a;显示当前工作目录的绝对路径&#xff09; 应用实例&#xff1a;案例&#xff1a;显示当前工作目录的绝对路径 ls 指令 基本语法&#xff1a;ls 【选项】【目录或是文件】 常用选项 -a &#xff1a;显示当…

Qt调起Mac“系统设置”面板

mac系统设置相关字段&#xff1a; Accessibility 面板相关 项目 URL Scheme Main x-apple.systempreferences:com.apple.preference.universalaccess Display x-apple.systempreferences:com.apple.preference.universalaccess?Seeing_Display Zoom x-apple.systempreference…

趣学python编程 (三、计算机基础知识)

如果不了解些计算机的基础知识上来就编程&#xff0c;往往容易“不识庐山真面目&#xff0c;只缘身在此山中”。因此对于计算机的一些基础知识&#xff0c;在开始编程前&#xff0c;需要理解和掌握。 计算机软件系统 计算机软件是控制计算机实现用户需求的计算机操作以及管理计…

通过接口抓取公众号信息并群发

总体步骤 通过非官方接口&#xff0c;登陆公众号获取cookie、token通过token拼接需要的参数&#xff0c;请求被抓取的公众号列表数据通过列表数据获取文章内容解析文章内容并通过官方接口创建草稿通过非官方接口群发创建的草稿(非认证用户&#xff0c;已认证用户可以通过官方接…

[Linux] PXE批量装机

一、PXE批量装机简介 1.1 常见的三种系统安装方式 u启动安装&#xff1a;在U盘中下载相关的安装系统及镜像文件&#xff0c;u盘插机安装 光驱安装&#xff1a;将带有所需系统的光盘放进电脑服务器中&#xff0c;按照官方引导装机 网络下载安装&#xff1a;在网上下载相关镜…

elementui 实现树形控件单选

实现&#xff1a; <!--author: itmacydesc: 树节点单选 --> <template><div class"about"><el-tree :data"data"ref"tree":props"defaultProps"node-key"id"show-checkboxcheck-strictlycheck-change…

【如何将任何直流电机变成伺服电机】

【如何将任何直流电机变成伺服电机】 1 前沿2 伺服电机工作原理3 如何制作定制伺服电机4 AS5600 编码器 – 磁性旋转位置传感器5 定制伺服电机电路图6 PCB设计7 自定义伺服3D模型8 定制伺服齿轮箱的 3D 打印零件9 对控制器进行编程9.1 引导加载程序刻录9.2 代码上传9.3 源代码9…

06.webpack性能优化--构建速度

优化babel-loaderhappyPackIgnorePluginparalleUglifyPluginnoParse自动刷新 1 happypack多进程打包 js单线程&#xff0c;开启多进程打包提高构建速度&#xff08;特别是多核CPU&#xff09; const HappyPack require(happypack)module.exports smart(webpackCommonConf,…

教程:使用 Keras 优化神经网络

一、介绍 在 我 之前的文章中&#xff0c;我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章&#xff0c;我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了&#xff0c;据我所知&#xff0c;处理…