所需工具
MATLAB
是進行科學研究常用軟體,上面也搭載了很多常用的APP。雖然本人科研99%時間都是用
Python
,但因課程需要,也初步摸索以備後用。(下面開始菜鳥級表演)
1. Simulink
該工具是建立仿真系統的必備工具,一般下載下傳安裝
MATLAB
時會預設(大概會)安裝。在指令視窗鍵入
simulink
開啟,界面如圖:
2. Fuzzy Logical Designer
該工具是建立模糊推理系統的必備工具,在指令視窗鍵入
fuzzy
開啟,界面如圖:
By the way,如果沒有安裝上述兩個包,無需再重新下載下傳
MATLAB
重選一次,在這裡可以下載下傳并安裝。
工具有了,就可以開工了!以一個3階系統為例。
FIS-Fuzzy Logical Designer
首先,我們要确定模糊推理系統(Fuzzy inference system, FIS)的輸入、輸出以及模糊規則等。這裡,我以誤差 e e e、誤差變化率 d e de de 為輸入,經過FIS得到控制輸出 u u u。
Rules
Part of the Rules 見下表:
NB | NM | NS | NZ | PZ | PS | PM | PB | |
---|---|---|---|---|---|---|---|---|
PB | PB | PM | NM | NM | NM | NL | NB | NB |
PM | PB | PM | NM | Z | … | |||
PS | PB | PM | NS | Z | … | |||
Z | PB | PM | PS | Z | … | |||
NS | … | |||||||
NM | … | |||||||
NB | … |
Input & Output
一些預設參數,一般不需修改。
目前界面鎖定在Input, 可以通過點選
Edit->Add Variable
來添加輸入變量;點選藍色output同樣可以添加變量。直接在Name修改變量名;
Edit->Membership Function
定義隸屬函數,可以對每個隸屬函數進行編輯,也可以在
Edit->Add MFs
一次性輸入多個MF,預設為三角隸屬函數,注意: Params、Range要定義,别忘了對output隸屬函數進行定義。
傳回FIS首界面,
Edit->Rules
定義模糊規則。這個比較麻煩,不像MF還可以一次定義多個,一個 e e e和 d e de de對應一個 u u u,再點選Add rule就完成了一步,然後一個一個對應吧(本人未找到其他lazy方法)。
最後需要定義去模糊化方法:Defuzzification. 聰明的你一定發現了,該選擇在FIS首頁界面下方,預設方法為重心法
Centroid
,可改選。然後,
File->Export->To File/Workspace
,建議To File,先儲存到本地磁盤,然後再輸出到工作區以備接下來Simulink使用。
搭建仿真系統-Simulink
從首界面點選Blank Model,建立model。點選設定按鈕旁邊的Library Browser進行元件選擇,在收縮框内輸入名稱即可,拖拽元件到主界面進行系統搭建。此處,在 e e e、 d e de de、 u u u後分别放置了三個scope用以觀察輸出值大小,因為前面設定了range,是以需要保證輸出值在輸入範圍内。比如 e e e的輸出值在-10~10之間變化,但是range為[-1, 1],是以在其後加入一個比例為0.1的gain元件,其他同理。元件Fuzzy Logic Controller with Ruleviewer裡面需要定義FIS,也就是你export到workspace裡面的FIS檔案的變量名字。然後在Simulation裡面的configuration裡面修改一個地方:
Algorithm-Adaptive
.
最後便是一些調參(比例系數等等)工作,同時觀察示波器的輸出,看超調量、上升時間、穩态誤差是否符合要求啦!
結果展示:
FIS工作
Output
e
完結,睡覺 zzzzzz