39、模糊推理系统对象相关介绍

模糊推理系统对象相关介绍

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[设置变量可调参数];

这个流程图展示了综合应用模糊推理系统对象的主要步骤,从系统创建到参数调整的整个过程。通过遵循这些步骤,我们可以构建出高效、准确的模糊推理系统,满足不同领域的应用需求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值