智慧型控制 Intelligent Control

範例:水槽液位的 Simulink 模型

老師錄製的操作示範:水槽液位控制的 Simulink 模型(附檔 sltank.mdl,控制器讀入 tank.fis)。

▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 2 節 sltank.mdl),可以直接在瀏覽器執行、修改參數。⬇ 下載 Fuzzy_control.ipynb

模型內容 Model

(以下依附檔整理並模擬,為補充)

模型裡另有 PID Controller 方塊(P = 2、I = 0、D = 1)、切換開關與名為 Comparison 的示波器,看來是用來和 PID 控制比較;本站沒有重建這部分。

模擬結果 Simulation

以相同參數模擬 130 s:

02040608010012000.511.52水位(m)02040608010012000.51時間(s)閥開度黃虛線:設定水位(1 ± 0.5 m 方波) 藍:實際水位
編註:控制器輸出的是閥的速度,閥開度是它的積分,迴路內含積分作用,照理穩態誤差應為 0。實際停在誤差 +1.0 cm,原因在輸出歸屬函數不對稱:慢關的中心在 −0.5,慢開卻在 +0.3。
  • 水位剛好、變化率為 0 時,「上升」「下降」兩個高斯函數的尾巴仍各有 0.004 的歸屬度,規則 4、5 同時微弱觸發。
  • 慢關離原點較遠,重心被拉向負值,輸出 −0.00076,閥會慢慢關。
  • 水位因此略低於設定,等「過低 → 快開」的尾巴補回來才平衡。平衡點是誤差 +0.010 m,與設定值無關。
把慢關改成對稱的 [−0.4 −0.3 −0.2],平衡誤差就變成 0(verify_fzex.py 核對)。

互動模擬 Try It

可以改成手動設定值,觀察水位變化與五條規則的激發強度(畫面時間加速 6 倍):

自製動畫(依控制理論數值模擬)