Matlab的Fuzzy工具箱實(shí)現(xiàn)模糊控制rulelist的確定_第1頁
Matlab的Fuzzy工具箱實(shí)現(xiàn)模糊控制rulelist的確定_第2頁
Matlab的Fuzzy工具箱實(shí)現(xiàn)模糊控制rulelist的確定_第3頁
Matlab的Fuzzy工具箱實(shí)現(xiàn)模糊控制rulelist的確定_第4頁
Matlab的Fuzzy工具箱實(shí)現(xiàn)模糊控制rulelist的確定_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、引用 如何在MATLAB下把模糊推理系統(tǒng)轉(zhuǎn)化為查詢表(原創(chuàng))Matlab 2009-12-26 22:05:01 閱讀161 評(píng)論0   字號(hào):大中小 訂閱  引用foundy 的 如何在MATLAB下把模糊推理系統(tǒng)轉(zhuǎn)化為查詢表(原創(chuàng))                           

2、                                          李會(huì)先摘  要:該文論述了將MATLAB下調(diào)試成功的模糊邏輯轉(zhuǎn)換為查詢表的一種技巧,這種技巧不直

3、接使用MATLAB的矩陣計(jì)算方法,操作者多數(shù)情況下只需點(diǎn)擊鼠標(biāo)就可完成任務(wù),效率比較高,該方法使用MATLAB下的系統(tǒng)測(cè)試工具,收集構(gòu)造查詢表所需的數(shù)據(jù)資料,文中以MATLAB中的水位模糊控制演示模型為例,把該系統(tǒng)的模糊控制推理模塊用在其基礎(chǔ)上生成的查詢表代替后再進(jìn)行水位控制仿真,控制效果與模糊推理模塊在線推理控制是一致的。 關(guān)鍵詞:模糊控制;查詢表;MATLAB;Simulink; 系統(tǒng)測(cè)試  Abstract:This article discuss a skill that make a translation from fuzzy logic system to L

4、ookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill b

5、y a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is very well. Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest 

6、 1.  引 言在MATLAB/Simulink下,構(gòu)建模糊邏輯系統(tǒng)模型和調(diào)試其推理規(guī)則都是很方便的34,我們當(dāng)然不希望在MATLAB下的仿真工作僅僅用于仿真目的,如果實(shí)際產(chǎn)品設(shè)計(jì)能繼承仿真的工作成果,將事半功倍。在MATLAB里,還沒有把模糊推理系統(tǒng)直接轉(zhuǎn)化為查詢表的工具,盡管Fuzzy Logic 提供的gensurf(FIS)指令可生成響應(yīng)面的數(shù)據(jù),但用這種方法獲得的數(shù)據(jù)生成查詢表控制效果不理想,借助于MATLAB下的系統(tǒng)測(cè)試工具是另一種實(shí)現(xiàn)這一目標(biāo)的方法。因?yàn)椴樵儽碛糜谝恍┝畠r(jià)的嵌入式系統(tǒng)效率比較高,也節(jié)省系統(tǒng)資源,所以在MATLAB下實(shí)現(xiàn)這種轉(zhuǎn)化是非常有意義的。 我們知道,

7、模糊邏輯推理系統(tǒng)是輸入變量空間到輸出變量空間的一種映射,而查詢表也是實(shí)現(xiàn)輸入變量空間到輸出變量空間的一種映射,它們只不過是可實(shí)現(xiàn)非線性映射的兩種方法而已。當(dāng)通過Simulink/Fuzzy Logic Toolbox實(shí)現(xiàn)了一個(gè)模糊推理系統(tǒng),不妨把它看成一個(gè)黑箱按系統(tǒng)辯識(shí)的思路來測(cè)試它,這時(shí)我們只關(guān)心它的輸入與輸出,每當(dāng)在這個(gè)黑箱的輸入端饋入一個(gè)輸入,那么它的輸出就相應(yīng)有一個(gè)輸出響應(yīng),能否在這個(gè)黑箱輸入端送入所有輸入變量的可能組合來觀測(cè)輸出呢?答案是肯定的,查詢表的構(gòu)造正需要這些輸入輸出數(shù)據(jù)組,有了這些數(shù)據(jù),建立一個(gè)查詢表就簡(jiǎn)單了。一般來說輸入變量有一定義范圍,計(jì)算機(jī)的A/D變換和模糊系統(tǒng)模糊化

8、處理時(shí)都存在量化過程,在這個(gè)黑箱的輸入端送入的測(cè)試變量值當(dāng)然也是離散化了的,一個(gè)兩變量的系統(tǒng),如果每個(gè)變量被離散化為10個(gè)值,那么總共就需要100次測(cè)試,隨著系統(tǒng)變量的增加或量化等級(jí)的提高,需做的輸入測(cè)試成級(jí)數(shù)快數(shù)增長(zhǎng),借助與MATLAB里的系統(tǒng)測(cè)試工具,可以快速做這類測(cè)試并收集系統(tǒng)輸出數(shù)據(jù)。 2.   系統(tǒng)測(cè)試準(zhǔn)備  下面以MATLAB下的一簡(jiǎn)單的模糊控制演示系統(tǒng)為例來闡述把模糊邏輯轉(zhuǎn)化為查詢表的過程。      2.1 準(zhǔn)備模糊控制系統(tǒng)模型      在MATL

9、AB的Fuzzy Logic下打開Water Level Control in a Tank(水槽水位控制),另保存到一個(gè)不同的目錄下,名字為sltankrule,該演示Simulink模型如下:                            圖1 水槽水位模糊控制系統(tǒng)該演示模型目的比較模糊控制和PID控制水位的效果,其中Fuzz

10、y Controller with Ruleviever模塊里的tank模糊推理系統(tǒng)已經(jīng)做好了,這里不在熬述,在其兩個(gè)輸入中,水位誤差輸入變量范圍是-1 1,水位變化率輸入變量范圍是-0.1 0.1,輸出變量閥門開度范圍是-1 1。 2.2 準(zhǔn)備模糊控制系統(tǒng)測(cè)試模型把這個(gè)模型修改成如下樣字,另存為一個(gè)文件名,比如sltankruletotest。                     

11、       圖2 水槽水位模糊控制系統(tǒng)測(cè)試模型 修改成這種樣字后,A、B分別模擬該模糊系統(tǒng)水位誤差輸入、水位變化率,Out1模擬閥門的開度,注意把Simulation Stop Time設(shè)置為0.02。2.3 準(zhǔn)備查詢表模型在Simulink下建一個(gè)二維查詢表模型,另存為一個(gè)文件名,比如FuzzyLookup,這樣做是為了以后查詢表調(diào)試好后,可用Simulink的代碼生產(chǎn)工具把它生成C代碼,樣子如下:           &

12、#160;                       圖3 查詢表模型 3.  系統(tǒng)測(cè)試操作模型切換到sltankruletotest ,點(diǎn)擊ToolsSytemTest樣子如下:               

13、;                            圖4 系統(tǒng)測(cè)試設(shè)置1在系統(tǒng)測(cè)試main Test里加入Simulink組件,該組件Mappings下的Define Model overrides屬性項(xiàng)可以把Simulink模型的輸入?yún)?shù)映射到用戶自定義的測(cè)試向量,該組件Mappings下的Define Map Simu

14、link Data to Test Variables 屬性項(xiàng)把Simulink模型的輸出參數(shù)映射到用戶自定義的測(cè)試變量,這里把被測(cè)試模糊模型sltankruletotest里的A、B映射到自定義測(cè)試向量TestVector1、TestVector2,TestVector1定義為-1:0.2 : 1、 TestVector2定義為-0.1:0.01 :0.1,模糊模型輸出out1映射到自定義測(cè)試變量st_signal.最后選擇系統(tǒng)測(cè)試環(huán)境Test Browser下的Save Results項(xiàng),設(shè)置成下面的樣子:        

15、;                              圖5 系統(tǒng)測(cè)試設(shè)置2 在SystemTest環(huán)境下,點(diǎn)擊Run,開始系統(tǒng)測(cè)試,系統(tǒng)進(jìn)行迭代測(cè)試,測(cè)試結(jié)束后點(diǎn)擊FileSave Test Results as保存測(cè)試結(jié)果在T.mat文件下,以備后用,測(cè)試結(jié)束后,可以查看如下系統(tǒng)輸入輸出曲面結(jié)果:&

16、#160;                  圖6 水槽水位模糊系統(tǒng)測(cè)試輸入輸出結(jié)果界面切換到MATLAB主界面,點(diǎn)擊File/Open,打開T.mat,在命令窗下鍵入命令whos,會(huì)看到如下結(jié)構(gòu)變量:stresults  1x1  2268  struct,該結(jié)構(gòu)保存了模型sltankruletotest的輸入變量的測(cè)試數(shù)據(jù),輸出變量響應(yīng)數(shù)據(jù),它們分別是:兩輸入測(cè)試向量數(shù)據(jù)組:一輸出向量數(shù)據(jù)組:可以在MA

17、TLAB命令行鍵入以上命令看這些變量具體數(shù)據(jù)內(nèi)容。界面切換到FuzzyLookup,雙擊LookupTable (2-D),界面屬性設(shè)置如下:                       圖7 查詢表模塊參數(shù)設(shè)置再點(diǎn)擊該屬性窗上的Edit,Simulink自動(dòng)生成如下樣式的表格:        &#

18、160;                             圖8 查詢表模塊數(shù)據(jù)查詢表生成后樣子如下:                 

19、0;        圖9 生成查詢表模塊外觀4.  用查詢表替代模糊控制器測(cè)試水位控制效果把生成的查詢表考貝到sltankrule,替換掉原來的模糊推理組件,樣子如下:                             &#

20、160;  圖10 用查詢替換模糊控制器后的控制系統(tǒng)查詢表采用interplolation-extrapolstion查尋方法,現(xiàn)在再仿真該水位控制系統(tǒng),通過看水位控制動(dòng)畫表示,查尋表水位的控制和原來的模糊規(guī)則控制效果已經(jīng)相當(dāng),如果換一種查詢表查詢方法,比如use input nearest查尋方法,控制效果就差了,究其原因是在測(cè)試環(huán)節(jié)我們的測(cè)試向量量化等級(jí)不足所致,如果把測(cè)試向量修改一下,比如:TestVector1定義為-1:0.08 : 1、 TestVector2定義為-0.1:0.01 :0.1再做測(cè)試收集數(shù)據(jù),生成查詢表,那么查詢表無論采用那一種查詢方法,水位的控制效果都

21、很好了,這時(shí)查詢表表格變大了些。獲得這個(gè)表格后,對(duì)于嵌入式系統(tǒng),即使用匯編語言寫出該表的查詢程序也是很容易了。5. 總結(jié)本文講述了在MATLAB 環(huán)境下,把模糊邏輯系統(tǒng)轉(zhuǎn)化為查詢表的一種方法,這種方法簡(jiǎn)單易行,查詢表控制也達(dá)到了模糊控制的同樣效果,按以上思路,也容易理解在MATLAB 下,用其它方法建立的部分系統(tǒng)模型,如果有必要的話,也可使用同樣的的方法把它轉(zhuǎn)化成查詢表,從工程角度出發(fā),這種方法使得工程技術(shù)人員在產(chǎn)品設(shè)計(jì)中輕松實(shí)現(xiàn)模糊邏輯建模仿真到實(shí)際應(yīng)用的連貫設(shè)計(jì)流程。Matlab 的 Fuzzy 工具箱實(shí)現(xiàn)模糊控制(rulelist的確定) 用 Matlab 的 Fuzzy 工具

22、箱實(shí)現(xiàn)模糊控制- -用 Matlab 中的 Fuzzy 工具箱做一個(gè)簡(jiǎn)單的模糊控制,流程如下:1、創(chuàng)建一個(gè) FIS (Fuzzy Inference System ) 對(duì)象,a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod)一般只用提供第一個(gè)參數(shù)即可,后面均用默認(rèn)值。2、增加模糊語言變量a = addvar(a,'varType','varName',varBounds)模糊變量有兩類:input 和 output。在每增加模糊變量,都會(huì)按順序分配一個(gè)

23、index,后面要通過該 index 來使用該變量。3、增加模糊語言名稱,即模糊集合。a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每個(gè)模糊語言名稱從屬于一個(gè)模糊語言。Fuzzy 工具箱中沒有找到離散模糊集合的隸屬度表示方法,暫且用插值后的連續(xù)函數(shù)代替。參數(shù) mfType 即隸屬度函數(shù)(Membership Functions),它可以是 Gaussmf、trimf、trapmf等,也可以是自定義的函數(shù)。每一個(gè)語言名稱也會(huì)有一個(gè) index,按加入的先后順序得到,從 1 開始。4、增加控制規(guī)則,即模糊推理的規(guī)則。a = addrule(a,ruleList)其中 ruleList 是一個(gè)矩陣,每一行為一條規(guī)則,他們之間是 ALSO 的關(guān)系。假定該 FIS 有 N 個(gè)輸入和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論