主要内容

使用自定义函数构建模糊系统

在构建模糊推理系统(FIS)时,可以用自定义函数替换内置的隶属函数或推理函数。类中使用这些自定义函数创建FIS模糊逻辑设计器app和MATLAB®命令行。

有关创建FIS的详细信息,请参见使用模糊逻辑设计器构建模糊系统而且在命令行构建模糊系统

定义自定义成员函数

您可以创建自定义成员函数,并在模糊推理过程中使用它们。这些函数的值必须在0和1之间。有关成员函数属性的详细信息,请参见隶属度函数

创建自定义成员函数时,必须将其保存在当前工作文件夹或MATLAB路径中。然后,可以在命令行或中设计使用自定义成员关系函数的FIS模糊逻辑设计器应用程序。

下面是一个多步骤自定义成员函数的示例custmf1,这取决于八个参数之间0而且10

函数生成一个多步骤自定义成员函数%使用8个参数作为输入参数x函数Out = custmf1(x,params)I = 1:长度如果X (i) <参数(1)y(i) =参数(1);elseifX (i) < params(2) y(i) = params(2);elseifX (i) < params(3) y(i) = params(3);elseifX (i) <参数(4)y(i) =参数(4);elseifX (i) <参数(5)y(i) =参数(5);elseifX (i) < params(6) y(i) = params(6);elseifX (i) < params(7) y(i) = params(7);elseifX (i) <= params(8) y(i) = params(8);其他的Y (i) = 0;结束结束将输出扩展到范围[0,1]。Out = 0.1*y';结束

使用模糊逻辑设计器指定自定义成员函数

控件设计FIS时使用自定义成员关系函数模糊逻辑设计器应用程序中,首先选择相应的变量系统浏览器.然后,在添加组件画廊,点击曼氏金融

应用程序,在系统浏览器中选择第一个输入,并在工具条库中突出显示MF选项

该应用程序将默认三角成员函数添加到所选变量。

属性编辑器

  1. 范围字段,指定与成员函数的期望范围匹配的输入范围。

  2. 的名字列时,为成员函数指定名称。

  3. 类型列时,指定自定义成员关系函数的名称。

  4. 参数列中,输入隶属度函数参数。

属性编辑器显示输入范围[1,10]和自定义MF wof类型customf1参数[0 1 2 4 6 8 9 10]

属性中的成员函数,以验证成员函数的外观系统浏览器打开会员功能编辑

在系统浏览器中选择自定义MF的应用程序,并在成员函数编辑器中逐步增加MF图

控件中自定义成员关系函数的参数会员功能编辑不支持。金宝app

定义自定义推理函数

根据所设计的FIS的类型,可以用自定义函数替换内置的AND、OR、蕴涵、聚合和去模糊化推理方法。对于每种类型的推断函数,下表列出了支持使用自定义函数的FIS对象。金宝app

推理函数 金宝app支持的FIS对象
所有FIS对象
含义
  • Type-1 Mamdani FIS

  • 2型Mamdani FIS

聚合
去模糊化 Type-1 Mamdani FIS
Type-reduction
  • 2型Mamdani FIS

  • Type-2 Sugeno FIS

创建自定义推理函数时,必须将其保存在当前工作文件夹或MATLAB路径中。然后,可以在命令行或中设计使用自定义推断函数的FIS模糊逻辑设计器应用程序。

创建自定义AND和OR函数

自定义与或推理函数必须以与MATLAB函数相同的方式在矩阵上按列操作马克斯最小值,刺激.例如:

  • 对于行向量或列向量x最小值返回最小值元素。

    X = [1 2 3 4];分钟(x)
    Ans = 1
  • 对于一个矩阵x最小值返回包含每列中最小元素的行向量。

    X = [1 2 3 4;5 6 7 8;9 10 11 12];分钟(x)
    Ans = 1 2 3 4
    对于N-D矩阵,最小值沿着第一个非单维度操作。

  • 对于两个数组,x而且y最小值返回与较大的数组相同大小的数组xy用最小的元素xy.输入参数中的任何一个都可以是标量。

    X = [1 2;3 4];Y = [2 2;2 2];min (x, y)
    Ans = 1 2 2 2

在模糊逻辑工具箱™软件中:

  • 与推理函数执行一个逐个元素的矩阵操作,类似于命令min (x, y)

  • 与命令类似,OR推断函数执行逐元素矩阵操作max (x, y)

创建自定义含义函数

自定义蕴涵函数必须以与MATLAB函数相同的方式操作马克斯最小值,刺激.您的自定义隐含函数必须是T-范数模糊交叉运算。有关更多信息,请参见附加模糊算子

隐含函数必须支持一个或两个输入,因为软件以两种方式调用函数金宝app。

  • 利用所有规则的触发强度和相应的输出隶属度函数计算输出模糊集值。在这种情况下,软件使用如下两个输入调用隐含函数。

    Impvals = customimp(w,outputmf)
    • w-发射强度的多个规则,指定为Nr——- - - - - -N年代矩阵。在这里,Nr是多少规则和N年代是输出隶属度函数的样本数。

      W (:,j) = W (:,1)对所有jw(我,1)是烧制的强度吗规则。

    • outputmf-输出隶属函数值,指定为Nr——- - - - - -N年代矩阵。outputmf(我,:)控件的数据输出隶属函数。

  • 对于给定的样本,使用单个规则的触发强度和相应的输出隶属度函数计算输出模糊值。在这种情况下,软件使用一个输入调用隐含函数,类似于下面的例子:

    Impval = customimp([w outputmf])

    w而且outputmf表示给定样本规则的触发强度和相应的输出隶属度函数值的标量值。

下面是一个带有二进制映射的有界乘积自定义隐含函数的示例 T 一个 b ) 马克斯 0 一个 + b 1 [1]

函数Y = customimp(x1,x2)如果Nargin == 1% x1假设为非空列向量或矩阵。minVal = 0 (1,size(x1,2));Y = ones(1,size(x1,2));i = 1:尺寸(x1, 1) y = max (minVal, sum ((y; x1(我,:)))1);结束其他的% x1和x2假设为非空矩阵。minVal = 0 (1,size(x1,2));Y = 0(大小(x1));i = 1:尺寸(x1, 1) y(我:)= max (minVal, sum ((x1(我:);x2(我,:)))1);结束结束结束

请注意

Sugeno系统不支持自定义隐含函数。金宝app

创建自定义聚合函数

自定义聚合函数必须以与MATLAB函数相同的方式操作马克斯最小值,刺激必须是这种形式Y = customagg(x).您的自定义隐含函数必须是T-conorm (年代-norm)模糊交集运算。有关更多信息,请参见附加模糊算子

x是一个Nv——- - - - - -Nr矩阵,它是由隐含方法为每个规则返回的截断输出函数的列表。Nv输出变量的数量和Nr是规则的数量。聚合方法的输出是每个输出变量的一个模糊集。

下面是一个带有二进制映射的有界和自定义聚合函数的示例 年代 一个 b ) 最小值 一个 + b 1 [1]

函数y = customagg(x) maxVal = ones(1,size(x,2));Y = 0 (1,size(x,2));i = 1:size(x,1) y = min(maxVal,sum([y;x(i,:)]));结束结束

请注意

Sugeno系统不支持自定义聚合函数。金宝app

创建自定义去模糊化函数

自定义去模糊化函数的形式必须是Y = customdefuzz(x,ymf),在那里x向量的值是否在隶属度函数的输入范围和ymf包含每个成员函数的值x价值。

下面是一个自定义去模糊化函数的例子。

函数Defuzzfun = customdefuzz(x,ymf) total_area = sum(ymf);Defuzzfun = sum(ymf.*x)/total_area;结束

请注意

Sugeno系统不支持自定义去模糊化功能。金宝app

创建自定义类型缩减函数

对于2型模糊推理系统,您可以指定一个自定义的类型缩减函数。这个函数必须是这样的形式Y = customtr(x,umf,lmf),在那里x是隶属度函数输入范围内值的向量。umf而且lmf上隶属度和下隶属度各自的值是各自的函数吗x价值。输出y是质心的两元行向量[clcR]。

有关类型简化的详细信息,请参见2型模糊推理系统

默认情况下,type-2 Sugeno系统只支持类型缩减的加权平均形金宝app式。下面的自定义类型缩减函数为Sugeno系统实现了一种加权和形式的类型缩减。

函数Y = customtr(x,umf,lmf) Y = 0 (1,2);Y (1) = sum(x.*umf);Y (2) = sum(x.*lmf);结束

使用模糊逻辑设计器指定自定义推理函数

类在设计FIS时使用自定义推理函数模糊逻辑设计器应用程序中,首先选择FIS系统浏览器.然后,在属性编辑器,在相应的推理函数字段中输入自定义函数的名称。

在左边的系统浏览器中选择type-2 FIS的应用程序,在右边突出显示FIS属性。

下表显示了属性编辑器字段为每种类型的推断函数。

推理函数 属性编辑字段
和方法
或方法
含义 暗示的方法
聚合 聚合方法
去模糊化 去模糊化方法
Type-reduction Type-reduction方法

在命令行中指定自定义推断函数

若要在MATLAB命令行中设计FIS时使用自定义推理函数,请将相应的FIS对象属性设置为自定义推理函数名称。例如,设置FIS的聚合功能myFIScustomagg函数。

myFIS。AggregationMethod =“customagg”

下表显示了每种类型推断函数的FIS对象属性。

推理函数 FIS对象属性
AndMethod
OrMethod
含义 ImplicationMethod
聚合 AggregationMethod
去模糊化 DefuzzificationMethod
Type-reduction TypeReductionMethod

在代码生成中使用自定义函数

您可以在为其生成代码的模糊推理系统中使用自定义函数。有关模糊系统代码生成的更多信息,请参见部署模糊推理系统

如果为生成的代码使用非双精度数据类型,则必须将数据类型从自定义函数的输入参数传播到输出参数。例如,以下自定义聚合函数维护的数据类型为xy使用而且0函数具有“喜欢”论点。

函数Y = customagg(x)% # codegenmaxVal = ones(1,size(x,2),“喜欢”, x);Y = 0 (1,size(x,2),“喜欢”, x);i = 1:size(x,1) y = min(maxVal,sum([y;x(i,:)]));结束结束

有关编写支持C/ c++代码生成的函数的更多信息,请参见金宝app代码生成的MATLAB编程(MATLAB编码器)

参考文献

[1]水本,雅春。模糊连接词的图示表示,第2部分:补偿算子和自对偶算子的情况。模糊集与系统32岁的没有。1(1989年8月):45-79。https://doi.org/10.1016/0165 - 0114 (89) 90087 - 0

另请参阅

相关的话题