範例:MCK 系統模糊控制 III(Sugeno 零階)
把 MCK 模糊控制 II 的雙輸入控制器改成零階 Sugeno 型:規則的結論不再是模糊集合,而是常數。下方是老師錄製的示範,附檔為 MCKFuzzy2Sugeno.zip(FuzzyMCK2su.mdl、MCKFZ2sugeno.fis)。規則表與 Mamdani 版相同:

▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 1 節:MCKFZ2sugeno.fis),可以直接在瀏覽器執行、修改參數。⬇ 下載 Fuzzy_control.ipynb
MCKFZ2sugeno.fis What Changed
(以下依附檔整理並模擬,為補充)
| 項目 | Mamdani 版(MCKFZ2.fis) | Sugeno 零階版(MCKFZ2sugeno.fis) |
|---|---|---|
| 結論 | 7 個模糊集合(三角形、梯形) | 7 個常數:PL 10、PM 6、PS 3、ZR 0、NS −3、NM −6、NL −10 |
| 解模糊化 | 聚合後取重心 | 加權平均 wtaver:F = Σ wᵢ zᵢ / Σ wᵢ |
| AND | min | prod(相乘) |
| e 的負/零/正 | [−1.45 −1.05 −0.8 0]、[−0.5 0 0.5]、[0 0.8 1.05 1.45] | [−1.72 −1.08 −0.8 0]、[−0.8 0 0.8]、[0 0.8 1.08 1.72] |
| ė 的「正」 | [−0.199 0.95 1.05 1.45] | [−0.177 0.8 1.01 1.7] |
| 規則 | 同樣 6 條(沒有「e 零 且 ė 零」) | |
常數 ±3、±6、0 正好是 Mamdani 版三角形歸屬函數的頂點,±10 是輸出範圍的端點。Sugeno 型不必對輸出範圍取樣求重心,計算量小得多,適合即時控制。檔案中輸出範圍寫成 [0 1],但 Sugeno 的結論是常數,範圍不影響計算。
模擬結果 Simulation
與其他版本的比較見 MCK 模糊控制 II 的比較圖(橘線):
- 位移單調爬升、沒有振盪:0.87 s 越過 1,之後緩慢爬升(3 s 時 1.041、5 s 時 1.057),最後停在 1.075,比目標高 7.5%。
- 原因和 Mamdani 版相同:在目標靜止時只有「e 零 且 ė 正 → 3」觸發,3 大於彈簧需要的 2,質量塊會被繼續推。等 e 變負,「e 負 且 ė 正 → −6」才開始分攤權重。平衡點 e = −0.075 時,e 屬於「負」0.094、「零」0.906(兩條規則的 ė 歸屬度相同,約掉),加權平均 0.906 × 3 + 0.094 × (−6) = 2.15,正好等於彈簧力 2 × 1.075。
下一頁再把常數結論改成 e 與 ė 的線性函數:MCK 模糊控制 IV(一階 Sugeno)。