北航智能控制模糊控制作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能控制及应用大作业一
——双输入—单输出系统的模糊控制
姓名:
学号:
2011-10-14
题目要求
以双输入—单输出系统为例,画出模糊控制算法程序流程图,计算出模糊控制器的查询表。假设控制器输入为误差e和误差变化率ec,输出为控制量u,其基本论域分别为[e min,e max],[ec min,ec max],[u min,u max],对应的语言变量E、EC和U的论域为{-6,-5,…,-1,0,1,…,5,6},E、EC和U都选7个语言值{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数采用三角函数,其分布可用表1表示,控制规则如表2所示。注意:u的去模糊化要采用与你的学号ID的奇偶性对应的方法,设ID=奇数者用最大隶属度法,ID=偶数者用重心法;要有计算查询表时的必要计算步骤,不能只给出最后结果。
表2模糊控制规则表
程序设计与程序流程图
1、模糊算法的选择
模糊蕴含用求交法,输出量的清晰化计算用最大隶属度法。于是有输出量的模糊集合'U 为:
49
1
'49
1'
'
491'
'
49
1'
'49
1
'
'''')]
([)]([]
)[()()()(======
=→→=→⨯⨯=⨯=⨯=i i
i iEC iE i i i i i i i i i i i
C
U U U EC EC U E E
U EC E EC E R EC E R EC E U
2、程序结构说明
利用Matlab 编写该模糊算法,并且计算出模糊控制器的查询表。 程序按照上面的控制算法,先计算模糊关系隶属度矩阵R 。
通过上面的式子,根据每一条控制规则,查找相对应的赋值表当中的向量值。如第一条法则:
If E=NB and EC=NB, then U=NB.
则找到E 中NB 对应的行向量和EC 中NB 对应的行向量,然后将第一个行向量转置后与第二个行向量按照乘法法则对应取小值,生成新的矩阵。然后将该矩阵转换成列向量,并与U 中NB 对应的项对应取小值,生成新的矩阵R1。然后利用循环依次算出每个Ri ,没求出一个Ri 就去前面一个Ri-1求并(模糊算法中,取大值)。循环49次后,得到R 矩阵。
这样再利用新的关系中的A1,B1,与R 的模糊蕴含用求交法,求出新的控制向量,再利用最大隶属度法就可求出控制量U 的量化值。然后制成表格。
3、流程图
Matlab 程序代码
clc;
clear;
E = [ 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 ];% 7*13 E的赋值表矩阵
EC = E; U = E; %EC,U的赋值表和E一致
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 ];% 7*7 模糊控制规则表矩阵
R = zeros(169,13); %申请模糊控制的隶属度关系矩阵
%计算模糊控制隶属度关系矩阵R
for ii = 1:7
forjj = 1:7
U_rule = rule(ii,jj); %按控制规则表找出语言变量对应的向量
A = E(ii,:);
B = EC(jj,:);
C = U(U_rule,:);
%根据模糊算法,求(A'×B)对应按值取小
for i = 1:13
for j = 1:13
if A(i) > B(j)
R_C(i,j) = B(j);
else
R_C(i,j) = A(i);
end
end
end
R_C1 = reshape(R_C',13*13,1);%转置成169*1的列向量
%形成单条控制语句的模糊关系的隶属度函数R1
for i = 1:13*13
for j = 1:13
if R_C1(i) > C(j)
R1(i,j) = C(j);%得到R1是169*13的矩阵
else
R1(i,j) = R_C1(i);
end
end
end
%将R1合成为整个模糊关系的隶属度函数R,R是169*13的矩阵for i = 1:169
for j = 1:13
if R(i,j) < R1(i,j)
R(i,j) = R1(i,j);
end
end
end
end
end
%计算控制量U1=(A1×B1)T2。R,T2表示前面矩阵转化成行向量for iii = 1:13
forjjj = 1:13
%求E的量化值对应的语言值的所对应的行向量
temp_maxA = E(1,iii);
line_no = ones(3,1);
for k = 1:7
if(temp_maxA< E(k,iii))
temp_maxA = E(k,iii);
line_no(1) = k;
end
end
A1 = E(line_no(1),:);
%求EC的量化值对应的语言值的所对应的行向量
temp_maxB = EC(1,jjj);
for k = 1:7
if(temp_maxB< EC(k,jjj))
temp_maxB = EC(k,jjj);
line_no(2) = k;
end