第三章 模糊控制2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

for i=1:169 for j=1:13
R3(i,j)=min(R2(i),C(j)); end end
注:R3= R2×C
所有规则蕴涵的模糊关系: for i=1:169 for j=1:13 R(i,j)=0; end end
for Input1_Terms_Index=1:7 for Input2_Terms_Index=1:7 程序段1; 程序段2; R=max(R,R3); end end
11
3.5 模糊控制器的软件实现(Matlab) 1 模糊控制查询表的实现
1)初始化
2)总结模糊关系
a) 模糊化 b)模糊推理 c)去模糊化
3)总结模糊查询表
2 模糊控制在线运行代码
1 模糊控制查询表的实现 1)初始化 假设E、EC和U的论域:{-6,-5,…,-1,0,1,…,5,6}; E、EC和U定义了7个语言值 {NB,NM,NS,Z,PS,PM,PB}; 则在Matlab中通过定义三个向量来表示这些语言值: Input1_Terms=[1,2,3,4,5,6,7]; Input2_Terms=[1,2,3,4,5,6,7]; output_Terms=[1,2,3,4,5,6,7];
注:A代表输入E的模糊值,B代表输入EC的模糊值,C代 表输出U的模糊值
for i=1:13 for j=1:13 R1(i,j)=min(A(i),B(j)); end end
注:R1=A×B
程 序 段 2
R2=[ ]; for k=1:13 R2=[R2;R1(k,:)']; end
注:R2=R1T
注:Ad为与输入E的精确值相对应的隶属度最大的模糊值, 也就是模糊化后的E的模糊值。
同理可以得到输入EC模糊化后的模糊值Bd
Input2_value_membership=Input2_Terms_Membership(:,I nput2_value_index); [Max_Input2_value,Max_Input2_index]=max(Input2_value _membership); Bd=Input2_Terms_Membership(Max_Input2_index,:);
控制规则表
U NB
NB *
NS PB
E ZE PB
PS PS
PB NB
NS DE ZE PS PB
PB PB PB PB
PS PS ZE NS
PS ZE NS NB
ZE NS NS NB
NB NB NB *
(e)
1.0
PS
(de)
1.0
NS
(v)
1.0
ZE
min
4 2
0
2
4
e
4 2
3.4 模糊控制器的设计举例
e
de
模糊化
E
DE
模糊决策
U
精确化
u
例:通过供电电压控制炉温。
E
Td

e k1
k2
DE
控 制 表
U
k3
u
被 控 对 象
T
de
控制器输入变量: e——温度误差e =T-Td de——温度误差的变化 de(nT0+1)=e(nT0+1)-e(nT0) 控制器输出变量: u——电压的变化
规则10 : 如果误差e是ZE、 且误差变化de是P B, 则控制U为NB;
“5”段:当误差变化de为负时,偏差有增大的趋势,这时应使控制量增 加,防止偏差进一步增加。因此,有控制规则
规则11: 如果误差e是NS、 且误差变化de是NS, 则控制U为PS; 规则12: 如果误差e是NS、 且误差变化de是NB, 则控制U为PB; 规则13: 如果误差e是ZE、 且误差变化de是NS, 则控制U为PS; 规则14: 如果误差e是ZE、 且误差变化de是NB, 则控制U为PB;
确定模糊控制器的输入变量和输出变量(即控制量);
e
de u 量化等级 语言值
PB
PS
-150 -50 -64 -4
-90 -30 -16 -3
-30 -15 -4 -2
-10 -5 -2 -1
0 0 0 0
10 5 2 1
30 15 4 2
90 30 16 3
150 50 64 4
相关的隶属度函数 0 0 0 0 1 0 0 0 0.4 0.35 0 0 0 1 0 0 0 0.2 0.4 0 0 0 1 0 0 0 0.4 0.2 0 0 0 1 0 0 0 0.35 0.4 0 0 0 1 0 0 0 0
b) 推理
for i=1:13 for j=1:13
Rd1(i,j)=min(Ad(i),Bd(j)); end end Rd1=Ad×Bd
Rd2=[ ]; for k=1:13 Rd2=[Rd2,Rd1(k,:)]; end Rd2=Rd1T
for j=1:13 Cd(j)=max(min(Rd2',R(:,j))); end
4 2
0
2
4
u
表3-3 模糊控制表
de
-4 4 3
-3 3 3
-2 3 3
-1 2 2
0 2 2
1 3 2
2 0 0
3 0 0
4 0 0
e u
-4 -3
-2 3 3 2 2 1 -1 3 2 2 1 1 0 2 2 1 1 0 1 2 1 1 0 -1 2 1 1 0 -1 -1 3 0 0 0 -2 -2 4 0 0 0 -3 -2 说明1:模糊控制表是离线建立进行 说明2:查表法
ZE
NS
NB
•输出响应要求
T
3
Td
2
4
5
1
0
t
“1” 段:误差e=T-Td为负,且为NB。无论de 的值如 何,为了消除偏差应使控制量加大。所以控制量u应 取正大PB。
规则 1: 如果误差e是NB、 且误差变化de是PB, 则控制U为PB; 规则 2 : 如果误差e是NB、 且误差变化de是PS, 则控制U为PB; 规则 3 : 如果误差e是NB、 且误差变化de是ZE, 则控制U为PB; 规则 4 : 如果误差e是NB、 且误差变化de是NS, 则控制U为PB;
2)总结模糊关系
某条规则蕴涵的模糊关系
Output_Terms_Index=Rule(Input1_Terms_Index, Input2_Terms_Index ); 程 注:Input1_Terms_Index 代表输入E的语言值的序号, 序 Input2_Terms_Index 代表输入EC语言值的序号, 段 Output_Terms_Index 代表输出U语言值的序号 1 A=Input1_Terms_Membership(Input1_Terms_Index,:); B=Input2_Terms_Membership(Input2_Terms_Index,:); C=Output_Terms_Membership(Output_Terms_Index,:);
注:初始化R
注:R为所有规则模糊关 系的并集
3)总结模糊查询表 a)模糊化 Input1_value_membership=Input1_Terms_Membership(:,I nput1_value_index);
注:Input1_value_index表示输入E的精确值的序号, Input1_value_membership为E的精确值属于其各个模糊值 的隶属度组成的向量
NB
NB NM NM NS Z
NB
NB NM NM NS Z
NB
NB NM NS Z PM
NB
NB NM Z PM PB
NM
NM Z PS PM PB
Z
Z PS PM PM PB
Z
Z PS PM PM PB
PB
Z
Z
PM
PB
PB
PB
PB
将语言值按顺序编号,NB、NM、NS、Z、PS、 PM、PB分别对应1、2、3、4、5、6、7号。 则上表可用一个矩阵表示为: Rule= [1,1,1,1,2,4,4; 1,1,1,1,2,4,4; 2,2,2,2,4,5,5; 2,2,3,4,5,6,6; 3,3,4,6,6,6,6; 4,4,6,7,7,7,7; 4,4,6,7,7,7,7];
“2”段: 当误差e为负小或零时,主要矛盾转化为系统的稳定性问题 了。为了防止超调过大并使系统尽快稳定,就要根据误差的变 化de来确定控制量。若de为正,表明误差有减小的趋势。
规则5 : 规则6 : 规则7 : 规则8 : 规则9 :
如果误差e是NS、 且误差变化de是ZE, 则控制U为P S; 如果误差e是NS、 且误差变化de是P S, 则控制U为ZE; 如果误差e是NS、 且误差变化de是P B, 则控制U为NS; 如果误差e是ZE、 且误差变化de是ZE, 则控制U为ZE; 如果误差e是ZE、 且误差变化de是P S, 则控制U为NS;
在matlab中,可以用一个矩阵来表示该表。
Input1_Terms_Membership=
[1,0.5,0,0,0,0,0,0,0,0,0,0,0; 0,0.5,1,0.5,0,0,0,0,0,0,0,0,0; 0,0,0,0.5,1,0.5,0,0,0,0,0,0,0; 0,0,0,0,0,0.5,1,0.5,0,0,0,0,0; 0,0,0,0,0,0,0,0.5,1,0.5,0,0,0; 0,0,0,0,0,0,0,0,0,0.5,1,0.5,0; 0,0,0,0,0,0,0,0,0,0,0,0.5,1];
1 0 -1 -1 -2 -2 -2
0 -1 -1 -2 -2 -3 -3
-1 -1 -2 -2 -3 -3 -3
-2 -2 -2 -3 -3 -3 -4
模糊控制的优缺点 模糊控制的优点:
① 设计时不需要建立被控制对象的数学模型,只要求掌握人类 的控制经验。 ② 系统的鲁棒性强,尤其适用于非线性时变、滞后系统的控制
Input2_Terms_Membership=Input1_Terms_Memb ership; Output_Terms_Membership=Input1_Terms_Mem bership;
假设控制规则表总结如下
U EC NB NM NS Z PS PM PB
NB
NM NS E Z PS PM
模糊控制的缺点:
① 确立模糊化和逆模糊化的方法时,缺乏系统的方法,主 要靠经验和试凑。 ② 总结模糊控制规则有时比较困难。 ③ 控制规则一旦确定,不能在线调整,不能很好地适应情 况的变化。 ④ 模糊控制器由于不具有积分环节,因而稳态精度不高。
• 综上分析,模糊控制是一种更人性化的方法,用模糊 逻辑处理和分析现实世界问题,其结果往往更符合人 的要求。例如:用模糊控制更能容忍噪声干扰和元器 件的变化,使系统适应性更好。模糊控制由于拥有众 多优点,其应用领域会越来越广泛。
Cd=Rd2oR, Cd为推理后得到的模糊输出
C) 去模糊化
sum1=0; sum2=0; for i=1:13 sum1=sum1+Cd(i);
加权平均法
sum2=sum2+Cd(i)*Output(i); end OUT=round(sum2/sum1);
对于每种可能的E、EC的精确取值进行a)b)c)的运算可以 得到模糊查询表:
0
2
4 de 4 2
0
2
4 u
(e)
1.0 ZE
(de)
1.0
(v)wk.baidu.com
NS
1.0
PS
-4
-2
0
2
4 e -4 -2
0
2
4 de - 4 - 2
0
2
min 4 u
1 0.2 0 0.4 1 0.2 2 0.2 3 0.2 u 1 0.2 0.4 0.2 0.2 0.2
各语言值的隶属函数采用三角函数,其分布可用下表表示:
-6 NB NM NS Z PS PM PB 1 0 0 0 0 0 0 -5 0.5 0.5 0 0 0 0 0 -4 0 1 0 0 0 0 0 -3 0 0.5 0.5 0 0 0 0 -2 0 0 1 0 0 0 0 -1 0 0 0.5 0.5 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0.5 0.5 0 0 2 0 0 0 0 1 0 0 3 0 0 0 0 0.5 0.5 0 4 0 0 0 0 0 1 0 5 0 0 0 0 0 0.5 0.5 6 0 0 0 0 0 0 1
[Max_Input1_value,Max_Input1_index]= max(Input1_value_membership); 注:Max_Input1_index表示隶属度最大的模糊值的序号, Max_Input1_value为与之对应的隶属度 Ad=Input1_Terms_Membership(Max_Input1_index,:);
相关文档
最新文档