模糊控制理论基础
模糊控制的定义:
模糊控制器的输出是通过观察过程的状态和一些如何
控制过程的规则的推理得到的。它包括测量信息的模糊化、
推理机制、输出模糊集的精确化。
1.模糊集合
普通集合
具有某种特定属性的对象的全体(确定性 )。
模糊集合
隶属度函数表示元素x属于模糊集合A的程度:
μ
A
(
x
)
=
{
1
x
∈
A
(
0
,
1
)
x
∈
A
的程度
0
x
∉
A
\mu _A\left( x \right) =\begin{cases} 1\ \ \ \ \ \ \ \ \ \ x\in A\\ \left( 0,1 \right) \,\, \ x\in A\text{的程度}\\ 0 \ \ \ \ \ \ \ \ \ \ x\notin A\\ \end{cases}
μA(x)=⎩⎪⎨⎪⎧1 x∈A(0,1) x∈A的程度0 x∈/A
模糊集合的运算
模糊关系
模糊关系的合成
2.模糊推理
模糊逻辑推理
目前,主要不确定性推理方法有:MYCIN法、主观贝叶斯方法、证据理论法和模糊逻辑推理法。
模糊逻辑推理是不确定性推理方法的一种,其基础是模糊逻辑。模糊逻辑推理是以模糊判断为前提的,运用模糊语言规则,可推出一个新的模糊判断结论的方法。
3.模糊控制
模糊控制器的三个功能:
1.把系统的偏差从数字量转化为模糊量(模糊化过程、数据库两块完
成);
2.对模糊量由给定的规则进行模糊推理(规则库、推理决策完成);
3.把推理结果的模糊输出量转化为实际系统能够接受的精确数字量或
模拟量(精确化接口)
3.1模糊化接口(Fuzzy Interface)
3.2 知识库(Knowledge Base, KB)
知识库由数据库和规则库两部分构成。
(1)数据库(Data Base—DB)
数据库存放的是所有输入、输出变量的全部模糊集合的隶属度矢量值(即经过论域等级离散化以后对应值的集合)。
若论域为连续域则为隶属度函数。在规则推理的模糊关系方程求解过程中,向推理机提供数据。
(2)规则库(Rule Base—RB)
模糊控制是基于人的一些经验规则而产生的一种控制策略,而控制规则是基于专家知识或手动操作人员长期积累的经验,它是按人的直觉进行推理的一种语言表示形式。
模糊规则通常有一系列的关系词连接而成,如if-then、else、also、end、or等,关系词必须经过“翻译”才能将模糊规则数值化。
最常见的关系词有if-then、also,对于多输入的情况,关系词还有and。
3.3 推理与解模糊接口(Inference and Defuzzy-Interface)
(1)模糊推理
参考Mamdani推理法。当输入是二输入的时候,采用Mamdani推理首先将输入进行合并,再与模糊规则R进行合成运算,而模糊关系R已经在知识库建立过程中完成了,是根据经验实现的,就是将多条规则按照Mamdani推理的方式最终得到一个矩阵的形式。
(2)解模糊化(Defuzzy interface)(也叫精确化过程)
通过模糊推理得到的是模糊集合,但在实际模糊控制中必须有一个确定值才能控制或驱动执行机构,将模糊推理结果转化为精确值的过程称位反模糊化。
1、最大隶属度函数法
2、重心法
3、加权平均法
4.模糊控制系统
%Fuzzy Control for water tank
clear all;
close all;
a=newfis('fuzz_tank');
a=addvar(a,'input','e',[-3,3]); %Parameter e
a=addmf(a,'input',1,'NB','zmf',[-3,-1]);
a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);
a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);
a=addmf(a,'input',1,'PB','smf',[1,3]);
a=addvar(a,'output','u',[-4,4]); %Parameter u
a=addmf(a,'output',1,'NB','zmf',[-4,-1]);
a=addmf(a,'output',1,'NS','trimf',[-4,-2,1]);
a=addmf(a,'output',1,'Z','trimf',[-2,0,2]);
a=addmf(a,'output',1,'PS','trimf',[-1,2,4]);
a=addmf(a,'output',1,'PB','smf',[1,4]);
rulelist=[1 1 1 1; %Edit rule base
2 2 1 1;
3 3 1 1;
4 4 1 1;
5 5 1 1];
a=addrule(a,rulelist);
a1=setfis(a,'DefuzzMethod','mom'); %Defuzzy
writefis(a1,'tank'); %Save to fuzzy file "tank.fis"
a2=readfis('tank');
figure(1);
plotfis(a2);
figure(2);
plotmf(a,'input',1);
figure(3);
plotmf(a,'output',1);
flag=1;
if flag==1
showrule(a) %Show fuzzy rule base
ruleview('tank'); %Dynamic Simulation
end
disp('-------------------------------------------------------');
disp(' fuzzy controller table:e=[-3,+3],u=[-4,+4] ');
disp('-------------------------------------------------------');
for i=1:1:7
e(i)=i-4;
Ulist(i)=evalfis([e(i)],a2);
end
Ulist=round(Ulist)
e=-3; % Error
u=evalfis([e],a2) %Using fuzzy inference
结果图: