建立模糊系统使用自定义函数
建立模糊推理系统在模糊逻辑设计师使用自定义函数
当你建立一个模糊推理系统,所述模糊推理过程,可以取代内置的隶属度函数,推理功能,或者两者都使用自定义函数。在本节中,您将学习如何构建一个模糊推理系统中使用自定义函数模糊逻辑设计应用程序。
建立一个模糊推理系统中使用自定义函数模糊逻辑设计应用:
开放模糊逻辑设计。在MATLAB®命令行中,键入以下命令。
fuzzyLogicDesigner
指定数量的模糊系统的输入和输出,所述模糊逻辑设计。
创建自定义隶属度函数,取代内置的隶属度函数,描述指定自定义隶属度函数。
隶属度函数定义如何输入空间中的每个点被映射到一个值在0和1之间。
创建规则使用规则编辑器,所述规则编辑器。
规则定义的输入和输出之间的逻辑关系。
创建自定义推理功能,并取代内置的推理功能,如前所述指定自定义推理功能。
推理方法包括,或者暗示,聚合和去模糊化方法。这个动作生成模糊系统的输出值。
下一个图显示了示例,其中内置的小费问题含义,聚合和去模糊化自定义函数,函数替换
customimp
,customagg
,customdefuzz
,分别。选择视图>表面查看输出的模糊推理系统表面查看器,所述面查看器。
指定自定义隶属度函数
您可以创建自定义隶属度函数和模糊推理过程中使用它们。这些函数的值必须介于0和1。隶属度函数的属性的更多信息,参见隶属度函数。
要创建一个自定义隶属函数,取代内置的成员函数:
创建一个MATLAB函数,并将其保存在当前工作文件夹。
学习如何创建MATLAB函数,看看脚本和函数。
下面的代码是一个多步自定义隶属函数,
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 * y ';%的规模输出躺在0和1之间。结束
打开模糊逻辑设计应用程序。
fuzzyLogicDesigner
模糊逻辑设计打开默认FIS的名字,
无标题的
,包含一个输入,input1和一个输出,output1。在模糊逻辑设计中,选择编辑>隶属度函数打开隶属函数编辑器。
三个三角形隶属度函数input1默认显示。
替换默认的隶属函数和自定义函数的隶属函数编辑器:
选择编辑>删除所有MFs删除默认的隶属度函数input1。
选择编辑>添加自定义MF打开自定义隶属函数对话框。
指定一个自定义函数,定义隶属函数对话框:
在MF的名字字段中,指定自定义隶属函数的名称。对于这个示例,使用这个名字
customMF1
请注意
当添加额外的自定义隶属度函数,指定一个不同的MF的名字为每一个函数。
在m文件函数名字段中,指定自定义隶属函数文件的名称。
在参数列表,指定向量的参数。对于这个示例使用向量
[0 1 2 4 6 8 9 10]
。这些值确定隶属函数的形状和位置,使用这些参数值和函数求值。
请注意
参数向量的长度必须大于或等于自定义隶属函数参数的数量。
使用
custmf1
在步骤1中,自定义隶属函数对话框看起来类似于下图。点击好吧添加自定义隶属函数。
指定范围和显示范围是
10 [0]
与自定义隶属函数的范围。
隶属函数编辑器显示自定义隶属函数图。
这个动作还增加了自定义隶属函数规则查看器,并使它可用于创建规则的模糊推理过程。查看器查看自定义函数的规则,选择编辑>规则在这两种模糊逻辑设计或隶属函数编辑器。
添加自定义隶属度函数output1在隶属函数编辑器中,选择它,并重复步骤4和5。
您还可以添加一个自定义隶属函数FIS的MATLAB命令行。例如,添加custmf1
第一个输入变量,input1
金融中间人,myFIS
,并命名为customMF1
输入以下:
myFIS = addMF (myFIS,“input1”,“custmf1”[0 1 2 4 6 8 9 10],“名字”,“customMF1”);
指定自定义推理功能
你可以取代内置的和,或者暗示,聚合和去模糊化推理方法使用自定义函数。在您创建自定义推理功能,将其保存在当前工作目录。学习如何使用自定义推理函数,建立模糊系统看到的建立模糊推理系统在模糊逻辑设计师使用自定义函数部分。
创建并指定的准则建立模糊推理系统的功能将在以下小节中描述。
创建自定义和或功能
自定义和或推理功能必须列在一个矩阵,以同样的方式作为MATLAB函数马克斯
,最小值
,或刺激
。
行或列向量x
,分钟(x)
返回最小元素。
x = (1 2 3 4);分钟(x)
ans = 1
为一个矩阵x
,分钟(x)
返回一个行向量,其中包含每一列的最小元素。
x = (1 2 3 4 5 6 7 8; 9 10 11 12);分钟(x)
ans = 1 2 3 4
分钟(x)
沿着第一单体运营维度。
这个函数min (x, y)
返回一个数组大小一样x
和y
与最低的元素x
或y
。的输入参数可以是一个标量。等功能马克斯
,刺激
以类似的方式运作。
工具箱,并暗示方法执行一个元素,元素的矩阵操作,类似于MATLAB函数min (x, y)
。
= (1 - 2;3 4];b = [2 2;2 2];分钟(a, b)
ans = 1 2 2 2
或者暗示的方法执行一个元素的矩阵操作,类似于MATLAB函数max (x, y)
。
创建自定义暗示功能
定制意味着函数必须以相同的方式操作的MATLAB函数马克斯
,最小值
,或刺激
。您的自定义含义必须是一个函数T规范模糊交叉操作。有关更多信息,请参见额外的模糊算子。
一个影响函数必须支持一个或两个输入,因为软件调用函数在两个金宝app方面:
计算输出模糊集值使用的发射强度规则和相应的输出隶属度函数。在这种情况下,使用两个输入软件调用影响函数,类似于下面的例子:
outputmf impvals = customimp (w)
w
——发射强度的多个规则,指定为一个nr——- - - - - -ns矩阵。在这里,nr规则和数量吗ns是样品的数量的输出隶属度函数。w (:, j) = w (: 1)
对所有j。w(我,1)
的发射强度吗我th规则。outputmf
——输出隶属函数值,指定为一个nr——- - - - - -ns矩阵。在这里,nr规则和数量吗ns是样品的数量的输出隶属度函数。outputmf(我,:)
包含的数据我th输出隶属函数。
计算输出模糊值使用单一规则的发射强度和相应的输出隶属函数,对于一个给定的样本。在这种情况下,软件调用意味着函数使用一个输入,类似于下面的例子:
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-type系统不支持。金宝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-type系统不支持自定义聚合函数。金宝app
创建自定义去模糊化函数
自定义表单的去模糊化函数必须y = customdefuzz (x, ymf)
,在那里x
是向量中的值的隶属函数的输入范围,然后呢ymf
包含每个的隶属函数的值x
价值。
下面是一个定制的去模糊化函数的例子:
函数defuzzfun = customdefuzz (x, ymf) total_area =总和(ymf);defuzzfun = (ymf。* x) / total_area总和;结束
请注意
定制的去模糊化函数为Sugeno-type系统不支持。金宝app
指定自定义推理函数在模糊推理系统
在您创建并保存一个定制的推理功能,您可以指定函数的模糊推理系统在命令行或使用模糊逻辑设计。
指定自定义推理功能模糊逻辑设计使用以下步骤。
请注意
为了指定一个自定义推理功能模糊逻辑设计,您必须首先FIS添加至少一个规则。
在左下方面板模糊逻辑设计中,选择
自定义
从下拉菜单中相应的推理方法你想指定自定义函数。这样做打开一个对话框,您指定的名称定义推理功能。
在方法名称字段中,指定自定义推理函数的名称,然后单击好吧。
自定义函数取代了内置函数在构建模糊推理系统。
指定自定义函数为其他推理方法,重复步骤1和2。
指定自定义推理功能FIS (myFIS
在MATLAB命令行),将相应的FIS对象属性设置为推理函数名。例如,添加一个自定义:
去模糊化方法,类型
myFIS。DefuzzificationMethod =“customdefuzz”;
在哪里
customdefuzz
是自定义的名字去模糊化函数。暗示的方法,类型
myFIS。ImplicationMethod =“customimp”;
在哪里
customimp
是自定义的名字暗示的功能。聚合方法,类型
myFIS。AggregationMethod =“customagg”;
在哪里
customagg
是自定义聚合函数的名称。
指定自定义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 ymf) y = 0 (1、2);y (1) = (x。* umf)总和;y (2) = (x。* lmf)总和;结束
指定自定义type-reduction FIS函数(myFIS
在MATLAB命令行),类型
myFIS。DTypeReductionMethod =“customtr”;
在哪里customtr
是自定义的名字去模糊化函数。
使用自定义函数代码生成
您可以使用自定义函数在模糊推理系统为您生成代码。在代码生成的模糊系统的更多信息,见部署模糊推理系统。
如果你使用nondouble数据类型生成的代码,您必须传播数据类型定制函数输入参数的输出参数。例如,下面的自定义聚合函数维护的数据类型x
在y
使用的
和0
与“喜欢”
论点。
函数y = customagg (x) maxVal =(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。