模糊控制程序实例.doc

上传人:小飞机 文档编号:3911258 上传时间:2023-03-27 格式:DOC 页数:13 大小:435KB
返回 下载 相关 举报
模糊控制程序实例.doc_第1页
第1页 / 共13页
模糊控制程序实例.doc_第2页
第2页 / 共13页
模糊控制程序实例.doc_第3页
第3页 / 共13页
模糊控制程序实例.doc_第4页
第4页 / 共13页
模糊控制程序实例.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《模糊控制程序实例.doc》由会员分享,可在线阅读,更多相关《模糊控制程序实例.doc(13页珍藏版)》请在三一办公上搜索。

1、5.2.2.6 模糊控制器设计实例1、单输入模糊控制器的设计【例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。图5.10 单回路模糊控制系统按表5-2确定模糊变量E、U的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e、控制量u的实际论域:,则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m所示,仿真结果如图5.11所示。设温度偏差e、控制量u的实际论域:,选择e、u的等级量论域为量化因子。选择模糊词集为NB,NS,ZO,PS,PB,根据人的控制经验,确定等级量E,U的隶属函数曲线如图5-8

2、所示。根据隶属函数曲线可以得到模糊变量E、U的赋值表如表5-3所示。图5-8 E,U的隶属函数曲线表5-3 模糊变量E、U的赋值表()等级量E、U-3-2-10123PB000000.51PS000010.50ZO000.510.500NS00.510000NB10.500000依据人手动控制的一般经验,可以总结出一些控制规则,例如:若误差E为O,说明温度接近希望值,喷水阀保持不动;若误差E为正,说明温度低于希望值,应该减少喷水;若误差E为负,说明温度高于希望值,应该增加喷水。若采用数学符号描述,可总结如下模糊控制规则:若E负大,则U正大;若E负小,则U正小;若E为零,则U为零;若E正小,则U

3、负小;若E正大,则U负大。写成模糊推理句:if E=NB then U=PBif E=NS then U=PSif E=ZO then U=ZOif E=PS then U=NSif E=PB then U=NB由上述的控制规则可得到模糊控制规则表,如表5-4所示。表5-4 模糊控制规则表ENBNSZOPSPBUPBPSZONSNB模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域E到控制量论域U的模糊关系R。按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系:计算模糊关系矩阵R的子程序如F_Relation_1.m所示。%模糊关系计算子程序F_Relation_1.cf

4、unction 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=EU#R=zeros(n

5、e,nu);for i=1:mfc iu=UC(i); ie=E(i); for k=1:ne for l=1:nu if Me(ie,k)R(k,l) R(k,l)=Reu(k,l); end end endend运行结果如下:由此,可以得到各种输入时,模糊控制器的输出:单输入时: (5-5)双输入时: (5-6)三输入时: (5-7)例如:单输入时,设,根据前面的等级量划分原则,其等级量,由表5-2可以查出。根据式(5-5)可以得到:其模糊决策子程序如F_Deduce_1.m所示。%单输入时模糊决策子程序F_Deduce_1.mfunction FU=F_Deduce_1(fe,R,ne,

6、nu)for i=1:nu for j=1:ne if fe(j)EM;e1=EM;end if e1Me(i-1,j);Fi=i;end;%得到模糊语言值 end U=F_Deduce_1(Me(Fi,:),R,ne,nu);%调用模糊决策子程序 %加权平均法判决控制器的输出 Su=0;S=0; for i=-UM:UM Su=Su+i*U(i+UM+1);S=S+U(i+UM+1); end u=Ku*Su/S+ur; %*仿真计算被控对象* x(1)=A1*x(1)-1.1*B1*u; x(2)=A1*x(2)+B1*x(1); x(3)=A1*x(3)+B1*x(2); x(4)=A1

7、*x(4)+B1*x(3); y1(k)=x(4); u1(k)=u; t(k)=k*DT; if t(k)800;ur=0.5;end;%800秒后加入内扰end plot(t,y1)hold on;plot(t,u1,-)图5.11 单输入模糊控制器的控制效果从上述的仿真结果可以看到,定值扰动时系统可以达到稳定,但是有很大的静差,不能满足工程上的要求,究其原因是,模糊控制器实质上是一个具有继电器型非线性特性的控制器(如图5.11中所示的u),没有积分作用,对于有自平衡对象一定会产生静差,而且系统极容易产生震荡。从图5.11就可看出,虽然设计的模糊控制器对定值扰动是稳定的,但对于内扰并不能使

8、其稳定。非线性控制器的控制效果取决于各变量的论域及扰动量的大小【1】,因此,模糊控制器的大范围工程应用还有许多问题需要研究。2、双输入模糊控制器的设计【例5.13】对于图5.10所示的系统,设计双输入模糊控制器,观察定值扰动和内部扰动的控制效果。下面考虑两个输入的情况:设温度偏差e、偏差变化率ec及控制量u的实际论域:,选择它们的等级量论域分别为量化因子,假设选取E的模糊变量词集为选取模糊变量E的赋值表如表5-5所示。表5-5 e的等级量与模糊量的关系 EE-6-5-4-3-2-1-0+0+1+2+3+4+5+6PB00000000000.10.40.81.0PM0000000000.20.7

9、1.00.70.2PS00000000.30.81.00.50.100PO000000 01.00.60.10000NO00000.10.61.00000000NS000.10.51.00.80.30000000NM0.20.71.00.70.2000000000NB1.00.80.40.10000000000选取EC、U的模糊变量词集为选取模糊变量EC的赋值表如表5-2所示,模糊变量U的赋值表如表5-6所示。表5-6等级量U与模糊量U的关系 UU-7-6-5-4-3-2-10+1+2+3+4+5+6+7PB000000000000.10.40.81.0PM0000000000.20.71.0

10、0.70.20PS00000000.41.00.80.40.1000ZO0000000.5 1.00.5000000NS0000.10.40.81.00.40000000NM00.20.71.00.70.2000000000NB1.00.80.40.100000000000现将操作者在操作过程中遇到的各种出现的情况和相应的控制策略汇总为表5-7。表5-7 双输入时的模糊控制规则表 E UECNBNMNSNOPOPSPMPBNBPBPBPMPMPMPSZOZONMPBPBPMPMPMPSZOZONSPBPBPMPSPSZONSNMZOPBPMPSZOZONSNMNBPSPMPMPSZONSNSN

11、MNBPMPMPSZONSNMNMNBNBPBPSZONSNMNMNBNBNB下面说明建立模糊控制规则表的基本思想。首先考虑误差为负的情况,当误差(希望值减去温度值)为负大时(说明温度高于希望值),若误差变化率也为负,这时误差有增大的趋势,为尽快消除已有的负大误差并抑制误差变大,所以控制量的变化取正大(控制量增大,意味着喷水阀门开度增大,喷水量增加,使得温度下降,下同)。当误差为负而误差变化率为正时,系统本身已有减少误差的趋势,所以,为尽快消除误差而又不超调,应取较小的控制量。当误差为负中时,控制量的变化应使误差尽快消除,基于这种原则,控制量的变化选取同误差为负大时相同。当误差为负小时,系统接

12、近稳态,若误差变化微小时,选取控制量变化为正中,以抑制误差往负方向变化;若误差变化为正时,系统本身有消除负小的误差的趋势,选取控制量变化为正小。上述选取控制量变化的原则:当误差大或较大时,选择控制量以尽快消除误差为主;当误差较小时,选择控制量要注意防止超调,以系统稳定性为主要出发点。按着上述控制规则,可以得到温度偏差及偏差变化率与喷水阀门开度之间的模糊关系:其中角标E,EC,U分别表示误差、误差变化率和控制量。设e、ec、u的等级量分别为nfe、nfec、nfu,则R是一个行列的矩阵。计算模糊关系矩阵R的子程序如F_Relation_2.m所示。%模糊关系计算子程序F_Relation_2.c

13、function R,n,nE,nEC,nU,nfe,nfec,nfu,Me,Mec=func()%#定义E的模糊变量值1=PB,2=PM,3=PS,4=-O,5=+0,6=NS,7=NM,8=NB并输入表(5-5)#nE=8;%模糊变量E的语言值个数控制表列数E=8 7 6 5 4 3 2 1;nfe=14;%E的等级量个数Me=0 0 0 0 0 0 0 0 0 0 0.1 0.4 0.8 1.0; 0 0 0 0 0 0 0 0 0 0.2 0.7 1.0 0.7 0.2; 0 0 0 0 0 0 0 0.3 0.8 1.0 0.5 0.1 0 0; 0 0 0 0 0 0 0 1.0

14、0.6 0.1 0 0 0 0; 0 0 0 0 0.1 0.6 1.0 0 0 0 0 0 0 0; 0 0 0.1 0.5 1.0 0.8 0.3 0 0 0 0 0 0 0; 0.2 0.7 1.0 0.7 0.2 0 0 0 0 0 0 0 0 0; 1.0 0.8 0.4 0.1 0 0 0 0 0 0 0 0 0 0;%#定义EC的模糊变量值1=PB,2=PM,3=PS,4=0,5=NS,6=NM,7=NB并输入表(5-2)#nEC=7;% 模糊变量EC的语言值个数控制表行数EC=7 6 5 4 3 2 1;nfec=13;%EC的等级量个数Mec=0 0 0 0 0 0 0 0

15、0 0.1 0.4 0.8 1.0; 0 0 0 0 0 0 0 0 0.2 0.7 1.0 0.7 0.2; 0 0 0 0 0 0 0 0.9 1.0 0.7 0.2 0 0; 0 0 0 0 0 0.5 1.0 0.5 0 0 0 0 0; 0 0 0.2 0.7 1.0 0.9 0 0 0 0 0 0 0; 0.2 0.7 1.0 0.7 0.2 0 0 0 0 0 0 0 0;1.0 0.8 0.4 0.1 0 0 0 0 0 0 0 0 0; %#定义U的模糊变量值1=PB,2=PM,3=PS,4=0,5=NS,6=NM,7=NB并输入表(5-6)#nU=7;% 模糊变量U的语言值

16、个数U=7 6 5 4 3 2 1;nfu=15;%U的等级量个数Mu=0 0 0 0 0 0 0 0 0 0 0 0.1 0.4 0.8 1.0; 0 0 0 0 0 0 0 0 0 0.2 0.7 1.0 0.7 0.2 0; 0 0 0 0 0 0 0 0.4 1.0 0.8 0.4 0.1 0 0 0; 0 0 0 0 0 0 0.5 1.0 0.5 0 0 0 0 0 0; 0 0 0 0.1 0.4 0.8 1.0 0.4 0 0 0 0 0 0 0; 0 0.2 0.7 1.0 0.7 0.2 0 0 0 0 0 0 0 0 0; 1.0 0.8 0.4 0.1 0 0 0 0

17、0 0 0 0 0 0 0;%#输入模糊控制规则表(表5-7)#nfc=8;%模糊变量E的语言值个数,模糊控制表列数mfc=7;%模糊变量EC的语言值个数,模糊控制表行数UC=1 1 2 2 2 3 4 4;1 1 2 2 2 3 4 4;1 1 2 3 3 4 5 6;1 2 3 4 4 5 6 7; 2 2 3 4 5 5 6 7;2 3 4 5 6 6 7 7;3 4 5 6 6 7 7 7;%#计算R=(EECU)#R=zeros(nfe*nfec,nfu);for i=1:mfc for j=1:nfc %EEC ie=E(j); iec=EC(i); for k=1:nfe for

18、 l=1:nfec if Me(ie,k)Mec(iec,l) Reec(k,l)=Me(ie,k); else Reec(k,l)=Mec(iec,l); end end end %EECU iu=UC(i,j); n=0; for k=1:nfe for l=1:nfec n=n+1; for t=1:nfu if Reec(k,l)R(k,l) R(k,l)=Reecu(k,l); end end end endend双输入时,先根据e、ec计算出相应的等级量E、EC,再根据表(5-2)查出相应的,然后按式(5-6)计算出模糊控制器的输出。其模糊决策子程序如F_Deduce_2.m所示。

19、%双输入时模糊决策子程序F_Deduce_2.mfunction FU=F_Deduce_2(fe,fec,R,n,nfe,nfec,nfu)%#计算EEC#n=0;for i=1:nfe for j=1:nfec n=n+1; if fe(i)fec(j) feec(n)=fe(i); else feec(n)=fec(j); end endend%#计算(EEC)。R#for l=1:nfu for i=1:n if feec(i)EM;e1=EM;end if e1-EM;e1=-EM;end if e10;j=e1+EM+1;end if (e1=0)&(e0);j=8;end if

20、e10;j=e1+EM+2;end %得到e的模糊语言值Fi=1;mfE=Me(1,j); for i=2:nE if Me(i,j)mfE;Fi=i;mfE=Me(i,j);end end fe=Me(Fi,:); %#变量ec模糊化处理# ec=(e-e0)/DT; e0=e;计算ec的确切量 ec1=round(Kec*ec);% 把ec转换成等级量 if ec1ECM;ec1=ECM;end if ec1mfEC;Fi=i;mfEC=Mec(i,j);end end fec=Mec(Fi,:); %#调用模糊决策子程序,求出控制量# FU=F_Deduce_2(fe,fec,R,n,n

21、fe,nfec,nfu); %最大隶属度法判决控制器的输出 nU=1;mFU=FU(1); for i=2:nfu if FU(i)mFU;nU=i;mFU=FU(i);end endu=Ku*U(nU)+ur; %*仿真计算被控对象* x(1)=A1*x(1)-1.1*B1*u; x(2)=A1*x(2)+B1*x(1); x(3)=A1*x(3)+B1*x(2); x(4)=A1*x(4)+B1*x(3); y1(k)=x(4); u1(k)=u; t(k)=k*DT; if t(k)800;ur=0.5;end;%800秒后加入内扰end plot(t,y1)hold on;plot(t

22、,u1,-)图5.12 双输入模糊控制器的控制效果双输入模糊控制器能使系统快速达到稳定,但是,仍然存在很大的静差,不满足工程需要。与单输入模糊控制器一样,仍不能使内扰时稳定。从上述的模糊控制器的设计过程可以看出,当选择了e、ec、u的基本论域、等级量(E、EC、U)论域、模糊量(E、EC、U)论域及控制规则后,模糊关系R就已确定,因此,可以在进行实时控制前,把控制量U全部算出,形成一个控制表,实时控制时,根据E和EC,从控制表中即可查找到相应的控制量U,这样可以大大提高实时控制时的计算速度。对于本例的模糊控制表的计算程序如FC_MI_CTable.m所示,得到的模糊控制表如表5-8所示。%双输

23、入模糊控制器控制表计算程序FC_MI_CTable.mFCU_T=FC_MI_CTable;U=-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7;%#调用计算模糊关系矩阵R的子程序F_Relation_2.m#R,n,nE,nEC,nU,nfe,nfec,nfu,Me,Mec=F_Relation_2;%#计算控制表#for i=1:nfe fE(i)=1;mfE=Me(1,i); for l=2:nE if Me(l,i)mfE;fE(i)=l;mfE=Me(l,i);end end fe=Me(fE(i),:); for j=1:nfec fEC(j)=1;mfEC

24、=Mec(1,j); for l=2:nEC if Mec(l,j)mfEC;fEC(j)=l;mfEC=Mec(l,j);end end fec=Mec(fEC(j),:); FU=F_Deduce_2(fe,fec,R,n,nfe,nfec,nfu); %调用模糊决策子程序 %最大隶属度法判决控制器的输出 mU=1;mFU=FU(1); for l=2:nfu if FU(l)mFU;mU=l;mFU=FU(l);end end FCU_T(j,i)=U(mU); endend表5-8 模糊控制表ECUE-6-5-4-3-2-1-0+0+1+2+3+4+5+6-677774444110000-577774444110000-477774444110000-37777441100-1-1-4-4-27777441100-1-1-4-4-17777441100-1-1-4-4077441100-1-1-4-4-7-7+14444110-1-1-1-4-4-7-7+24444110-1-1-1-4-4-7-7+3441100-1-4-4-4-7-7-7-7+4441100-1-4-4-4-7-7-7-7+51100-1-1-4-4-7-7-7-7-7-7+61100-1-1-4-4-7-7-7-7-7-7

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号