如何在Windows上使用Matlab进行模糊逻辑处理?
介绍模糊逻辑处理的基本原理和具体实现方法。
一、模糊逻辑处理的基本原理
模糊逻辑处理(fuzzy logic)是一种人工智能的技术,它是一种对于人们所熟知的“对/错”二元判断方式,提出了一种可能性判断的方式。在传统逻辑中,只能判断一个命题是真还是假,而在模糊逻辑中,一个命题可以有不同的可能性程度。简而言之,模糊逻辑就是一种用来描述非精确、不确定的情况下人类语言或控制系统的逻辑方法。
模糊逻辑处理的基本原理是通过模糊集合(fuzzy set)的概念来实现。在模糊集合中,元素可以具有与实际值不完全相等的隶属度(membership degree)。元素的隶属度是一个0到1之间的实数,取0表示不属于该集合,取1表示完全属于该集合。
例如,在控制系统中,如果某个系统被认为很冷,那么其中的温度被认为是“冷”。然而,这种描述不能与数学上的严谨的温度定义相吻合,可以通过定义一个控制“冷”的模糊集合来描述它,其中元素“冷”的隶属度可以在0到1之间取值。
模糊逻辑处理的优点是可以通过模糊集合来更好地适应现实问题的复杂性。它在模糊、不确定、复杂的决策问题中具有灵活性、实用性等优良特性。
二、Matlab中的模糊逻辑处理
Matlab是一款功能强大的数学计算软件,具有通用科学计算和数据处理等多种功能,同时也支持模糊逻辑处理。Matlab中提供了模糊逻辑工具箱(fuzzy logic toolbox)用于实现模糊逻辑处理。
1. 建立模糊逻辑系统
在建立模糊逻辑系统之前,需要定义模糊变量和模糊集合。Matlab中可以采用三种方法进行定义:
(1)可以在Matlab命令窗口中直接输入包含名称、小数标记和模糊度函数定义的代码,对模糊变量或模糊集进行声明和定义。
(2)也可以通过Matlab的GUI界面,输入名称、变量类型、范围等参数,生成模糊变量或模糊集合。
(3)可以使用Matlab中预定义的模糊变量或集合,直接声明和使用。
在定义好变量和集合后,就可以建立模糊逻辑系统。Matlab中提供函数名为fuzzy基于各变量和集合名称,以及各规则所需要的语法编写源程序,在系统的理解过程中发生模糊化,在控制操作时进行反模糊化处理,从而得到应该输出的规则。
2. 设计模糊逻辑规则
模糊逻辑规则是指由一组“如果……那么……”组成的规则,形如“IF A IS B AND C IS D THEN E IS F”。在Matlab中,可以采用一种预定义的语法来描述模糊规则。下面是一个简单的模糊逻辑规则的例子:
rule1 = [1 1 1 1 2 0.7];
rule2 = [2 0.5 0.7 0.3 1 0.4];
rule3 = [3 0.3 0.5 0.1 2 0.2];其中,第一列是规则编号,后面是条件变量或条件变量的隶属度,以及输出变量和输出变量的隶属度。上述规则表明,如果变量1的隶属度为1且变量2的隶属度为1且变量3的隶属度为1,则输出变量为2,隶属度为0.7。
3. 运行模糊逻辑系统
当定义好模糊逻辑系统和模糊规则之后,通过Matlab的fuzzy函数可以对系统进行模拟和运行。运行结果为输出变量的隶属度及其变化规律。Matlab工具箱中也可以将得到的结果进行绘图,以直观地展示模糊规则所得到的结果。
示例代码:
% 定义输入变量
P=0:0.1:10;
PA=fuzzypd(P,[2.5 5 7.5]);% 定义输出变量
T=0:0.01:1;
TE=fuzzypd(T,[0.2 0.5 0.8]);% 设计规则库
rule1=[1 1 1.7 2.8 1 1 1 0.1];
rule2=[1 1.5 2.7 3.8 1 1 1 0.3];
rule3=[1 2.5 3.7 4.8 1 1 1 0.7];% 定义模糊系统
fis=newfis(‘tipper’);% 加入输入变量和输出变量
fis = addvar(fis,’input’,’power’,[0 10]);
fis = addmf(fis,’input’,1,’low’,’trapmf’,PA(1,:));
fis = addmf(fis,’input’,1,’medium’,’trapmf’,PA(2,:));
fis = addmf(fis,’input’,1,’high’,’trapmf’,PA(3,:));
fis = addvar(fis,’output’,’tips’,[0 1]);
fis = addmf(fis,’output’,1,’low’,’trapmf’,TE(1,:));
fis = addmf(fis,’output’,1,’medium’,’trapmf’,TE(2,:));
fis = addmf(fis,’output’,1,’high’,’trapmf’,TE(3,:));% 添加规则
ruleList=[rule1;rule2;rule3];
fis = addrule(fis,ruleList);% 显示模型的细节
fuzzy(fis)% 绘制输出面
gensurf(fis)在运行后,可以使用plot函数绘制输入模糊数集、输出模糊数集、输出面等。绘制图表后,用户可以依据模糊数学规律,对样本数据做出预测或控制。
2023年06月20日 15:58