規則庫 — 以數字追蹤 IF-THEN
運用溫度與濕度的隸屬度,以 min / max 計算每條 IF-THEN 規則觸發的強度。
流程依序為 輸入隸屬度 → 每條規則的觸發強度 → 截取輸出側的峰 → 聚合 → 重心。
規則只有 3 × 3 = 9 條
在本課程中,溫度有 3 個標籤 × 濕度有 3 個標籤,所以規則庫有 9 條規則。以表格呈現如下:
| 溫度 \ 濕度 | 乾燥 | 普通 | 悶熱 |
|---|---|---|---|
| 寒冷 | 弱風 | 弱風 | 中風 |
| 舒適 | 弱風 | 中風 | 中風 |
| 炎熱 | 中風 | 強風 | 強風 |
這個表本身就已經很接近人類語言的規則。模糊控制的特色在於:我們不是用 0/1 來套用這個表,而是用隸屬度來套用。
將 AND 讀作 min
在輸入為 26°C 與 68% 的情況下,第 2 章已經求出以下隸屬度。
規則「舒適 AND 悶熱 → 中風」的觸發強度(firing strength)為 min(0.50, 0.53) = 0.50。「觸發強度」是 0 到 1 之間的值,代表該規則發揮作用的強度;不同文獻也稱為「適合度」或「契合度」。本課程採用 firing strength 的中譯「觸發強度」。將 AND 視為 min,可以保留「只有當兩邊都相當成立時,規則才會強烈觸發」的直覺。
補充:以 min 表達 AND 是 Mamdani 方式中的標準選擇之一,在模糊邏輯術語中屬於 t-norm 的一種。其他 t-norm 包括代數積(product,μA × μB)與激烈積(drastic product)等,不同應用會有不同的選擇。本課程為方便手算統一使用 min,但請記住「min 並非唯一的方法」。
練習 3-1 — 以 min 計算觸發強度
輸入為室溫 26°C、濕度 68%。使用 舒適 = 0.50、炎熱 = 0.25、普通 = 0.35、悶熱 ≈ 0.53。
Q1. 規則『舒適 AND 悶熱 → 中風』的觸發強度是多少?
AND = min,所以 min(0.50, 0.53) = 0.50。
Q2. 規則『炎熱 AND 普通 → 強風』的觸發強度是多少?
AND = min,所以 min(0.25, 0.35) = 0.25。
Q3. 在這個輸入下,有多少條規則的觸發強度大於 0?
舒適 × 普通、舒適 × 悶熱、炎熱 × 普通、炎熱 × 悶熱 — 共 4 條規則同時觸發。
對應到相同輸出標籤的規則用 max 合併
在 26°C 與 68% 時,有兩條規則對應到中風,另有兩條規則對應到強風。
舒適 × 普通 → 中風為 0.35舒適 × 悶熱 → 中風為 0.50炎熱 × 普通 → 強風為 0.25炎熱 × 悶熱 → 強風為 0.25
在輸出側,我們用 max 將中風與中風、強風與強風合併。這樣就能整理為「中風 0.50、強風 0.25」這兩個截斷高度。max 是用來實作 OR 的 t-conorm 的標準形式,但同樣存在其他選項,例如代數和(μA + μB − μA·μB)。
練習 3-2 — 以 max 聚合相同輸出標籤
將上一題的觸發強度以輸出標籤為單位,用 max 聚合。
Q1. 中風標籤的聚合高度是多少?
對應到中風的規則為 0.35 與 0.50,取 max 得到 0.50。
Q2. 強風標籤的聚合高度是多少?
對應到強風的規則為 0.25 與 0.25,聚合後仍為 0.25。