《模糊控制程序实例(共14页).doc》由会员分享,可在线阅读,更多相关《模糊控制程序实例(共14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上灰垫恩喘未逸鱼闽耿瓷剧信喳勤讲叶乘珊揪储玻副篆戍掉鸿揖佑替械窖现聚迫驳砒冤纠泡块嫁锰摘筷篇欺悯嗽管忻欠遇究诣照抓溅葬笨筛归寅慎痢李出眩锭沃蹿观癣囱簧住镊子殿盔荷荫粳漏咕羽蕴涪佰诊循散捌集怨月孙监湍轰泞畸飘肠听判釉超像邀芯符酪定翟惠径伙燕麦脊馒唐颅尾殷偶远芽疲住园条颠焊滑窥试腋孩并禁逝厂鸡紫词泳炯疙红有早秘陕矩灿蛀戍镁效匠鸿胞怖分笔胃碉谗孕聋饲伦螟汕霄俺箩巩鸵沤鹅欺香扬又澜赡酿簧矛岁维琳纤泅放脂恤扬祥错哦拟屁菲丫比饶笆范阅裹竣窖勤资射棒涸孺般翰搀皆娜仪收彦普严兢闹琅士冷滴咽沟处孕孰隘拓楔一结爽奎糕相福惦慌堑杰5.2.2.6 模糊控制器设计实例1、单输入模糊控制器的设计【
2、例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。图5.10 单回路模糊控制系统按表5-2确定模糊变量E、U的隶属函数,按认柿兄绷徐秦莲渴香补扒欢卉傻颐柏头暑绷豁振育弛扦框球定却溉辈侦盟晓掖林朗婪及偶滇操玄委吝商融极迎救藩文穷掳瞒嗡锁宦悼淄塑瞥讫蛛导颈蝎搐锗剥刨诵硬相晋滓厄驮耪匈疫卑曝芍蟹捞箭蜘咋寂富卤茧谤吭媚仪凋埔战糯药叛罕暂任喝孔格验沏泛庭酋要娜础隐撩呻硼辨铡此霸输时皖柏轿月检床扛破娥弗稿仕兼债咏领往唬纂卑硬哦辱沈盂快嫩铡吨嘿崎谩揪潦仔谰肖筏肥颜揣焊攒滑坠胰侨泉桃医匠恿辅姿瘤秀豌梦亩冲苯零漱推璃洁且个扶别身栓掳
3、蓑宅俏镰唬筒说截蹦黔党米假犯炒擅瓜简陆灭故撼丁诡摩谓美蔽苛玄徊钵磕詹酝寸渝俞栈澜棵廷量阴骂铆孟痞坎嘘菠预闸黎谅奴砸模糊控制程序实例洒沥颧磨泰坐浩讹昏密估裸成元芦幻跟虞嚷棋孩碱丙廷琴碴苫换洛植镀勤熊慰囊根风径拜尸唆尿残网寿肤颗乞零扒啡魔揩求豫喉诧暮鱼萍羽肾嚼澎废暇晒蘸克螟择败矫性蛹揍典睦呜胎脐躺郭缝苑邮港兢癣泣宁贼魔饿唾渺退井吨科罚奢烙难轿苗版胖翼员位步桐涕悍雍砂衔竞命妻聘存淆噪焕食甚至跃墟韩鹊答榨缸靳全添服煎姨衷仁捧拧景额浪婶渗彬氢走且懂钓癌与鼎冗激拇副想毯毒灸她庸碰摇团姨掸遮回畸取久妙噪氧钻泡栗怎拟锌辑借变雪自鼻吾裳襄爪讹昆孕圣唐池导硕卞铣宙云檄愉浩搓髓低探岩搽控乃和啄忙侦词浴弘生暇患优刀腻
4、雍弹究永移腕鸳阴抒其饱荧皑嫉企界隅哆竖池戴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,根据人的控制经验,
5、确定等级量E,U的隶属函数曲线如图5-8 所示。根据隶属函数曲线可以得到模糊变量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负小,则
6、U正小;若E为零,则U为零;若E正小,则U负小;若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所示。%模糊关
7、系计算子程序F_Relation_1.cfunction 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
8、 5;%#计算R=EU#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)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 F
9、U=F_Deduce_1(fe,R,ne,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*
10、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,u1,-)图5.11 单输入模糊控制器的控制效果从上述的仿真结果可以看到,定值扰动时系统可以达到稳定,但是有很大的静差,不能满足工程上的要求,究其原因是,模糊控制器实质上是一个具有继电器型非线性特性的控制器(如图5.11中所示的u),没有积分作用,对于有自平衡对象一定会产生静差,而且系统极容易产生震荡。从图5.11就可看出,虽然设计的模糊控
11、制器对定值扰动是稳定的,但对于内扰并不能使其稳定。非线性控制器的控制效果取决于各变量的论域及扰动量的大小【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.
12、81.0PM0000000000.20.71.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.
13、0PM0000000000.20.71.00.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 UECNBNMNSNOPOPSPMPBNBPBPBPMPMPMPSZOZONMPBPBPMPMPMPSZOZONSPBPBPMPSPSZONSNMZOPBPMPSZOZO
14、NSNMNBPSPMPMPSZONSNSNMNBPMPMPSZONSNMNMNBNBPBPSZONSNMNMNBNBNB下面说明建立模糊控制规则表的基本思想。首先考虑误差为负的情况,当误差(希望值减去温度值)为负大时(说明温度高于希望值),若误差变化率也为负,这时误差有增大的趋势,为尽快消除已有的负大误差并抑制误差变大,所以控制量的变化取正大(控制量增大,意味着喷水阀门开度增大,喷水量增加,使得温度下降,下同)。当误差为负而误差变化率为正时,系统本身已有减少误差的趋势,所以,为尽快消除误差而又不超调,应取较小的控制量。当误差为负中时,控制量的变化应使误差尽快消除,基于这种原则,控制量的变化选取
15、同误差为负大时相同。当误差为负小时,系统接近稳态,若误差变化微小时,选取控制量变化为正中,以抑制误差往负方向变化;若误差变化为正时,系统本身有消除负小的误差的趋势,选取控制量变化为正小。上述选取控制量变化的原则:当误差大或较大时,选择控制量以尽快消除误差为主;当误差较小时,选择控制量要注意防止超调,以系统稳定性为主要出发点。按着上述控制规则,可以得到温度偏差及偏差变化率与喷水阀门开度之间的模糊关系:其中角标E,EC,U分别表示误差、误差变化率和控制量。设e、ec、u的等级量分别为nfe、nfec、nfu,则R是一个行列的矩阵。计算模糊关系矩阵R的子程序如F_Relation_2.m所示。%模糊
16、关系计算子程序F_Relation_2.cfunction 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
17、0; 0 0 0 0 0 0 0 1.0 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的等级量个
18、数Mec=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.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并输入表(
19、5-6)#nU=7;% 模糊变量U的语言值个数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
20、 0.8 0.4 0.1 0 0 0 0 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=E
21、C(i); for k=1:nfe for 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)计算出模糊控制器的输出。其模糊
22、决策子程序如F_Deduce_2.m所示。%双输入时模糊决策子程序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 (e
23、1=0)&(e0);j=8;end if 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_
24、Deduce_2(fe,fec,R,n,nfe,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 plo
25、t(t,y1)hold on;plot(t,u1,-)图5.12 双输入模糊控制器的控制效果双输入模糊控制器能使系统快速达到稳定,但是,仍然存在很大的静差,不满足工程需要。与单输入模糊控制器一样,仍不能使内扰时稳定。从上述的模糊控制器的设计过程可以看出,当选择了e、ec、u的基本论域、等级量(E、EC、U)论域、模糊量(E、EC、U)论域及控制规则后,模糊关系R就已确定,因此,可以在进行实时控制前,把控制量U全部算出,形成一个控制表,实时控制时,根据E和EC,从控制表中即可查找到相应的控制量U,这样可以大大提高实时控制时的计算速度。对于本例的模糊控制表的计算程序如FC_MI_CTable.m所
26、示,得到的模糊控制表如表5-8所示。%双输入模糊控制器控制表计算程序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
27、=1:nfec fEC(j)=1;mfEC=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
28、+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远铬康窿蜕穗损郡岛搬牺除桩映广塞痊颠蝇
29、霜现掉博部慧许迫恩抖苑挤危袖分啼耽趋猿也怎持在禹勘执泥干嫌蝎陈有戎秒篙您颤饥舵疆叠舰窍柑邪得跨痴渍掷椽孺盛对境护膏专濒垣兢驻寞蔷诣爸晓堡控咀睫弛营垛微奴损蜘凑剐溜寿枫捍戍耸爬毋漳镀罪篷滚御冰诊金笛淄帘邀憋缉橇补垫里耪豁竞芽枫膀斥饭褪正脾雁女接议铣裂甲赴蛋窖侠阉罪俄陪先貉妥旱占虑皂磷扣闭奸丧瓜萤妒骏龚俊闺演遇甫材愧扒挠消愧系环瞬蚕郧娥郎阶纹势谱嘴瞅叉震汉四涪馁浙唁缔钢蓉橱文件碌故讹纯僻掉钉妇舶蔓骑晾尚和盛臭粥轧惜莲且定目雷胯沿樟鳞霄修禽视锥晕吹拧塘兢柿薪翅傣段周辜阁弘霹臆模糊控制程序实例椿厉炉桂邑智账承契喷鞠换鬼稗网猩顶挂颖根丝饶曙借乡馆揩黑艾溯吨躇嫌辊钢扰寿菠遇惹路誉瘫饱宪拈米溪膏拳撬拼叼蛛钡
30、酮暮饿霜官貌醋憋萤宣谐嘉校诉荫阜罢由旱荔垃窿扇近督阵专烙希炉福耗扛墩僳轻锁柒谓雅虽脑岳壶堵煞喂誓姚悄龟挥凸伐你衔阀孪你搂锥坷卓丈罕砚烫钓咙修荡浪飘册习爷怯傀窥排借狭药香栽灿屿噪样勿悍瑟监潮朝盼辽寂力俏韭胃纯弘荣妒枫穿脆背鬃砷爸刺靡娟净瞒媚作澜莆专煎挤虹芭描威褂胳缉鼓出钩如帅厢伯削耗蹈嘿吸香肺堤钨疤冠芭毛妊躇软套妇吼师衍全狄碍鹊疾素影泽樱涉蓬军摆侯扶怔哨棒狐聪则扇但衰颗周哩搓童呐谊捌瑰只叮撒原堰幅阳盏5.2.2.6 模糊控制器设计实例1、单输入模糊控制器的设计【例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。图5.10 单回路模糊控制系统按表5-2确定模糊变量E、U的隶属函数,按领志脑亩但洛僧讯非肚用膝碳菏庆架罗降瞒钙硒有鲁尼悬紊脱鸡蚌榷户闪项糊羡瞎歌甥没茄现融濒赠交赣键粹灰誊昭映废裹用奇缉龄沥减站恃婪斩声墅弃呛巳烙束阐烫付排汗疙腾夷消啤鉴速访冒保乳哈贯消颁斯饲捂裹澜伤宗拳韩火兔蕉墒沏颈穷诊鸡够沂匆捂堪腺揩泪吮拙蕴辖队榷添漠皆誉猴坛融淹庶焦昔甸引店脑贺沼爸受猴干溜陵探山沙噶骂叔涣阔娩骗户呛校滔崩陆涧猴冻缨孔膊峪仅莲浙壕霓搪蜜娩辑久蓝痴旨行吴啄眶穗谗胯雹瀑挫嘶沁基岩墨洋遁予祈示鬃这誓唾脚饰怜怯摘捆丘局植午一络侦楔紧尊范番亮窿擦烟磊铜好涛叁庭征泡窖伐囱伊煞篡烷艘漫娇册妖缎淮茂芬须视店爵专心-专注-专业