模糊控制程序实例学习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.2.2.6 模糊控制器设计实例 1、单输入模糊控制器的设计
【例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。
R =
图5.10 单回路模糊控制系统
按表5-2确定模糊变量E 、U 的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e 、控制量u
的实际论域:[ 1.5,1.5]e u =∈-,则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m 所示,仿真结果如图5.11所示。
设温度偏差e 、控制量u 的实际论域:[ 1.5,1.5]e u =∈-,选择e 、u 的等级量论域为
{3,2,1,0,1,2,3}E U ==---+++
量化因子2)
5.1(5.13
2=--⨯=
K 。
选择模糊词集为{NB,NS,ZO,PS,PB },根据人的控制经验,确定等级量E ,U 的隶属函数曲线如图5-8 所示。根据隶属函数曲线可以得到模糊变量E 、U 的赋值表如表5-3所示。
图5-8 E ,U 的隶属函数曲线
-3
-2
-1
1
2
3
依据人手动控制的一般经验,可以总结出一些控制规则,例如: 若误差E 为O ,说明温度接近希望值,喷水阀保持不动; 若误差E 为正,说明温度低于希望值,应该减少喷水; 若误差E 为负,说明温度高于希望值,应该增加喷水。 若采用数学符号描述,可总结如下模糊控制规则: 若E 负大,则U 正大; 若E 负小,则U 正小; 若E 为零,则U 为零; 若E 正小,则U 负小; 若E 正大,则U 负大。 写成模糊推理句:
if E=NB then U=PB if E=NS then U=PS if E=ZO then U=ZO if E=PS then U=NS if E=PB then U=NB
由上述的控制规则可得到模糊控制规则表,如表5-4所示。
表5-4 模糊控制规则表
模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域E 到控制量论域U 的模糊关系R 。
按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系R :
()()()()()
E U E U E U E U E U R E U
NB PB NS PS ZO ZO PS NS PB NB -
-
=⨯=⨯⨯⨯⨯⨯U U U U
计算模糊关系矩阵R 的子程序如F_Relation_1.m 所示。 %模糊关系计算子程序F_Relation_1.c
function [R,mfe,mfu,ne,nu,Me]=F_Relation_1
%#############################输入模糊变量赋值表(表5-3)############################ ne=7;%等级量e 的个数 nu=7;%等级量u 的个数
Me=[0 0 0 0 0 0.5 1;0 0 0 0 1 0.5 0;0 0 0.5 1 0.5 0 0; 0 0.5 1 0 0 0 0;1 0.5 0 0 0 0 0]; Mu=Me;
%##定义模糊变量及其语言值 1=PB,2=PS,3=O,4=NS,5=NB ,并输入模糊控制规则表(表5-4)## mfc=5;%模糊变量E 的语言值个数,控制规则表列数
E=[5 4 3 2 1]; UC=[1 2 3 4 5];
%########################计算R=E ×U############################################### R=zeros(ne,nu); for i=1:mfc iu=UC(i); ie=E(i);
for k=1:ne for l=1:nu
if Me(ie,k) Reu(k,l)=Mu(iu,l); end end end for k=1:ne for l=1:nu if Reu(k,l)>R(k,l) R(k,l)=Reu(k,l); end end end end 运行结果如下: 由此,可以得到各种输入时,模糊控制器的输出: 单输入时: U E R - - =o (5-5) 双输入时: R EC E U ο)(- - - ⨯= (5-6) 三输入时: R ECC EC E U ο)(- - - - ⨯⨯= (5-7) 例如:单输入时,设2.1=e ,根据前面的等级量划分原则,其等级量1+=E ,由表5-2可以查出 ]05.010000[==- PS E 。根据式(5-5)可以得到: ⎥⎥⎥ ⎥ ⎥⎥ ⎥ ⎥⎥⎦ ⎤⎢⎢⎢ ⎢⎢⎢⎢⎢⎢⎣ ⎡=000 5.00.100005.05.05.0005.05.00.15.00005.00.15.00 005.00.15.05.0005.05.05 .00 000.15.000000R [] ]0 5.0 5.0 0.1 5.0 5.0[ 5.0 0.1 5.0 5.0 5.0 5.0 5.0 0.1 5.0 5.0 0.1 5.0 5.0 0.1 5.0 5.0 5.0 5.0 5.0 0.1 5.0 5.0 1 = ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = -ο U 其模糊决策子程序如F_Deduce_1.m所示。 %单输入时模糊决策子程序F_Deduce_1.m function FU=F_Deduce_1(fe,R,ne,nu) for i=1:nu for j=1:ne if fe(j) feu(j)=fe(j); else feu(j)=R(j,i); end end FU(i)=max(feu); end %单输入模糊控制仿真程序FC_SI_main.m,被控对象W(s)=-1.1/(35s+1)^4) clear all DT=1;ST=1500;LP=ST/DT; A1=exp(-DT/35);B1=1-A1; x(1:4)=0;ur=0; %###设置e、u的初始论域及其等级量论域,计算量化因子及比例因子########## em=1.5;EM=3;Ke=EM/em; UM=3;um=1.5;Ku=um/UM; %#########调用计算模糊关系矩阵R的子程序F_Relation_1.m############# [R,mfc,ne,nu,Me]=F_Relation_1; %############################################################# for k=1:LP %############计算FC的输出################################### e=1-x(4);%计算偏差量e e1=round(Ke*e);%把e转化成等级量 if e1>EM;e1=EM;end if e1<-EM;e1=-EM;end j=e1+EM+1; Fi=1; for i=2:mu