模糊邏輯工具箱在Simulink中…
下面用一個簡單的例子作介紹:
(本例不是特別針對實現什麼功能,只是為了介紹方便)
第一部分 建立一個模糊邏輯(.fis檔案)
第一步:開啟模糊推理系統編輯器
步驟:
在Commond Window 鍵入fuzzy
回車
第二步:使用模糊推理系統編輯器
本例用到兩個輸入,兩個輸出,但預設是一個輸人,一個輸出
步驟:
1、新增一個輸入
2、選擇Input、output(選中為紅框),在Name框裡修改各輸入的名稱
並將And method 改為prod,將Or method 改為 probor
第三步:使用隸屬函式編輯器
該編輯器提供一個友好的人機圖形互動環境,用來設計和修改模糊推理系中各語言變數對應的隸屬度函式的相關引數,如隸屬度函式的形狀、範圍、論域大小等,系統提供的隸屬度函式有三角、梯形、高斯形、鐘形等,也可使用者自行定義。
步驟:
1、 雙擊任何一個輸入量(In_x、In_y)或輸出量開啟隸屬度函式編輯器。
2、在左下處Range和Display
Range處新增取值範圍,本例中In_x和In_y的取值範圍均為[0 10],
Out_x和Out_y的取值範圍均為[0
1]
3、預設每個輸入輸出引數中都只有3個隸屬度函式,本例中每個輸入輸出引數都需要用到五個,其餘幾個需要自己新增:
選中其中一個輸入輸出引數
點選Edit選單,選Add MFS…開啟下列對話方塊
將MF type設定為trimf(三角形隸屬度函式曲線,當然你也需要選擇其他型別)
將Number of MFs 設定為2
點選OK按鈕
同樣給其他三個加入隸屬度函式
4、選中任何一個隸屬度函式(選中為紅色),在Name 中鍵入名稱,在Type中選擇形狀,在Params中鍵入範圍,然後回車如下圖:
Name |
Type |
Params |
IXL2IYL2 |
zmf |
[1 1.5] |
IXL1IYL1 |
trimf |
[1 2.5 4] |
IXZIYZ |
trimf |
[3 5 7] |
IXR1IYR1 |
trimf |
[6 7.5 9] |
IXR2IYR2 |
smf |
[8.5 9] |
Out_x,Out_y隸屬度函式相同,如下:
Name |
Type |
Params |
OXL2OYL2 |
zmf |
[0.1 0.15] |
OXL1OYL2 |
trimf |
[0.1 0.25 0.4] |
OXZOYZ |
trimf |
[0.3 0.5 0.7] |
OXR1OYR1 |
trimf |
[0.6 0.75 0.9] |
OXR2OYR2 |
smf |
[0.85 0.9] |
第四步:使用規則編輯器
通過隸規則編輯器來設計和修改“IF...THEN”形式的模糊控制規則。由該編輯器進行模糊控制規則的設計非常方便,它將輸入量各語言變數自動匹配,而設計者只要通過互動式的圖形環境選擇相應的輸出語言變數,這大大簡化了規則的設計和修改。另外,還可為每條規則選擇權重,以便進行模糊規則的優化。
步驟:
1、開啟規則編輯器
點選Edit選單,選Rules…
選中IXL2,IYL2,OXL2,none(表示不被選中任何隸屬度函式),and選項,權重Weight均設為1,然後點選Add rule 新增規則,同理新增其他規則。
下圖為新增所有role後:
第五步:儲存並檢視結果
步驟:
1、 儲存
2、View->Rules開啟Rule Viewer
3、View->Surface開啟Surface Viewer
第二部分:將模糊邏輯新增到Simulink中
第一步:建立一個Simulink檔案
步驟:
1、開啟Simulink
2、點選新建按鈕建立一個新的.mdl檔案
第二步:新增模糊邏輯
步驟:
1、在Simulink Library Brower 的搜尋框內鍵入Fuzzy Logic Controller找到Fuzzy Logic Controller,並將其拖拽到新建的mdl檔案中
2、雙擊Fuzzy Logic Controller,開啟如下對話方塊,比在其內部鍵入Test
3、關閉對話方塊
第三步:新增其他模組
如下圖,都是常用模組,請自己新增
第四步:儲存並執行
步驟:
1、 儲存為Test.mdl
2、 初始化模糊邏輯控制器,即在Command Window中鍵入Test = readfis('Test.fis'),回車
1、 執行Test.mdl
這裡可以比較一下結果