北航智能控制模糊控制作业

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

模糊控制查询表的MATLAB实现
北京航空航天大学机械工程及自动化学院(北京 100191)
一作业要求
以双输入—单输出系统为例,画出模糊控制算法程序流程图,计算出模糊控制器的查询表。

假设控制器输入为误差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-1表示,控制规则如表1-2所示。

注意:u的去模糊化要采用与你的学号ID的奇偶性对应的方法,设ID=奇数者用最大隶属度法,ID=偶数者用重心法;要有计算查询表时的必要计算步骤,不能只给出最后结果。

表1-1 语言变量E、EC和U的赋值表
表1-2 模糊控制规则表
二 模糊控制查询表和控制算法流程图
2.1 模糊控制查询表
(1)模糊控制算法
一般双输入—单输出模糊控制器的控制规则可写成条件语句:
if and E=B then U=C ,i=1,2,,;1,2,,;i j ij
E A n j n =∆= 式子中,、B 、C i j ij
A 为定义在误差、误差变化率和控制量论域X 、Y 、Z 、上的模糊集合。

上述条件可以用一个模糊关系R 描述,即
1
()T i
j ij
i j
R
A B C ≠
=⨯⨯ R 的隶属度函数为:
,1,1
(,,)()()(),,,i n j m i j ij
i j R
x y z A x B y C z x X y Y z Z =====∨
∧∧∈∈∈ 当误差及误差变化分别取模糊集、B A
时,控制器输出的变化量U 根据模糊推理合成规则可得:2T U=
(A B )R ⨯ U 的隶属度函数为:x X
y Y
U(z)=A(x)B(y)R(x,y,z)∈∈∨∧∧
(2)模糊算法选择
模糊推理用Mamdani 推理方法,输出信息的模糊判别用最大隶属度法。

模糊控制查询表的实现,先根据模糊条件推理得出模糊条件所决定的模糊关
系i R ,模糊推理关系为: 1()T i i i i R A B C =⨯⨯ 。

将所有的模糊关系i
R 利用“或”放入关系组合在一起,即121
n
n i
i
R R R R R ===
,R 整个系统的控制规则的模糊关系。

再根据新的模糊集、B A
,求出控制器的输出变化量U ,即2T U=(A B )R
⨯ 。

最后根据最大隶属度法求的模糊判决结果。

所有的判决结果组成了模糊控制查询表。

最后建立输入变量输出变量的三维曲面。

2.2 程序结构说明
一般情况下,输入量偏差e 和偏差变化率△e 以及输出变量U 的离散论域为13个量化等级{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}。

为方便MATLAB 编程,对相关的变量选择进行一些改变。

原先的输入变量偏差e 和偏差变化率ec 以及输出变量U 的量化等级{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}改写为{1,2,3,4,5,6,7,8,9,10,11,12,13}。

转化后语言变量E 、EC 和U 的赋值表如表2-13所示。

输入变量偏差e 和偏差变化率ec 以及输出变量U 的模糊语言值均为{NB ,NM ,NS ,Z ,PS ,PM ,PB}。

为了编程方便,将语言值用数字表示为{1,2,3,4,5,6,7},与模糊语言值相对应。

转化后的模糊控制规则表如表2-2所示。

表2-1 语言变量E 、EC 和U 的赋值表
表2-2 模糊控制规则表
程序初始化,输入误差Error 、偏差变化率ErrorC 和控制量Controlvolume 的赋值表及模糊控制规则表。

先计算模糊控制隶属度关系矩阵R 。

根据每一条控
制规则,查找对应的赋值表当中的向量,然后求的1()T i i
A B ⨯ 的值,再求得单条控制语句的模糊关系1()T i i i i
R A B C =⨯⨯ 的值,单条控制语句的模糊关系模糊关系i
R 与模糊控制隶属度关系矩阵Relationship 对应位取大,最终得到R 。

得到R 后,再求控制量2T U=(A1B1)R ⨯ 。

根据X 、Y 论域取不同的元素,查询赋值表得到对应的向量,然后求 2T (A1B1)⨯ 的值,再求得控制量2T U=(A1B1)R
⨯ 的值,根据最大隶属度法求的判决结果,建立模糊控制器查询表。

最后建立输入变量输出变量的三维曲面。

2.3 控制算法流程图
N
N
N
N
三模糊控制查询表
模糊控制查询表结果如表3-1所示
表3-1 模糊控制查询表
四输入变量输出变量的三维曲面
分别通过Matlab程序及Matlab中的fuzzy工具箱得出输入输出的三维曲面。

通过Matlab程序得出的输入输出三维曲面如图4-1所示。

通过Matlab的fuzzy的工具箱得出的输入输出三维曲面如图4-2所示。

Matlab程序见附件一。

Matlab工具箱Fuzzy建立双输入—单输出模糊系统模型见附件二。

图4-1 Matlab程序得出的输入输出三维曲面
图4-2 Matlab的fuzzy的工具箱得出的输入输出三维曲面通过对上述两个输入输出三维曲面的比较,不难看出,两个输入输出三维曲面的形状基本相似,只是在局部有差异。

可以得出结论:用Matlab程序的建立的模糊控制器正确。

产生两个输入输出三维曲面有差异的原因可能是作业所给的隶属度函数为离散的函数,数据量比较少,得出的结果比较少,则绘制的输入输出三维曲面不够精确。

而用Fuzzy工具箱建立的隶属度函数为连续的函数,数据
量比较多,得出的结果比较多,绘制出的输入输出三维曲面较准确。

附件一
Matlab 程序
clc; clear;
%程序初始化,输入误差Error 、偏差变化率ErrorC 和控制量Controlvolume 的赋值表
Error=[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 ];
ErrorC=Error; %输入误差率ErrorC 赋值表与误差Error 相同
Controlvolume=Error; %控制量Controlvolume 的赋值表与误差Error 相同
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];%模糊控制规则表
Relationship=zeros(169,13);%申请模糊控制的隶属度关系矩阵 U=zeros(13); %申请模糊控制的查询表矩阵 %计算模糊控制隶属度关系矩阵Relationship for k=1:7
for l=1:7
A=Error(k,:); %取Error 的第k 行 B=ErrorC(l,:); %取ErrorC 的第l 行
C=Controlvolume(Rule(k,l),:); %根据控制规则表查询控制量的向量 for m=1:13 for n=1:13
D(n+(m-1)*13)=min(A(m),B(n)); %根据模糊算法,求1()T i i
A B 的值,对应位取小
end for p=1:169 for q=1:13
Relationship0(p,q)=min(D(p),C(q)); %根据模糊算法,求
1
()T i i i i R A B C =⨯⨯ 的值,对应位取小,即求得单条控制语句的模糊关系i
R 。

end end
for i=1:169 for j=1:13
Relationship(i,j)=max(Relationship(i,j),Relationship0(i,j));
%单条控制语句的模糊关系模糊关系i R 与模糊控制隶属度关系矩阵Relationship 对应位取大,最终得到R
end
end end end
%计算控制量2T U=(A1B1)R
⨯ for g=1:13 for h=1:13
[Y,X]=max(Error); %Y 表示Error 每列的最大值,X 表示Error 每列最大值所在的行
E=Error(X(g),:); %取Error 每列最大值所在行向量 F=ErrorC(X(h),:); %取ErrorC 每列最大值所在行向量 for s=1:13 for t=1:13
G(t+(s-1)*13)=min(E(s),F(t));%根据模糊算法,求
2T (A1B1)⨯ 的值,对应位取小
end for v=1:13 for w=1:169
H(w,v)=min(G(w),Relationship(w,v));%根据模糊算法,求
2T U=(A1B1)R
⨯⨯ 的值,对应位取小 end
end
[Z,W]=max(H);%Z 表示2T U=(A1B1)R
⨯ 的值 U(g,h)=find(Z>=max(Z),1)-7; %Z 的最大值所在的列减7,即用最大隶属度方法得到查询表矩阵 end end
%输入变量输出变量的三维曲面
xx=[-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6]; yy=[-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6]; [XX,YY]=meshgrid(xx,yy); mesh(XX,YY,U') grid on
axis([-6 6 -6 6 -6 6]) xlabel('E') ylabel('EC') zlabel('U')
附件二
Matlab工具箱Fuzzy建立双输入—单输出模糊系统模型
1.添加E,EC两个输入变量,Defuzzification中选择mom表示最大隶属度法。

图1 添加变量
2.添加论域E、EC、U及其隶属度函数
图2添加论域E及其隶属度函数
图3添加论域EC及其隶属度函数
图4添加论域U及其隶属度函数
3.添加控制规则
图5 添加控制规则4. 观察设计规则
图6 观察设计规则
5.输入变量输出变量的三维曲面
图7输入变量输出变量的三维曲面。

相关文档
最新文档