日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

模糊控制控制器设计

發(fā)布時(shí)間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模糊控制控制器设计 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

模糊控制設(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上程序:

a=newfis('fuzzf'); %e 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]); %ec f2=1; a=addvar(a,'input','ec',[-2*f2,2*f2]); %這里我們的ec還是選擇五個(gè)模糊集的語(yǔ)言 a=addmf(a,'input',2,'NB','trimf',[-2*f2,-2*f2,-1*f2]); a=addmf(a,'input',2,'NS','trimf',[-2*f2,-1*f2,0]); a=addmf(a,'input',2,'Z','trimf',[-1*f2,0,1*f2]); a=addmf(a,'input',2,'PS','trimf',[0,1*f2,2*f2]); a=addmf(a,'input',2,'PB','trimf',[1*f2,2*f2,2*f2]); %u 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]); %rule rulelist=[1 1 1 1 1; %這里第一列為輸入e,第二列為輸入ec,第三列為輸出u1 2 1 1 1;1 3 1 1 1;1 4 3 1 1;1 5 4 1 1;2 1 1 1 1;2 2 1 1 1;2 3 2 1 1;2 4 3 1 1;2 5 4 1 1;3 1 1 1 1;3 2 2 1 1;3 3 3 1 1;3 4 4 1 1;3 5 5 1 1;4 1 2 1 1;4 2 3 1 1;4 3 4 1 1;4 4 5 1 1;4 5 5 1 1;5 1 2 1 1;5 2 3 1 1;5 3 5 1 1;5 4 5 1 1;5 5 5 1 1;]; a=addrule(a,rulelist); showrule(a) a1=setfis(a,'DefuzzMethod','mom'); writefis(a1,'fuzzf'); a2=readfis('fuzzf'); disp('fuzzy Controller table:e=[-2,+2],ec=[-2,+2]'); %推理 Ulist=zeros(5,5); %這里的ulist為一個(gè)5x5的矩陣 for i=1:5for j=1:5e(i)=-3+i;ec(j)=-3+j;Ulist(i,j)=evalfis([e(i),ec(j)],a2);end endUlist=round(Ulist)' figure(1); plotfis(a2); figure(2);plotmf(a,'input',1); figure(3);plotmf(a,'input',2); figure(4);plotmf(a,'output',1);

整個(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é)

以上是生活随笔為你收集整理的模糊控制控制器设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。