模糊控制控制器设计
模糊控制設(shè)計(jì)控制器
模糊控制的具體過(guò)程不詳細(xì)介紹,具體參考例子參考博客:https://www.cnblogs.com/long5683/p/9963488.html
問(wèn)題
使用一個(gè)具體的問(wèn)題來(lái)解釋模糊控制器的設(shè)計(jì):設(shè)計(jì)一個(gè)模糊控制器,通過(guò)控制進(jìn)水電磁閥V1的開(kāi)啟度,將液位穩(wěn)定在倒錐形容器的液位高度h。變量的量化等級(jí)均為5級(jí),取5個(gè)語(yǔ)言值。設(shè)計(jì)模糊控制器
圖如下:
一維模糊控制器
設(shè)計(jì):
e=h0?he=h_0-he=h0??h
則為eee的大小分成五類(lèi):負(fù)大(NB)、負(fù)小(NS)、零(ZOZ_OZO?)、正小(PS)、正大(PB)
根據(jù)偏差e的變化范圍分為五個(gè)等級(jí):-2,-1,0,+1,+2。得到水位變化(e)模糊表:
控制量u為調(diào)節(jié)閥門(mén)開(kāi)度的變化。將其分為五個(gè)模糊集:負(fù)大(NB),負(fù)小(NS),零(ZO),正小(PS),正大(PB)。并將u的變化范圍分為七個(gè)等級(jí):-3,-2,-1,0,+1,+2,+3。得到控制量(u)模糊劃分表。
根據(jù)日常的經(jīng)驗(yàn),設(shè)計(jì)以下模糊規(guī)則:
(1)“若e負(fù)大,則u負(fù)大”
(2)“若e負(fù)小,則u負(fù)小”
(3)“若e為0,則u為0”
(4)“若e正小,則u正小”
(5)“若e正大,則u正大”
其中,排水時(shí),u為負(fù),注水時(shí),u為正。
上述規(guī)則采用“IF A THEN B”形式來(lái)描述:
(1) if e=NB then u=NB
(2) if e=NS then u=NS
(3) if e=0 then u=0
(4) if e=PS then u=PS
(5) if e=PB then u=PB
下面是matlab程序:
a=newfis('fuzzf'); %輸入 f1=1; a=addvar(a,'input','e',[-2*f1,2*f1]); a=addmf(a,'input',1,'NB','trimf',[-2*f1,-2*f1,-1*f1]); a=addmf(a,'input',1,'NS','trimf',[-2*f1,-1*f1,0]); a=addmf(a,'input',1,'Z','trimf',[-1*f1,0,1*f1]); a=addmf(a,'input',1,'PS','trimf',[0,1*f1,2*f1]); a=addmf(a,'input',1,'PB','trimf',[1*f1,2*f1,2*f1]); %輸出 f8=1; a=addvar(a,'output','u',[-3*f8,3*f8]); a=addmf(a,'output',1,'NB','trimf',[-3*f8,-3*f8,-1*f8]); a=addmf(a,'output',1,'NS','trimf',[-3*f8,-1*f8,1*f8]); a=addmf(a,'output',1,'Z','trimf',[-2*f8,0,2*f8]); a=addmf(a,'output',1,'PS','trimf',[-1*f8,1*f8,3*f8]); a=addmf(a,'output',1,'PB','trimf',[1*f8,3*f8,3*f8]); %規(guī)則庫(kù) rulelist=[1 1 1 1; %第一列為輸入,第二列為輸出,第三列為權(quán)重(一般取1),第四列為and/or(1為and,2為or)2 2 1 1; %第一第二列的1為NB,2為NS,3為Zo,4為PS,5為PB,具體規(guī)則參考規(guī)則表上。3 3 1 1;4 4 1 1;5 5 1 1;]; a=addrule(a,rulelist); showrule(a) a1=setfis(a,'DefuzzMethod','mom'); writefis(a1,'fuzzf'); a2=readfis('fuzzf'); figure(1);plotfis(a2); figure(2);plotmf(a,'input',1); figure(4);plotmf(a,'output',1); %disp('fuzzy Controller table:e=[-3,+3],ec=[-3,+3]');%顯示矩陣和數(shù)組內(nèi)容 %推理 for i=1:1:5 %因?yàn)檩斎胱兓燃?jí)有五個(gè)e(i)=i-3; %變化等級(jí)的范圍在-2~+2Ulist(i)=evalfis([e(i)],a2); end Ulist=round(Ulist) %單獨(dú)推理 E=-1; %e為NS時(shí)進(jìn)行推理 u=evalfis(E,a2);一維模糊控制器的系統(tǒng)框架圖如下:
e的隸屬函數(shù)圖像如下:
u的隸屬函數(shù)圖如下:
二維模糊控制器
在上面的基礎(chǔ)上,引入偏差變化量(ececec),此處ec為NB意思是加水快,NS為加水慢,Z為加水無(wú)變化,PS為排水慢,PB為排水快速。因此我們可以得到25條規(guī)則如下:
這里仔細(xì)解釋一下,黑色的字體為U的動(dòng)作,紅色字體橫著的為輸入水位偏差e,豎著的為偏差變化量ec。
舉個(gè)例子:
If e=NB and ec=NB then U=NB (如果水位極高,水加的快,則排水排的快)
if e=PS and ec=PB then U=PB (如果水位略微低,水排的很快,則需要加水加大)
此時(shí)我們已經(jīng)有了規(guī)則表,因此直接進(jìn)入matlab上程序:
整個(gè)二維模糊控制器的框架圖如下:
e的隸屬函數(shù)圖如下:
ec的隸屬函數(shù)圖如下:
u的隸屬函數(shù)圖如下:
補(bǔ)充
此處的輸入量化等級(jí)是題目要求為五級(jí),正常情況,可以自行根據(jù)情況選擇,若等級(jí)選擇高了會(huì)更精細(xì),但是系統(tǒng)復(fù)雜程度會(huì)上升。變量的語(yǔ)言值也可以選擇多幾個(gè),例如PM、NM等。
二維模糊控制器的設(shè)計(jì)過(guò)程中,該控制器的規(guī)則表可以自行定義,程序運(yùn)行后能與自己設(shè)計(jì)的規(guī)則對(duì)應(yīng)到就行。
總結(jié)
- 上一篇: “测不准原理”在计算机领域的体现
- 下一篇: 舍近求远