模糊推理系统对象相关介绍
1. 区间2型Sugeno模糊推理系统(Interval type - 2 Sugeno fuzzy inference system)
1.1 概述
可以使用
sugfistype2
对象来表示区间2型Sugeno模糊推理系统(FIS)。除了2型Sugeno系统,还可以创建以下几种模糊推理系统:
- 使用
mamfistype2
对象创建2型Mamdani系统。
- 使用
sugfis
对象创建1型Sugeno系统。
- 使用
mamfis
对象创建1型Mamdani系统。
1.2 创建方法
创建2型Sugeno FIS对象有以下几种方法:
1. 使用
sugfistype2
函数。
2. 若有输入/输出数据,可以使用
genfis
函数,然后使用
convertToType2
将此FIS转换为2型系统。
3. 若有Sugeno系统的
.fis
文件,可以使用
readfis
函数。
4. 使用
convertToSugeno
将现有的2型Mamdani FIS转换为Sugeno FIS。
1.3 语法
-
fis = sugfistype2:创建具有默认属性值的2型Sugeno FIS,可使用点符号修改模糊系统的属性。 -
fis = sugfistype2(Name,Value):使用名称 - 值对参数指定FIS配置信息或设置对象属性,可以指定多个名称 - 值对,名称要加引号。
输入参数中的名称 - 值对参数,可指定可选的参数对,如
Name1=Value1,...,NameN=ValueN
,名称 - 值参数必须出现在其他参数之后,且对的顺序无关紧要。在R2021a之前,使用逗号分隔每个名称和值,并将名称用引号括起来。
以下是一些重要的名称 - 值对参数:
| 参数名称 | 描述 | 默认值 |
| ---- | ---- | ---- |
|
NumInputs
| FIS输入的数量,指定为
'NumInputs'
和一个非负整数组成的逗号分隔对 | 0 |
|
NumInputMFs
| 每个FIS输入的隶属函数数量,指定为
'NumInputMFs'
和一个正整数组成的逗号分隔对 | 3 |
|
NumOutputs
| FIS输出的数量,指定为
'NumOutputs'
和一个非负整数组成的逗号分隔对 | 0 |
|
NumOutputMFs
| 每个FIS输出的隶属函数数量,指定为
'NumOutputMFs'
和一个正整数组成的逗号分隔对 | 3 |
|
MFType
| 输入变量的隶属函数类型,指定为
'MFType'
和
"trimf"
(三角形MF)或
"gaussmf"
(高斯MF)组成的逗号分隔对 |
"trimf"
|
|
AddRules
| 自动添加规则的标志,指定为
"AddRules"
和以下之一:
-
"allcombinations"
:若
NumInputs
和
NumOutputs
都大于零,创建包含所有输入隶属函数组合的前件规则,每个规则后件包含所有输出变量并使用每个输出的第一个隶属函数。
-
"none"
:创建没有任何规则的FIS。 |
"allcombinations"
|
1.4 属性
| 属性名称 | 描述 | 默认值 |
|---|---|---|
Name
| FIS名称,指定为字符串或字符向量 |
"fis"
|
AndMethod
|
模糊规则前件中组合模糊化输入值的AND运算符方法,可选值有
"prod"
(模糊化输入值的乘积)、
"min"
(模糊化输入值的最小值)、自定义AND函数的名称或函数句柄
|
"prod"
|
OrMethod
|
模糊规则前件中组合模糊化输入值的OR运算符方法,可选值有
"probor"
(模糊化输入值的概率OR)、
"max"
(模糊化输入值的最大值)、自定义OR函数的名称或函数句柄
|
"probor"
|
ImplicationMethod
|
计算后件模糊集的蕴含方法,Sugeno系统始终使用
"prod"
蕴含方法,即根据前件结果值缩放后件隶属函数
|
"prod"
|
AggregationMethod
|
组合规则后件的聚合方法,Sugeno系统始终使用
"sum"
聚合方法,即后件模糊集的总和
|
"sum"
|
DefuzzificationMethod
| 从聚合输出模糊集计算清晰输出值的去模糊化方法,2型Sugeno系统仅支持加权平均去模糊化 |
"wtaver"
|
Inputs
|
FIS输入变量,指定为
fisvar
对象的向量,可使用
addInput
和
removeInput
分别添加和删除输入变量,也可使用点符号修改输入变量的属性,还可使用
addMF
函数为输入变量添加隶属函数
| |
Outputs
|
FIS输出变量,指定为
fisvar
对象的向量,可使用
addOutput
和
removeOutput
分别添加和删除输出变量,也可使用点符号修改输出变量的属性,还可使用
addMF
函数为输出变量添加隶属函数
| |
Rules
|
FIS规则,指定为
fisrule
对象的向量,可使用
addRule
函数添加模糊规则,也可使用点符号将
fisrule
对象向量分配给
Rules
,要删除规则,将相应的规则向量元素设置为
[]
,如
fis.Rules(10) = []
| |
DisableStructuralChecks
|
禁用一致性检查的标志,指定为逻辑值。默认情况下,更改
sugfistype2
对象的属性值时,软件会验证新属性值是否与其他对象属性一致,禁用此检查可加快FIS构建速度,但可能导致无效的
sugfistype2
对象
|
false
|
TypeReductionMethod
|
将2型输出模糊集转换为区间1型模糊集的类型约简方法,可选值有
"karnikmendel"
(Karnik - Mendel)、
"ekm"
(增强的Karnik - Mendel)、
"iasc"
(带停止条件的迭代算法)、
"eiasc"
(增强的迭代算法)、自定义类型约简函数的名称或函数句柄
|
"karnikmendel"
|
1.5 对象函数
| 函数名称 | 描述 |
|---|---|
addInput
| 向模糊推理系统添加输入变量 |
removeInput
| 从模糊推理系统中移除输入变量 |
addOutput
| 向模糊推理系统添加输出变量 |
removeOutput
| 从模糊推理系统中移除输出变量 |
addRule
| 向模糊推理系统添加规则 |
addMF
| 向模糊变量添加隶属函数 |
removeMF
| 从模糊变量中移除隶属函数 |
evalfis
| 评估模糊推理系统 |
writeFIS
| 将模糊推理系统保存到文件 |
convertToType1
| 将2型模糊推理系统转换为1型模糊推理系统 |
1.6 示例
graph TD;
A[开始] --> B[创建默认属性的2型Sugeno FIS];
B --> C[修改系统属性];
C --> D[指定输入和输出数量创建2型Sugeno FIS];
D --> E[结束];
- 创建具有默认属性值的2型Sugeno模糊推理系统:
fis = sugfistype2;
fis.TypeReductionMethod = "ekm"; % 修改类型约简方法
或者在创建模糊系统时指定属性:
fis = sugfistype2('TypeReductionMethod',"ekm");
- 创建具有三个输入和一个输出的2型Sugeno模糊推理系统:
fis = sugfistype2("NumInputs",3,"NumOutputs",1);
2. tunefisOptions对象
2.1 概述
使用
tunefisOptions
对象为
tunefis
函数指定调整模糊系统的选项,可指定优化方法、优化类型和优化成本计算的距离度量等选项。
2.2 创建方法
-
opt = tunefisOptions:创建用于使用tunefis函数调整模糊推理系统的默认选项集,可使用点符号修改此选项集的属性。 -
opt = tunefisOptions(Name,Value):使用一个或多个名称 - 值对参数创建指定属性的选项集。
2.3 属性
| 属性名称 | 描述 | 默认值 |
|---|---|---|
Method
|
调整算法,可选值有
"ga"
(遗传算法)、
"particleswarm"
(粒子群算法)、
"patternsearch"
(模式搜索算法)、
"simulannealbnd"
(模拟退火算法)、
"anfis"
(自适应神经模糊算法),除
"anfis"
外,这些调整算法使用全局优化工具箱软件中的求解器
|
"ga"
|
MethodOptions
|
调整算法的选项,指定为
Method
指定的调整算法的选项对象,此属性因算法而异,使用
optimoptions
创建,若未指定
MethodOptions
,
tunefis
会为
Method
中指定的调整方法创建默认选项对象,可使用点符号修改选项
| |
OptimizationType
|
优化类型,可选值有
"tuning"
(优化现有输入、输出和规则参数,不学习新规则)、
"learning"
(学习新规则,最多达到
NumMaxRules
指定的最大规则数),
"anfis"
算法仅支持
"tuning"
优化
|
"tuning"
|
NumMaxRules
|
优化后FIS中的最大规则数,指定为整数,由于具有相同前件值的重复规则会从规则库中删除,FIS中的规则数(优化后)可能小于
NumMaxRules
,当
NumMaxRules
为
Inf
时,
tunefis
将
NumMaxRules
设置为FIS可能的最大规则数,此最大值根据输入变量的数量和每个输入变量的隶属函数数量计算得出,
"anfis"
调整方法忽略此选项
|
Inf
|
IgnoreInvalidParameters
|
忽略无效参数的标志,指定为
true
或
false
,当为
true
时,
tunefis
函数会忽略调整过程中生成的无效参数值,
"anfis"
调整方法忽略此选项
|
true
|
DistanceMetric
|
用于计算优化参数值相对于训练数据的成本的距离度量类型,可选值有
"rmse"
(均方根误差)、
"norm1"
(向量1 - 范数)、
"norm2"
(向量2 - 范数),
"anfis"
调整方法仅支持
"rmse"
度量
|
"rmse"
|
UseParallel
|
使用并行计算的标志,指定为
true
或
false
,当为
true
时,
tunefis
函数在优化过程中使用并行计算,使用并行计算需要并行计算工具箱软件,
"anfis"
调整方法不支持并行计算
|
false
|
KFoldValue
|
要执行的交叉验证次数,指定为小于或等于训练数据行数的非负整数,当
KFoldValue
为0或1时,
tunefis
使用整个输入数据集进行训练,不执行验证,否则,
tunefis
会将输入数据随机划分为
KFoldValue
个近似相等大小的子集,并执行
KFoldValue
次训练 - 验证迭代,
"anfis"
调整方法忽略此选项
| 0 |
ValidationTolerance
|
使用k折交叉验证时验证成本的最大允许增加量,指定为范围在
[0,1]
内的标量值,较高的值会产生更长的训练 - 验证迭代,增加数据过拟合的可能性,当
KFoldValue
为0或1时,此值被忽略,
"anfis"
调整方法忽略此选项
| 0.1 |
ValidationWindowSize
|
计算平均验证成本的窗口大小,指定为正整数,验证成本移动平均值是根据最后
N
个验证成本值计算的,其中
N
等于
ValidationWindowSize
,较高的值会产生更长的训练 - 验证迭代,增加数据过拟合的可能性,较低的窗口大小在训练数据有噪声时可能导致调整过程提前终止,当
KFoldValue
为0或1时,此值被忽略,
"anfis"
调整方法忽略此选项
| 5 |
Display
|
训练期间在命令窗口中显示的数据,可选值有
"all"
(显示训练和验证结果)、
"tuningonly"
(仅显示训练结果)、
"validationonly"
(仅显示验证结果)、
"none"
(不显示训练和验证结果)
|
"all"
|
2.4 示例
% 创建使用粒子群调整算法的默认选项集
opt = tunefisOptions("Method","particleswarm");
opt.MethodOptions.MaxIterations = 20; % 修改最大迭代次数
% 创建学习新规则的选项集
opt2 = tunefisOptions("Method","particleswarm","OptimizationType","learning");
3. VariableSettings对象
3.1 概述
VariableSettings
对象包含模糊推理系统的输入或输出变量的可调参数设置,使用此对象可以指定相应变量的隶属函数的可调性设置。
3.2 创建方法
使用
getTunableSettings
函数创建
VariableSettings
对象,
getTunableSettings
的第一个和第二个输出分别包含输入和输出变量的
VariableSettings
对象。
3.3 属性
| 属性名称 | 描述 |
|---|---|
FISName
| 模糊推理系统的名称,指定为字符串,此属性为只读 |
Type
|
变量类型,指定为
"input"
或
"output"
,此属性为只读
|
VariableName
| 变量名称,指定为字符串,此属性为只读 |
MembershipFunctions
|
隶属函数设置,当相应变量包含1型隶属函数时,指定为
MembershipFunctionSettings
对象;当相应变量包含2型隶属函数时,指定为
MembershipFunctionSettingsType2
对象
|
3.4 对象函数
-
setTunable:将指定的参数设置为可调或不可调。
3.5 示例
% 创建两个模糊推理系统并定义连接
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1);
fis2 = sugfis('Name','fis2','NumInputs',2,'NumOutputs',1);
con = ["fis1/output1" "fis2/input1"];
% 创建模糊推理系统树
tree = fistree([fis1 fis2],con);
% 获取模糊推理系统的输入和输出变量的可调设置
[in,out] = getTunableSettings(tree);
% 设置输入和输出变量的可调设置
in(1).MembershipFunctions(1).Parameters.Free = [1 0 1];
in(2).MembershipFunctions(1).Parameters.Minimum = 0;
out(2).MembershipFunctions(1).Parameters.Maximum = 1;
模糊推理系统对象相关介绍(续)
4. 模糊推理系统对象的综合应用与总结
4.1 综合应用示例
在实际应用中,我们可能需要将上述介绍的不同对象结合使用,以实现复杂的模糊推理系统的创建、调整和参数设置。以下是一个综合示例,展示了如何创建一个模糊推理系统树,对其进行参数调整,并设置变量的可调参数。
% 步骤1:创建模糊推理系统
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1);
fis2 = sugfis('Name','fis2','NumInputs',2,'NumOutputs',1);
% 步骤2:定义系统连接
con = ["fis1/output1" "fis2/input1"];
% 步骤3:创建模糊推理系统树
tree = fistree([fis1 fis2],con);
% 步骤4:创建tunefisOptions对象,设置调整选项
opt = tunefisOptions("Method","particleswarm","OptimizationType","learning");
opt.MethodOptions.MaxIterations = 30;
% 步骤5:获取输入输出数据(这里假设已有数据)
% 实际应用中需要根据具体问题准备数据
inputData = rand(100, 2);
outputData = rand(100, 1);
% 步骤6:使用tunefis函数对模糊推理系统树进行调整
tunedTree = tunefis(tree, inputData, outputData, opt);
% 步骤7:获取变量的可调设置
[in,out] = getTunableSettings(tunedTree);
% 步骤8:设置变量的可调参数
in(1).MembershipFunctions(1).Parameters.Free = [1 0 1];
in(2).MembershipFunctions(1).Parameters.Minimum = 0.1;
out(2).MembershipFunctions(1).Parameters.Maximum = 0.9;
在这个示例中,我们首先创建了两个不同类型的模糊推理系统
fis1
和
fis2
,并将它们连接成一个模糊推理系统树
tree
。然后,我们创建了一个
tunefisOptions
对象
opt
,设置了调整算法为粒子群算法,并指定了优化类型为学习新规则。接着,我们使用
tunefis
函数对模糊推理系统树进行调整,得到调整后的系统
tunedTree
。最后,我们获取了调整后系统的输入和输出变量的可调设置,并设置了部分参数的可调性和取值范围。
4.2 注意事项
在使用这些对象和函数时,需要注意以下几点:
-
参数兼容性
:不同的调整算法和优化类型对参数的要求不同,例如
"anfis"
算法仅支持
"tuning"
优化,且对输入输出变量和规则有特定要求。在选择算法和设置参数时,需要确保参数的兼容性。
-
数据准备
:在使用
tunefis
函数进行系统调整时,需要准备合适的输入输出数据。数据的质量和数量会影响调整的效果,因此需要对数据进行预处理和验证。
-
性能考虑
:当处理大规模的模糊推理系统或进行多次迭代调整时,性能可能会成为一个问题。可以通过设置
DisableStructuralChecks
为
true
来加快FIS构建速度,但需要注意可能会导致无效的系统。同时,使用并行计算可以提高优化过程的效率,但需要安装并行计算工具箱软件。
4.3 总结
本文介绍了几种重要的模糊推理系统相关对象,包括
sugfistype2
、
tunefisOptions
和
VariableSettings
对象。这些对象提供了创建、调整和设置模糊推理系统的功能,使得我们可以根据具体需求定制复杂的模糊推理系统。
-
sugfistype2对象用于表示区间2型Sugeno模糊推理系统,提供了多种创建方法和丰富的属性设置,可用于构建不同结构的模糊推理系统。 -
tunefisOptions对象为tunefis函数提供了调整模糊系统的选项,支持多种调整算法和优化类型,可根据不同的问题选择合适的参数进行系统优化。 -
VariableSettings对象用于设置模糊推理系统输入和输出变量的可调参数,方便对系统的参数进行精细调整。
通过合理使用这些对象和函数,我们可以更加高效地开发和优化模糊推理系统,解决实际应用中的各种问题。
graph LR;
A[创建模糊推理系统] --> B[定义系统连接];
B --> C[创建模糊推理系统树];
C --> D[创建tunefisOptions对象];
D --> E[准备输入输出数据];
E --> F[使用tunefis函数调整系统];
F --> G[获取变量可调设置];
G --> H[设置变量可调参数];
这个流程图展示了综合应用模糊推理系统对象的主要步骤,从系统创建到参数调整的整个过程。通过遵循这些步骤,我们可以构建出高效、准确的模糊推理系统,满足不同领域的应用需求。
超级会员免费看

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



