範例:MCK 系統模糊控制 IV(Sugeno 一階)
再把 零階 Sugeno 版的常數結論改成一階:每條規則的結論是輸入的線性函數。下方是老師錄製的示範,附檔為 MCKFuzzySuL.zip(FuzzyMCK2suL.mdl、MCKFZ2sugenoL.fis)。
▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 1 節:MCKFZ2sugenoL.fis),可以直接在瀏覽器執行、修改參數。⬇ 下載 Fuzzy_control.ipynb
一階結論 Linear Consequents
(以下依附檔整理並模擬,為補充)一階 Sugeno 的第 i 條規則寫成
$$\text{If } e \text{ is } A_i \text{ and } \dot e \text{ is } B_i,\ \text{then } z_i = p_i e + q_i \dot e + r_i$$輸出仍是加權平均 \(F = \sum w_i z_i / \sum w_i\)。MCKFZ2sugenoL.fis 的歸屬函數與規則都和零階版相同,只把結論改成:
| 結論 | PL | PM | PS | NS | NM | NL |
|---|---|---|---|---|---|---|
| [p q r] | [1 1 10] | [1 1 6] | [1 1 3] | [1 1 −3] | [1 1 −6] | [1 1 −10] |
也就是 \(z_i = e + \dot e + r_i\):每條規則在零階的常數之外,再加上一項相同的 \(e + \dot e\)。加權平均時,這一項可以整個提出來:
$$F = (e + \dot e) + \frac{\sum w_i r_i}{\sum w_i}$$所以一階版等於「零階模糊控制器」再並聯一個增益 1 的線性 PD 控制器。(ZR 定義為 [0 0 0],但 6 條規則都沒有用到它。)
模擬結果 Simulation
比較圖見 MCK 模糊控制 II(紫色虛線):
- 起步瞬間 e = 1、ė = 0,F = 1 + 10 = 11(零階版為 10)。
- 多出的 ė 項像阻尼一樣拖慢接近的速度:到 2.5 s 才越過 1(零階版 0.87 s),同樣沒有振盪。
- 穩態 x = 1.070,比零階版的 1.075 略好。在平衡點 e = −0.070、ė = 0 時,F = e + (0.912 × 3 + 0.088 × (−6)) = 2.14,等於彈簧力。
三個雙輸入版本都靠「e 零 且 ė 正」這條規則的偏壓撐住彈簧,都沒有積分作用,因此穩態都不會剛好是 1。