当你建立一个模糊推理系统时,如模糊推理过程,您可以用自定义函数替换内置的成员关系函数、推断函数或两者。控件中的自定义函数构建模糊推理系统模糊逻辑设计应用程序。
利用计算机中的自定义函数建立模糊推理系统模糊逻辑设计应用程序:
打开模糊逻辑设计.在MATLAB®命令行,键入以下命令。
fuzzyLogicDesigner
指定模糊系统的输入和输出数量,如中所述模糊逻辑设计.
创建自定义成员关系函数,并用它们替换内置成员关系函数,如指定自定义成员函数.
成员关系函数定义如何将输入空间中的每个点映射到0到1之间的成员关系值。
使用规则编辑器创建规则,如中所述规则编辑器.
规则定义了输入和输出之间的逻辑关系。
创建自定义推理函数,并用它们替换内置推理函数,如中所述指定自定义推理函数.
推理方法包括AND,OR,言下之意,聚集和模糊化的方法。此操作产生用于模糊系统的输出值。
下一个图显示了倾翻问题示例,其中内置含意,聚合和去模糊化函数被自定义函数替换,customimp
,customagg
和customdefuzz
,分别。
选择视图>表面在Surface Viewer中查看模糊推理系统的输出,如面查看器.
您可以创建自定义成员函数并在模糊推理过程中使用它们。这些函数的值必须在0到1之间。有关成员关系函数属性的更多信息,请参见隶属度函数.
要创建自定义成员资格函数并替换内置成员资格函数,请执行以下操作:
创建一个MATLAB函数,并将其保存在当前工作文件夹中。
要了解如何创建MATLAB函数,请参见脚本和函数.
下面的代码是一个多步骤自定义成员函数的示例,custmf1
,这取决于八个参数之间的关系0
和10
.
函数生成多步骤自定义成员函数%为输入参数x使用8个参数作用= custmf1 (x, params)为i=1:长度(x)如果x(i)<参数(1)y(i)=参数(1);elseifX(ⅰ)elseifX (i) < params(3) y(i) = params(3);elseifX (i) < params(4) y(i) = params(4);elseifx(i)<参数(5)y(i)=参数(5);elseifX (i) < params(6) y(i) = params(6);elseifx(i)<参数(7)y(i)=参数(7);elseifx(i)<参数(8)y(i)=参数(8);其他的y (i) = 0;结束结束= 0.1 * y ';%缩放输出,使其介于0和1之间。结束
打开模糊逻辑设计应用程序。
fuzzyLogicDesigner
模糊逻辑设计以默认FIS名称打开,无标题
,包含一个输入,input1,和一个输出,输出1.
在里面模糊逻辑设计选择编辑>隶属度函数打开隶属函数编辑器。
三个三角形的隶属函数input1默认情况下会显示出来。
要在成员函数编辑器中将默认成员函数替换为自定义函数:
选择编辑>删除所有MFs的默认成员关系函数input1.
选择编辑>添加自定义MF打开“自定义成员函数”对话框。
要指定自定义函数,请在“自定义成员函数”对话框中:
在MF名称字段中,指定自定义成员资格函数的名称。对于本例,请使用名称customMF1
请注意
添加其他自定义成员资格函数时,请指定不同的MF名称对于每个函数。
在M文件函数名字段中,指定自定义成员资格函数文件的名称。
在参数列表,指定参数向量。在本例中使用向量[0 1 2 4 6 8 9 10]
.
这些值确定的隶属函数的形状和位置,并且功能是使用这些参数值评价。
请注意
参数向量的长度必须大于或等于自定义成员资格函数中的参数数。
使用custmf1
示例,自定义成员函数对话框如下图所示。
点击好啊添加自定义隶属函数。
指定两个范围和显示范围是10 [0]
以匹配自定义成员函数的范围。
成员关系函数编辑器显示自定义成员关系函数图。
此操作还将自定义成员资格函数添加到规则查看器中,并使其可用于为模糊推理过程创建规则。要在规则查看器中查看自定义函数,请选择编辑>规则在任何一种情况下模糊逻辑设计或成员函数编辑器。
为添加自定义成员资格函数的步骤输出1,在成员函数编辑器中选择它,并重复步骤4和5。
您还可以在MATLAB命令行中向FIS添加自定义成员函数custmf1
对于第一个输入变量,input1
在金融机构中,myFIS
,并将其命名为customMF1
,输入以下内容:
myFIS=addMF(myFIS,“input1”,“custmf1”,[0 1 2 4 6 8 9 10],“名字”,“自定义MF1”);
您可以替换内置的AND,OR,言下之意,聚集和模糊化的推理方法与自定义函数。创建自定义推理功能后,将其保存在当前的工作文件夹。要了解如何使用自定义推理函数建立模糊系统,请参阅在模糊逻辑设计器中使用自定义函数建立模糊推理系统部分
创建和指定用于构建模糊推理系统的函数的指导方针将在以下部分中描述。
自定义的AND和OR推理函数必须在矩阵上按列操作,与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)
答案:1 2 3 4
分钟(x)
沿着第一非单维操作。
功能min (x, y)
返回与相同大小的数组x
和y
从最小的元素x
或y
. 任何一个输入参数都可以是标量。功能,如最大值
和刺激
以类似的方式操作。
在工具箱中,AND隐含方法执行一个元素一个元素的矩阵运算,类似于MATLAB函数min (x, y)
.
A = [1 2;3 4];B = [2 2;2 2];分钟(a, b)
Ans = 1 2 2 2
OR隐含方法执行一个元素一个元素的矩阵运算,类似于MATLAB函数max (x, y)
.
自定义隐含函数必须以与MATLAB函数相同的方式操作最大值
,闵
或刺激
.您的自定义暗示函数必须是T-范数模糊交叉运算。有关更多信息,请参阅附加模糊算子.
一个含义功能必须支持一个或两个输入,因为该软件要求在两个方万博1manbetx面的功能:
利用所有规则的烧成强度和相应的输出隶属度函数计算输出模糊集值。在这种情况下,软件使用两个输入调用隐含函数,类似于下面的示例:
impvals=customimp(w,outputmf)
w
—多个规则的发射强度,指定为天然橡胶——- - - - - -ns矩阵。在这里,天然橡胶是多少规则和ns是的输出隶属函数的样本的数目。
w (:, j) = w (: 1)
对所有j.w(i,1)
是烧成的强度吗我th规则。
输出mf
-输出成员函数值,指定为天然橡胶——- - - - - -ns矩阵。在这里,天然橡胶是多少规则和ns是的输出隶属函数的样本的数目。
outputmf(I,:)
包含的数据我th输出隶属函数。
对给定的样本,利用单个规则的烧成强度和相应的输出隶属度函数计算输出模糊值。在这种情况下,软件使用一个输入调用隐含函数,类似于下面的示例:
Impval = customimp([w outputmf])
w
和输出mf
是表示给定示例的规则的烧成强度和相应输出隶属函数值的标量值。
以下是具有二进制映射的有界产品定制蕴涵函数的例子 .[1]
作用y = customimp (x1, x2)如果纳金==1% x1假定为非空列向量或矩阵。minVal=0(1,大小(x1,2));y=1(1,大小(x1,2));为i=1:size(x1,1)y=max(minVal,sum([y;x1(i,:)])-1);结束其他的% x1和x2假设为非空矩阵。MINVAL =零(1,尺寸(X1,2));Y =零(尺寸(X1));为i = 1:尺寸(x1, 1) y(我:)= max (minVal, sum ((x1(我:);x2(我,:)))1);结束结束结束
请注意
sugeno类型的系统不支持自定义暗示函数。万博1manbetx
自定义聚合函数必须以与MATLAB函数相同的方式操作最大值
,闵
或刺激
而且必须是形式y=自定义聚合(x)
.您的自定义暗示函数必须是T-conorm (年代-范数)模糊交叉运算。有关详细信息,请参阅附加模糊算子.
x是一个内华达州——- - - - - -天然橡胶矩阵,它是每个规则的隐含方法返回的截断的输出函数列表。内华达州是输出变量的数量,并且天然橡胶是规则的数量。聚合方法的输出是每个输出变量的一个模糊集。
下面是一个带有二进制映射的有界和自定义聚合函数的示例 .[1]
作用Y = customagg(X)= MAXVAL一(1,尺寸(X,2));Y =零(1,尺寸(X,2));为i = 1:size(x,1) y = min(maxVal,sum([y;x(i,)]));结束结束
请注意
sugeno类型的系统不支持自定义聚合函数。万博1manbetx
自定义解模糊函数的形式必须为y=customdefuzz(x,ymf)
,在那里x
向量的值是否在隶属函数的输入范围内,和YMF
包含隶属函数的每个值x
价值。
下面是自定义去模糊化函数的示例:
作用Defuzzfun = customdefuzz(x,ymf) total_area = sum(ymf);defuzzfun = (ymf。* x) / total_area总和;结束
请注意
Sugeno类型的系统不支持自定义解模糊功能。万博1manbetx
创建并保存自定义推理函数后,您可以在命令行或使用模糊推理系统中指定该函数模糊逻辑设计.
在中指定自定义推理函数的步骤模糊逻辑设计,请使用以下步骤。
请注意
为了在中指定自定义推理函数模糊逻辑设计,您必须首先向FIS中至少添加一条规则。
在的左下面板中模糊逻辑设计选择自定义
从对应于要为其指定自定义函数的推理方法的下拉菜单中。
这样做将打开一个对话框,您可以在其中指定自定义推理函数的名称。
在方法名称字段中,指定自定义推理函数的名称,然后单击好啊.
在构建模糊推理系统时,自定义函数代替内置函数。
要为其他推理方法指定自定义函数,请重复步骤1和步骤2。
为FIS指定自定义推理函数(myFIS
),将相应的FIS对象属性设置为推理函数名。例如,要添加自定义:
解模糊方法,类型
myFIS。DefuzzificationMethod =“customdefuzz”;
哪里customdefuzz
是自定义反模糊化函数的名称。
暗示的方法,类型
myFIS。ImplicationMethod =“海关IMP”;
哪里customimp
是自定义隐含函数的名称。
聚合方法,类型
myFIS.AggregationMethod=“customagg”;
哪里customagg
是自定义聚合函数的名称。
对于2型模糊推理系统,您可以指定一个自定义的类型缩减函数。这个函数必须是有形式的y = customtr (x, umf lmf)
,在那里x
是隶属函数输入范围中的值向量。umf
和lmf
每一项的上、下成员函数是否各自的值x
价值。输出y
是质心的两元素行向量[cl,cR].
有关类型缩减的详细信息,请参见二类模糊推理系统.
默认情况下,类型2的关野系统支持还原类型的唯一的加权平均形式。万博1manbetx下面的自定义类型还原功能工具还原型用于关野系统的加权和的形式。
作用Y = customtr(x,umf,ymf) Y = 0 (1,2);y (1) = (x。* umf)总和;y (2) = (x。* lmf)总和;结束
为FIS指定自定义类型缩减函数(myFIS
)在MATLAB命令行中,键入
myFIS。DTypeReductionMethod =“customtr”;
哪里海关
是自定义反模糊化函数的名称。
您可以为您生成代码模糊推理系统使用自定义功能。有关代码生成模糊系统的更多信息,请参阅部署模糊推理系统.
如果对生成的代码使用非双精度数据类型,则必须将该数据类型从自定义函数的输入参数传播到输出参数x
在y
使用的
和0
和“喜欢”
争论。
作用y=customagg(x)maxVal=one(1,大小(x,2),“喜欢”,X);Y =零(1,尺寸(X,2),“喜欢”,X);为i = 1:size(x,1) y = min(maxVal,sum([y;x(i,)]));结束结束
有关编写支持C/ c++代码生成的函数的更多信息,请参见万博1manbetx代码生成的MATLAB编程(MATLAB编码器).
[1] Mizumoto Masaharu。模糊连接词的图示,第二部分:补偿算子和自对偶算子的应用。模糊集与系统32,第1号(1989年8月):45-79。https://doi.org/10.1016/0165-0114(89)90087-0.