模糊逻辑相关模块介绍
1. 差分S形隶属函数(Diff. Sigmoidal MF)
1.1 概述
差分S形隶属函数模块在Simulink中基于两个S形曲线的差值实现隶属函数。该模块位于模糊逻辑工具箱的隶属函数库中。
1.2 原理
S形曲线由以下方程定义:
[f(x; a_k, c_k) = \frac{1}{1 + e^{-a_k(x - c_k)}}]
其中 (k = 1,2)。参数 (a_1) 和 (a_2) 控制左右曲线的斜率,参数 (c_1) 和 (c_2) 控制左右曲线的拐点。若要定义一个最大值为1的单峰隶属函数,需为 (a_1) 和 (a_2) 指定相同的符号,并选择足够分开的 (c) 值,以使两个过渡区域都能达到1。
1.3 端口
| 端口类型 | 名称 | 描述 | 数据类型 |
|---|---|---|---|
| 输入 | (x) | 用于计算隶属度值的输入值,可指定为标量或向量 | 标量或向量 |
| 输出 | (MF) | 隶属度值,返回为标量或向量,其维度与 (x) 匹配 | 标量或向量 |
1.4 参数
| 参数名称 | 描述 | 默认值 | 编程使用类型 |
|---|---|---|---|
| 左曲线 (a_1) | 控制左曲线过渡区域形状的参数,其大小控制过渡区域的宽度,符号决定曲线增减方向 | 3 | 字符串,字符向量 |
| 左曲线 (c_1) | 左曲线过渡区域的中心 | -5 | 字符串,字符向量 |
| 右曲线 (a_2) | 控制右曲线过渡区域形状的参数,其大小控制过渡区域的宽度,符号决定曲线增减方向 | 1 | 字符串,字符向量 |
| 右曲线 (c_2) | 右曲线过渡区域的中心 | 5 | 字符串,字符向量 |
1.5 扩展功能
- C/C++代码生成 :使用Simulink® Coder™生成C和C++代码。
- PLC代码生成 :使用Simulink® PLC Coder™生成结构化文本代码。
1.6 相关函数
-
dsigmf
1.7 流程说明
graph TD;
A[输入x] --> B[计算左右S形曲线值];
B --> C[计算差值得到隶属度值MF];
C --> D[输出MF];
2. 模糊逻辑控制器(Fuzzy Logic Controller)
2.1 概述
模糊逻辑控制器模块在Simulink中实现模糊推理系统(FIS)。用户通过FIS名称参数指定要评估的FIS。
2.2 端口
2.2.1 输入
-
in:输入信号。对于单输入模糊推理系统,输入为标量信号;对于多输入模糊系统,可使用如Mux、Vector Concatenate、Bus Creator等模块将输入组合成向量信号。
2.2.2 输出
-
out:去模糊化后的输出信号。对于单输出FIS,输出为标量信号;对于多输出FIS,输出为向量信号,可使用Demux模块将系统输出拆分为标量信号。 -
fi:模糊化后的输入值,通过在当前输入值下评估每个规则的输入隶属函数获得。对于1型FIS,fi是一个 (NR\times NU) 的矩阵信号;对于2型FIS,fi是一个 (NR\times(2\times NU)) 的矩阵信号。启用该端口需选择“Fuzzified inputs (fi)”参数。 -
rfs:规则触发强度,通过评估每个规则的前提条件(即对模糊化输入值应用模糊算子)获得。对于1型FIS,rfs是长度为 (NR) 的列向量信号;对于2型FIS,rfs是一个 (NR\times 2) 的矩阵信号。启用该端口需选择“Rule firing strengths (rfs)”参数。 -
ro:规则输出,通过将规则触发强度应用于输出隶属函数(使用FIS中指定的蕴含方法)获得。不同类型的FIS对应的ro信号格式不同。启用该端口需选择“Rule outputs (ro)”参数,并使用“Number of samples for output discretization”参数指定 (NS)。 -
ao:聚合输出,通过使用FIS中指定的聚合方法组合所有规则的相应输出获得。不同类型的FIS对应的ao信号格式不同。启用该端口需选择“Aggregated outputs (ao)”参数,并使用“Number of samples for output discretization”参数指定 (NS)。
2.3 参数
2.3.1 常规参数
- FIS名称 :要评估的模糊推理系统,可指定为以下之一:
-
mamfis或sugfis对象:指定MATLAB工作区中1型FIS对象的名称。 -
mamfistype2或sugfistype2对象:指定MATLAB工作区中2型FIS对象的名称。 -
文件名:指定当前工作文件夹或MATLAB路径中的
.fis文件的名称,文件名中包含文件扩展名是可选的。 - 输出离散化的样本点数 :离散化输出变量范围的样本点数,指定为大于1的整数。评估Mamdani FIS时,可通过指定较低的样本数减少内存使用,但会牺牲去模糊化输出值的准确性;评估Sugeno FIS时,该模块会忽略此参数。
-
数据类型
:信号数据类型,可指定为
double(双精度信号)、single(单精度信号)、固定点类型(如fixdt(1,16,0)或fixdt(1,16,2^0,0))或表达式。对于固定点数据类型,可使用数据类型助手配置符号性、字长和缩放参数。 -
模糊化输入(fi)
:启用
fi输出端口,默认关闭。 -
规则触发强度(rfs)
:启用
rfs输出端口,默认关闭。 -
规则输出(ro)
:启用
ro输出端口,默认关闭。 -
聚合输出(ao)
:启用
ao输出端口,默认关闭。 - 仿真模式 :可指定为“Interpreted execution”(使用预编译的MEX文件模拟单精度和双精度数据类型的模糊系统,减少模型的初始编译时间)或“Code generation”(不使用预编译的MEX文件模拟模糊系统,适用于代码生成应用)。对于固定点数据类型,模糊逻辑控制器模块始终使用代码生成模式进行仿真。
2.3.2 诊断参数
-
输入值超出范围
:当输入超出范围时的诊断消息行为,可指定为
warning(报告为警告)、error(报告为错误)或none(不报告诊断消息)。仅当“Simulate using”参数为“Interpreted execution”时提供诊断消息。 -
无规则触发
:当给定输出变量没有规则触发时的诊断消息行为,可指定为
warning(报告为警告)、error(报告为错误)或none(不报告诊断消息)。当设置为warning或none且没有规则触发时,去模糊化输出值设置为其范围的平均值。仅当“Simulate using”参数为“Interpreted execution”时提供诊断消息。 -
输出模糊集为空
:当输出模糊集为空时的诊断消息行为,可指定为
warning(报告为警告)、error(报告为错误)或none(不报告诊断消息)。此诊断消息仅适用于Mamdani系统,且仅当“Simulate using”参数为“Interpreted execution”时提供诊断消息。
2.4 兼容性考虑
从R2019b开始警告,未来版本将移除将模糊推理系统表示为结构的支持,建议使用
mamfis
和
sugfis
对象代替。可使用
convertfis
函数将现有的模糊推理系统结构转换为对象。
2.5 扩展功能
- C/C++代码生成 :使用Simulink® Coder™生成C和C++代码。
- PLC代码生成 :使用Simulink® PLC Coder™生成结构化文本代码。
- 定点转换 :使用Fixed-Point Designer™设计和仿真定点系统。
2.6 相关模块和函数
- 相关模块 :Fuzzy Logic Controller with Ruleviewer
- 相关应用 :Fuzzy Logic Designer、Neuro-Fuzzy Designer
-
相关函数
:
mamfis、sugfis、mamfistype2、sugfistype2、readfis、evalfis、genfis、writeFIS
2.7 流程说明
graph TD;
A[输入in] --> B[模糊化输入值fi];
B --> C[计算规则触发强度rfs];
C --> D[计算规则输出ro];
D --> E[聚合输出ao];
E --> F[去模糊化得到out];
F --> G[输出out];
3. 带规则查看器的模糊逻辑控制器(Fuzzy Logic Controller with Ruleviewer)
3.1 概述
带规则查看器的模糊逻辑控制器模块在Simulink中实现模糊推理系统(FIS),并在仿真期间于规则查看器中显示模糊推理过程。用户通过FIS矩阵参数指定要评估的FIS,并可通过指定“Refresh rate in seconds”来更改规则查看器的更新时间。
3.2 端口
3.2.1 输入
-
Port_1(In1):输入信号。对于单输入模糊推理系统,输入为标量;对于多输入模糊系统,可使用如Mux、Vector Concatenate、Bus Creator等模块将输入组合成向量信号。
3.2.2 输出
-
Port_1(Out1):去模糊化后的输出信号。对于单输出模糊推理系统,输出为标量;对于多输出模糊系统,输出为向量,可使用Demux模块将系统输出拆分为标量信号。
3.3 参数
| 参数名称 | 描述 | 默认值 | 编程使用类型 |
|---|---|---|---|
| FIS结构 |
要评估的模糊推理系统,指定为
mamfis
或
sugfis
对象,需指定MATLAB工作区中FIS对象的名称
| “fis” | 字符串,字符向量 |
| 刷新速率 | 规则查看器更新的时间间隔(秒),指定为标量。在仿真期间,规则查看器将按指定速率更新显示,以展示最新输入信号值的推理过程 | “2” | 字符串,字符向量 |
3.4 兼容性考虑
从R2019b开始警告,未来版本将移除将模糊推理系统表示为结构的支持,建议使用
mamfis
和
sugfis
对象代替。可使用
convertfis
函数将现有的模糊推理系统结构转换为对象。
3.5 扩展功能
-
C/C++代码生成
:使用Simulink® Coder™生成C和C++代码。
- 使用说明 :使用该模块生成代码与使用模糊逻辑控制器模块生成的代码相同,但该模块不支持为单点或定点数据生成代码,也不支持更改输出变量范围离散化的样本数。
3.6 相关模块和函数
- 相关模块 :Fuzzy Logic Controller
- 相关应用 :Fuzzy Logic Designer、Neuro-Fuzzy Designer
-
相关函数
:
mamfis、sugfis、readfis、evalfis
3.7 流程说明
graph TD;
A[输入Port_1(In1)] --> B[模糊推理系统处理];
B --> C[规则查看器显示推理过程];
B --> D[去模糊化得到Port_1(Out1)];
D --> E[输出Port_1(Out1)];
4. 模糊逻辑相关模块对比总结
| 模块名称 | 功能概述 | 支持数据类型 | 仿真模式 | 输出端口 | 代码生成特点 |
|---|---|---|---|---|---|
| 差分S形隶属函数(Diff. Sigmoidal MF) | 基于两个S形曲线的差值实现隶属函数 | 无特殊限制 | 无特殊说明 | 隶属度值MF | 支持C/C++和PLC代码生成 |
| 模糊逻辑控制器(Fuzzy Logic Controller) | 实现模糊推理系统,可输出中间结果 | 双精度、单精度、定点等 | 解释执行、代码生成 | out、fi、rfs、ro、ao | 支持C/C++、PLC代码生成和定点转换 |
| 带规则查看器的模糊逻辑控制器(Fuzzy Logic Controller with Ruleviewer) | 实现模糊推理系统并显示推理过程 | 仅支持双精度 | 仅支持解释执行 | Port_1(Out1) | 支持C/C++代码生成,但有一定限制 |
综上所述,不同的模糊逻辑相关模块适用于不同的应用场景。差分S形隶属函数模块主要用于构建特定的隶属函数;模糊逻辑控制器模块功能强大,可灵活配置各种参数并输出中间推理结果,适用于复杂的模糊推理系统设计;带规则查看器的模糊逻辑控制器模块则更侧重于在仿真过程中直观展示推理过程,方便用户调试和分析。在实际应用中,可根据具体需求选择合适的模块。
超级会员免费看
782

被折叠的 条评论
为什么被折叠?



