建立模糊系统使用自定义函数
当你建立一个模糊推理系统(FIS),您可以取代内置的成员函数或推理函数使用自定义函数。您可以创建一个金融中间人,使用这些定制函数模糊逻辑设计应用MATLAB®命令行。
创建FIS的更多信息,请参阅使用模糊逻辑构建模糊系统设计师和在命令行构建模糊系统。
自定义隶属度函数
您可以创建自定义隶属度函数和模糊推理过程中使用它们。这些函数的值必须介于0和1。隶属度函数的属性的更多信息,参见隶属度函数。
当你创建一个自定义隶属函数,必须将其保存在您当前的工作目录或MATLAB路径。然后你可以设计一个FIS,使用自定义命令行或隶属函数模糊逻辑设计应用程序。
下面是一个多步自定义隶属函数的一个例子custmf1
,这取决于8参数之间0
和10
。
%函数来生成一个多步自定义隶属函数使用8参数为输入参数x %函数= custmf1 (x, params)为i = 1:长度(x)如果x(我)< params (1) y (i) =参数(1);elseifx(我)< params (2) y (i) =参数(2);elseifx(我)< params (3) y (i) = params (3);elseifx(我)< params (4) y (i) =参数(4);elseifx(我)< params (5) y (i) = params (5);elseifx(我)< params (6) y (i) = params (6);elseifx(我)< params (7) y (i) = params (7);elseifx(我)< = params (8) y (i) = params (8);其他的y (i) = 0;结束结束%的规模输出区间[0,1]。= 0.1 * y ';结束
使用模糊逻辑设计师指定自定义隶属度函数
使用一个自定义成员函数在设计FIS时使用模糊逻辑设计应用程序,首先选择相应的变量系统浏览器。然后,在添加组件画廊,点击曼氏金融。
应用程序添加一个默认三角形隶属函数选择的变量。
在属性编辑器:
在范围字段中,指定一个输入范围相匹配的预期范围的隶属函数。
在的名字隶属函数列,指定一个名称。
在类型列,指定自定义隶属函数的名称。
在参数列中,输入隶属函数参数。
来验证你的隶属函数的外观,选择的隶属函数系统浏览器并打开隶属函数编辑器。
以下特性不支持自定义隶属度函数:金宝app
交互地调整参数的自定义隶属函数隶属函数编辑器。
自动分配自定义隶属度函数在一个变量的范围。
定义定制的推理功能
根据FIS你设计的类型,您可以取代内置的,或者暗示,聚合和去模糊化推理方法使用自定义函数。为每种类型的推理功能,下表列出了FIS支持使用自定义函数的对象。金宝app
推理函数 | 金宝app支持FIS对象 |
---|---|
和 | 所有FIS对象 |
或 | |
含义 |
|
聚合 | |
去模糊化 | 1型Mamdani FIS |
Type-reduction |
|
当你创建一个定制的推理功能,您必须将它保存在你当前的工作目录或MATLAB路径。然后你可以设计一个FIS,使用自定义在命令行或推理功能模糊逻辑设计应用程序。
创建自定义和或功能
自定义和或推理功能必须列在一个矩阵操作一样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
最小值
沿着第一单体运营维度。两个数组,
x
和y
,最小值
返回一个数组的大小一样大x
或y
与最低的元素x
或y
。的输入参数可以是一个标量。x = [1 2;3 4];y = [2 2;2 2];min (x, y)
ans = 1 2 2 2
在模糊逻辑工具箱™软件:
和推理函数执行一个元素,元素的矩阵操作,类似于命令
min (x, y)
。或推理函数执行一个元素,元素的矩阵操作,类似于命令
max (x, y)
。
创建自定义暗示功能
定制意味着函数必须以相同的方式操作的MATLAB函数马克斯
,最小值
,刺激
。您的自定义含义必须是一个函数T规范模糊交叉操作。有关更多信息,请参见额外的模糊算子。
一个影响函数必须支持一个或两个输入,因为软件调用函数在两个金宝app方面。
计算输出模糊集值使用的发射强度规则和相应的输出隶属度函数。在这种情况下,软件调用意味着函数使用两个输入如下。
outputmf impvals = customimp (w)
w
——发射强度的多个规则,指定为一个Nr——- - - - - -N年代矩阵。在这里,Nr规则和数量吗N年代是样品的数量的输出隶属度函数。w (:, j) = w (: 1)
对所有j。w(我,1)
的发射强度吗我规则。outputmf
——输出隶属函数值,指定为一个Nr——- - - - - -N年代矩阵。outputmf(我,:)
包含的数据我输出隶属函数。
计算输出模糊值使用单一规则的发射强度和相应的输出隶属函数,对于一个给定的样本。在这种情况下,软件调用意味着函数使用一个输入,类似于下面的例子:
impval = customimp ([w outputmf])
w
和outputmf
的发射强度标量值代表一个规则和相应的输出隶属函数值,对于一个给定的样本。
下面是一个例子,一个有界产品定制的含义与二进制映射函数 。[1]
函数y = customimp (x1, x2)如果输入参数个数= = 1% x1假定为非空的列向量或矩阵。minVal = 0(1、大小(x1, 2));y = 1(1、尺寸(x1, 2));为i = 1:尺寸(x1, 1) y = max (minVal, sum ((y; x1(我,:)))1);结束其他的% x1和x2假定为非空的矩阵。minVal = 0(1、大小(x1, 2));y = 0(大小(x1));为i = 1:尺寸(x1, 1) y(我:)= max (minVal, sum ((x1(我:);x2(我,:)))1);结束结束结束
请注意
定制意味着函数为Sugeno系统不支持。金宝app
创建自定义聚合函数
自定义聚合函数必须以相同的方式操作的MATLAB函数马克斯
,最小值
,刺激
和必须的形式y = customagg (x)
。您的自定义含义必须是一个函数T-conorm (年代规范)模糊交叉操作。有关更多信息,请参见额外的模糊算子。
x
是一个Nv——- - - - - -Nr矩阵,截断的列表输出函数返回的每个规则的暗示方法。Nv输出变量的数量和吗Nr是规则的数量。聚合方法的输出是一个每个输出变量的模糊集。
下面是一个例子,一个有界和自定义聚合函数与二进制映射 。[1]
函数y = customagg (x) maxVal =(1、尺寸(x, 2));y = 0(1、尺寸(x, 2));为i = 1:尺寸(x, 1) y = min (maxVal, sum ((y; x(我,:))));结束结束
请注意
Sugeno系统不支持自定义聚合函数。金宝app
创建自定义去模糊化函数
自定义表单的去模糊化函数必须y = customdefuzz (x, ymf)
,在那里x
是向量中的值的隶属函数的输入范围和ymf
包含每个的隶属函数的值x
价值。
下面是一个定制的去模糊化函数的一个例子。
函数defuzzfun = customdefuzz (x, ymf) total_area =总和(ymf);defuzzfun = (ymf。* x) / total_area总和;结束
请注意
定制的去模糊化函数为Sugeno系统不支持。金宝app
创建自定义Type-Reduction函数
对于2型模糊推理系统,您可以指定一个自定义type-reduction函数。这个函数必须的形式y = customtr (x, umf lmf)
,在那里x
是向量中的值的隶属函数的输入范围。umf
和lmf
各自的价值观是上下隶属函数为每个x
价值。输出y
是一个双元素质心的行向量cl,cR]。
减少有关类型的更多信息,请参阅2型模糊推理系统。
默认情况下,2型Sugeno系统只支持一种加权平均的类型。金宝app下面的自定义type-reduction函数实现了加权和的形式还原Sugeno系统类型。
函数y = customtr (x, umf lmf) y = 0 (1、2);y (1) = (x。* umf)总和;y (2) = (x。* lmf)总和;结束
指定自定义使用模糊逻辑推理函数设计师
使用自定义推理功能在设计FIS时使用模糊逻辑设计应用程序,第一个选择的金融中间人系统浏览器。然后,在属性编辑器,输入自定义函数的名称在相应的推理功能。
此表显示了属性编辑器为每种类型的推理功能。
推理函数 | 属性编辑器领域 |
---|---|
和 | 和方法 |
或 | 或方法 |
含义 | 暗示的方法 |
聚合 | 聚合方法 |
去模糊化 | 去模糊化方法 |
Type-reduction | Type-reduction方法 |
在命令行中指定自定义推理功能
使用自定义推理功能在设计FIS MATLAB命令行,设置对应的FIS对象属性的自定义推理函数名。例如,下面的命令集FIS的聚合函数myFIS
到customagg
函数。
myFIS。AggregationMethod =“customagg”;
此表显示了每种类型的推理的FIS对象属性的功能。
推理函数 | FIS对象属性 |
---|---|
和 | AndMethod |
或 | OrMethod |
含义 | ImplicationMethod |
聚合 | AggregationMethod |
去模糊化 | DefuzzificationMethod |
Type-reduction | TypeReductionMethod |
使用自定义函数代码生成
您可以使用自定义函数在模糊推理系统为您生成代码。在代码生成的模糊系统的更多信息,见部署模糊推理系统。
如果你使用nondouble数据类型生成的代码,您必须传播数据类型定制函数输入参数的输出参数。例如,下面的自定义聚合函数维护的数据类型x
在y
使用的
和0
功能与“喜欢”
论点。
函数y = customagg (x)% # codegenmaxVal = 1(1、大小(x, 2),“喜欢”,x);y = 0(1、大小(x, 2),“喜欢”,x);为i = 1:尺寸(x, 1) y = min (maxVal, sum ((y; x(我,:))));结束结束
有关编写函数的更多信息,支持C / c++代码生成,明白了金宝appMATLAB编程代码生成(MATLAB编码器)。
引用
[1]Mizumoto Masaharu。“模糊的图像表示连接词,第二部分:补偿算子和自对偶算子的病例。”模糊集和系统32岁的没有。1(1989年8月):45 - 79。https://doi.org/10.1016/0165 - 0114 (89) 90087 - 0。