1
模式识别与智能计算的MATLAB实现
1.6.4 4.4 模糊逻辑系统及其在科学研究中的应用

4.4 模糊逻辑系统及其在科学研究中的应用

例4.7 在模糊系统的应用研究中,构建隶属度函数是一个比较关键的步骤。隶属度函数的构建可以有多种方法,如例化法、统计法、样板法等。但必须指出,迄今还没有一个一般的、普遍的法则,其构建多少还带有主观性和经验性的成分。

在环境保护中,环境质量评价是一个重要的方面,质量评价是一个模糊评判过程。试构建各级标准水的隶属度函数。

:根据GB3838—88《地面水环境质量标准》,一般将水质污染程度分为五类,即

B=[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ]

其中Ⅰ、Ⅱ、Ⅲ、Ⅳ和Ⅴ分级标准采用《地面水环境质量标准》中的值,据此,可构成以下的隶属度函数(以三级水中的NO3-N为例)。

首先编写一个隶属度函数表达式的M文件NO_3mf:

alt

在MATLAB工作空间输入以下命令:

alt

执行后,可得到图4.3所示的三级标准中“硝酸盐-N”的隶属度函数,对于其他指标,用类似的方法同样得到隶属度函数。

alt

图4.3 水质三级标准中“硝酸盐-N”的隶属度函数

例4.8 为了研究气温与降水的关系,定义四个模糊集:

A1:二月份最低气温(≤5℃)的日数“长”;

A2:冬季极端最低气温“低”;

A3:极端最低气温出现时间“长”;

A4:冬季平均气温“低”。

假设四个模糊集的隶属度函数分别如下:

alt

根据以上这四个隶属度函数,构建表示冬季低温时间“长”、冬季气温“低”和冬季“冻大”程度的模糊集隶属度函数。

:根据题目给出的四个模糊集,可求出表示冬季低温时间“长”的模糊集:

B=A1∪A3

相应的隶属度函数:

fA1∪A3(x)=max(μA1(x),μA3(x))

表示冬季气温“低”的模糊集:

C=A2∪A4

相应的隶属度函数:

fA2∪A4(x)=max(μA1(x),μA4(x))

表示冬季“冻大”程度的模糊集:

E=B∩C

相应的隶属度函数:

fB∩C(x)=min(μB(x),μC(x))

据此,可画出图4.4所示的这些模糊集的隶属度函数:

alt

图4.4 各模糊集的隶属度函数

从上面两个例子中看出,虽然MATLAB模糊系统工具箱中的隶属度函数可满足绝大多数的研究,但隶属函数的构建也可根据实际情况自行确定,并且可以利用模糊运算规则,进行“修饰词”的运算而得到“很大”、“很长”等模糊集的隶属度函数。

如果隶属度函数为f(x),则

·很高的隶属度函数为f2(x);

·有点高的隶属度函数为f1/2(x);

·低的隶属度函数为1-f(x);

·很低的隶属度函数为[1-f(x)]2

·有点低的隶属度函数为[1-f(x)]1/2

·中等的隶属度函数为min{f(x),1-f(x)}。

例4.9 利用模糊理论综合评价污水处理厂运行管理效果。设城市污水处理厂的运行效果主要考虑因素集U=[u1,u2,u3,u4,u5],其中

u1:产量——每天处理污水量(千吨/日)。

u2:质量——BOD5去除率(%)。

u3:质量——SS去除率(%)。

u4:气水比——处理每吨污水消耗的空气量(m3/吨)。

u5:单耗——去除每公斤BOD5耗电量(度/公斤)。

评价结果分为五等级:V=[很好,好,中,差,很差]=[v1,v2,v3,v4,v5]。

其中等级划分标准见表4.3。

表4.3 等级划分标准

alt

请根据每天的运行结果,判断管理情况。

:根据题意,将模糊系统设计成有五个输入,即处理水量、BOD5去除率、SS去除率、气水比和耗电量;一个输出,即评价结果。

五个输入分别设有五个等级,即有五个隶属度函数,具体表达式按等级划分标准所构建的下列隶属度函数进行“修饰词”计算而得到,如“很好”的隶属度函数为f2(x)。一个输出分五个等级,每一等级用高斯型隶属度函数表示。

alt

alt

构建隶属度函数后,就可设计模糊推理系统。

alt

根据设计的模糊系统以及每天的运行数据,就可以判断其运行情况:

alt

·解题过程中设立的规则只是最简单的,即五个指标的等级都是“很好”时,评价才能是“很好”。如果在实际工作中,能根据具体情况,研究指标间的关系,建立其他规则,则该模型会更精确。

·构建的隶属度函数是否合适,对结果有着十分重要的影响。解题时所构建的隶属度函数只是众多函数中的一种。图4.5为处理水量的五个等级的隶属度函数曲线。

alt

图4.5 处理水量的隶属度函数

例4.10 设有三个农业生产方案,各项经济指标如表4.4所列。

表4.4 方案的经济指标值

alt

试评价这三种方案的优劣。

:在前一个例子中,介绍了直接利用MATLAB函数建立FIS系统的过程。在这个例子中将介绍模糊逻辑工具箱的图形用户界面(GUI)建立FIS系统。

设计一个模糊系统,有五个输入,即亩产(三个等级)、单位产量费用(三个等级)、每亩用工(三个等级)、每亩纯收入(三个等级)、土壤肥力(两个等级);一个输出(三个等级)。

首先制定模糊原则:

·if亩产低and费用高and用工高and收入低and肥力低then评价差;

·if亩产中and费用低and用工低and收入中and肥力高then评价中;

·if亩产高and费用低and用工低and收入高and肥力高then评价高;

·if亩产中and费用中and用工中and收入中and肥力高then评价中;

·if亩产高and费用高and用工高and收入低and肥力低then评价差。

在MATLAB工作空间输入命令:

alt

则打开FIS编辑器。这时还没有建立FIS,编辑器默认为Mamdani系统(可以在File下通过NEW FIS选择),其文件名为untitled,再进行以下步骤:

①变量输入

在Edit下选择Add Variable input(或output),在右下角的空白处修改输入或输出框的名称,如“产量”等,多次重复单击,便可获得多变量。

在FIS编辑器中,单击输入或输出图标以选中变量,然后在Edit下选择Remove variable以删除指定的输入或输出变量。

②存 盘

在File下选择Export,将设计好的FIS以某个文件名存入工作空间或磁盘,以便下次调用。

至此,已建立初步的模糊推理系统。

③给变量添加隶属度函数

在Edit下选择Membership Functions便进入隶属度函数编辑器。进入隶属度函数编辑器后,可在左上角选择变量,然后在Edit下选择Add MFs或Custom MF(自定义隶属度函数),这时出现Membership Functions对话框,根据对话框便可进行隶属度函数名称、类型、数量及参数等内容的添加;删除指定的或全体的隶属度函数则在Edit下选择Romove。

④规则的编辑

在FIS或隶属度函数编辑器中,选择Edit下的Rules,便进入规则编辑器,这时已在GUI的下半部给出规则的前件和后件中使用的模糊变量值,这样可以很方便地设计模糊规则:

·根据设立规则前件之间的关系,在GUI的左下角选择and或or,在本例中选择and。

·根据设立规则,选择前、后件。如本例的第一条规则,在“亩产”域选择“低”,在“费用”域选择“高”,在“用工”域选择“高”,在“收入”域选择“低”,在“肥力”域选择“低”,在“评价”域选择“差”,然后在GUI的中下部单击Add rule,这样就完成了第一条规则的输入;用同样的方法输入其他规则。

·在输入过程中,单击Delete rule或Chang rule,进行规则的删除及修改。

·如果某条规则的权重(Weight)大于1,则可以通过多次输入该规则的方法改变其权值。

至此已建立了模糊推理系统,在FIS编辑器的File下选择Export,将所设计的FIS保存到工作空间或磁盘上。

⑤计 算

在FIS、隶属度函数及规则编辑器的View下选择Rules,便可进入规则观测器。在规则观测器GUI左下角Input框中输入各参数的值,便可在右上角得到输出值。

在FIS、隶属度函数及规则编辑器的View下选择Surface,便可以看到输出曲面。

在本例中,这三个生产方案的输出值分别为0.5、0.5和0.195,即第三个生产评价较差,而其余两个生产方案评价相差并不大,此结论与用其他方法得出的有些差别。本方法的结果准确性取决于规则设立的合理性及全面性。

例4.11 模糊聚类可用于目标识别。

设表示新疆十个地区的集:

alt

其中,1为阿勒泰,2为塔城,3为伊宁,4为昌吉,5为奇台,6为阿克苏,7为库车,8为喀什,9为和田,10为吐鲁番。

根据专业知识和实践经验,选取影响玉米生长的主要因素有以下几种:

x1——≥10℃积温(即一年中不小于10℃的日平均温度累积);

x2——无霜期;

x3——6~8月平均气温;

x4——5~9月降水量。

这些因素的实际观测值如表4.5所列。

表4.5 玉米生长的主要影响因素

alt

请对后9个地区进行分类,并求第1地区属于哪一类?

解:

alt

新目标为第3类,即归纳于北疆地区。

例4.12 对例4.11题中十个地区的数据采用模糊减法聚类。

解:

alt

从图4.6可看出,当半径为0.3时得到8个聚类中心,而为0.5时,只得到了4个聚类中心。

alt

图4.6 模糊减法聚类结果(radii=0.3和0.5)

例4.13 望江楼1993—2000年1月份水环境测量值及其相应的标准值如表4.6、表4.7所列,试对此进行模糊评价。

表4.6 各级环境标准指标值

alt

表4.7 各指标测量值

alt

解:

首先根据表4.6确定各级的隶属度函数。以溶解氧为例,其一、二级隶属度为

alt

用类似的方法建立其余各级的隶属度的函数。

然后对每一个指标值进行单因素评价,得到综合评判矩阵R。

再确定因素重要程度模糊集即每项指标的权重。权重可以用下式计算:

alt

其中,ci是测定值;Si是某项指标的各分级指标的平均值。要注意的是,因为溶解氧的值越大越好,所以权重取Wi的倒数。得到各指标重要程度的模糊集A。

最后选用模型M(∧,∨),得模糊评价集:B=A*R。

根据计算结果便可以知道评价结果,其中fuzzmu函数见例4.2,water_mu函数是求每项指标值的各级隶属度。

alt

在模糊综合评判中,因素重要程度模糊集A的确定是否恰当直接影响评判结果。A确定的方法除了本例中介绍的以外,用得最多的是Delphi法(专家评议法)。其具体步骤如下:

①确定各因素ui的重要性序列值ei(i=1,2,…,m,其中m为因素的个数)

邀请专家们凭个人的经验和见解,划定各因素的重要性序列,对最重要的因素取ei=m,对最次要的因素取ei=1。共有n位专家,这样对每个因素均有n个排序值,记第k个对因素ui所给定的因素重要性序列值为ei(k)。

②编制优先得分表

对专家的评分表进行以下的统计:

alt时,Aij(k)=1;当alt时,Aij(k)=0

将所有参加评议的专家的Aij(k)值累加,即

alt

由此得到m×m个统计值组成如表4.8所列的得分表。此表中Aii是没有值的。

表4.8 得分表

alt

③求∑Ai

将表4.8中各行的Aii值相加,得∑Ai,并求其中最大值和最小值。

④计算级差d

令amax=1,amin=0.1,则

alt

⑤计算各因素重要程度系数ai

alt

alt

例4.14 在油烧辊道窑的控制器中,重油粘度大,质量波动大,有时甚至堵塞喷嘴,故采用常规控制算法控制的质量不好,甚至无法正常生产。在这种场合,模糊控制算法是比较合适的。请对图4.7所示的模糊控制器进行设计。

alt

图4.7 双输入单输出模糊控制系统

辊道温度由热电偶测量,经温度变送器、输入通道转换,得到与实测温度值相应的数字量Y,计算机将Y值与该点温度给定值(数字量)互相比较,得出温度偏差数字量,经计算机处理可以取得偏差变化率的数字量∆é。∆e和∆é作为模糊控制器的输入。模糊控制器的输出是应当调节的数字量,对应着执行机构所操纵的喷嘴的开度。

:根据题意,此系统为二阶环节的模糊控制器。

定义对应两个输入变量、一个输出变量在[-6,+6]的变化连续量的模糊集:

alt

根据窑炉操作人员的经验,可以制定表4.9所列的控制查询表。

表4.9 控制查询表

alt

据此可很方便地编写出MATLAB程序,设计FIS,画出模糊隶属度曲线,计算指定输入时的输出及整个系统的输出曲面。

alt

这样就得到了模糊控制器,然后根据输入的量∆e和∆é,便可计算出过程控制的输入。例如:

alt

还可以绘制出当∆e(或∆é)不变时的输出,如图4.8所示。

alt

图4.8 模糊控制器的输入/输出曲线

例4.15 逼近未知的非性函数有许多方法,如多项式逼近、指数函数逼近、神经网络逼近等。以模糊逻辑系统为基础的模糊模型也可用于非线性动态的建模,并显示出优良的性能。

利用模糊推理系统对非线性函数f(x)=2e-xsinx进行逼近。

:设定输入x的范围为[0,10],并将它模糊分割成五个区,即设定一个隶属度函数,其类型采用广义的钟形函数,则有

alt

图4.9 所示表示训练结果。

alt

图4.9 函数逼迫的ANFIS训练结果

例4.16 在利用genfis1逼近非线性系统时,若数据维数增加,则很明显计算量将大大增加,此时可利用genfis2产生FIS初始结构。如有一个故障诊断系统,其故障编码如表4.10所列。请对此系统进行模拟逼近。

表4.10 故障诊断系统

alt

:用前五个数据进行训练,最后一个数据用于检验。

alt

即故障编码为00001。

例4.17 信号检测是影响测量精度的关键。在测量过程中要扣除背景、噪声等因素的影响。此时需要各种各样的滤波技术,模糊滤波技术就是其中的一种。模糊滤波技术是利用ANFIS对非线性动态的建模性质,并利用ANFIS复现噪声,然后从测量信号中消去噪声而得到有用的测量信号。下面举一个简单的例子说明其方法及步骤。

设有用信号为S(t)=sin(2πt),有色噪声为白噪声作用于下列非线性函数后产生:

β(t)=f[n(t),n(t-1)]=n2(t)sin[n(t-1)]/[1+n2(t-1)]

解:

alt

图4.10 所示为运行结果。

alt

图4.10 原始信号和经模糊滤波后的信号

例4.18 考虑煤炭按成因分类的模糊识别问题。根据成因可将煤炭分为三大类,即无烟煤A1、烟煤A2和褐煤A3

设论域U为所有煤种的集合,无烟煤A1、烟煤A2和褐煤A3是U上的模糊子集,对于某一给定的具体煤种u,试判断其归属。所用数据见表4.11。

表4.11 各个煤样特性指标的测量值

alt

:在模糊模式识别中,构造模糊模式的模糊函数是其关键和难点。下面介绍常用的样板法。

①设U为待识别对象全体的集合,A1,A2,…,Ap为U上p个模糊模式,每一个识别对象u∈U的特性指标向量为u=(u1,u2,…,um)。

从模糊模式Ai中选出个ki样板,设为

aij=(aij1,aij2,…,aijm)(i=1,2,…,p;j=1,2,…,ki

其中,aij表示第i个模糊模式Ai中的第j个样板的特性指标向量;aijk表示第i个模糊模式Ai中的第j个样板的第k个特性指标的实测数据。

②计算模糊模式Ai中的ki个特性指标向量aij(i=1,2,…,p;j=1,2,…,ki)的平均值ai,即

ai=(ai1,ai2,…,aim

其中

alt

称ai为模糊模式Ai的均值样板。

③计算模糊模式Ai的隶属函数

计算识别对象u=(u1,u2,…,um)与均值样板ai=(ai1,ai2,…,aim)之间的距离di(u,ai),

如取欧氏距离,则有

alt

D=max{d1(u,a1),d1(u,a2),…,dp(u,ap)}

则模糊模式的隶属函数为

alt

根据以上所述,计算各模式的隶属度值过程如下:

①用mean函数求平均值,即每类的中心。

②计算待识别煤样与均值的距离(即与每类的距离),可以采用各种距离,如用欧氏距离,则可以用norm函数计算。

alt

令D=d1(u,a)+d2(u,b)+d3(u,c),则得到三种类型煤的隶属函数为

alt

从而可计算出每个煤样隶属于每种类型煤的隶属度值,据此可判断出其属于的类别,计算结果符合实际。

下面以前5种煤样的计算为例,列出程序:

alt

例4.19 胃病病人和非胃病病人的生化指标测量值如表4.12所列。试用模糊神经网络方法对某未知样本进行判别。

表4.12 胃病病人和非胃病病人生化指标的测量值

alt

alt

:下面介绍模糊神经网络计算的步骤。

①对于k维输入量x=[x1,x2,…,xk],首先根据模糊规则计算各输入变量xj的隶属度,隶属度函数采用高斯型:

alt

其中,altalt分别为隶属度函数的中心和宽度;k为输入参数的维数(即特征向量数)n为模糊子集数。

②将各隶属度进行模糊计算,模糊算子采用连乘算子:

alt

③根据模糊计算结果计算模糊模型的输出值:

alt

④计算误差:

alt

其中,yd是网络期望输出;y是网络实际输出。

⑤系数修正:

alt

⑥参数修正:

alt

本例中参数的修正方法采用遗传算法。由于输入数据为4维,输出数据为1维,所以模糊神经网络的结构设为4-8-1,即有8个隶属度函数,选择5×8个系数p0~p4,各altalt为8×4的矩阵,所以共有104个待优化系数。

编写适应度函数如下:

alt

打开遗传算法工具箱GUI,并在相应的框中输入各参数就可以进行计算。其中边界约束:Lower输入0.01*ones(1,104);Upper输入10*ones(1,104),种群规模选50。

计算结束后,将结果输出到命令窗口,即可以得到各个参数。利用这些参数和适应度函数的程序从就可以计算未知样的归属,结果为:yn=1.9825,属于第二类。

例4.20 某地1985—1995年期间每年10月份的地下水平均值如下所示,试对该地的地下水位情况进行预测。

alt

:对于时间序列预报,希望通过目前时刻t为止已知的序列值来预报将来t+p时刻的序列值。首先构筑一个输入矩阵,设延迟时间为3,也即利用时间序列的前3个值来预测第4个值;然后再利用模糊神经网络进行预测。程序如下:

alt