小村軟體有限公司
第 3 章

規則庫 — 以數字追蹤 IF-THEN

運用溫度與濕度的隸屬度,以 min / max 計算每條 IF-THEN 規則觸發的強度。

Mamdani 型模糊控制的流程

流程依序為 輸入隸屬度 → 每條規則的觸發強度 → 截取輸出側的峰 → 聚合 → 重心。

規則只有 3 × 3 = 9 條

在本課程中,溫度有 3 個標籤 × 濕度有 3 個標籤,所以規則庫有 9 條規則。以表格呈現如下:

溫度 \ 濕度乾燥普通悶熱
寒冷弱風弱風中風
舒適弱風中風中風
炎熱中風強風強風

這個表本身就已經很接近人類語言的規則。模糊控制的特色在於:我們不是用 0/1 來套用這個表,而是用隸屬度來套用。

將 AND 讀作 min

在輸入為 26°C 與 68% 的情況下,第 2 章已經求出以下隸屬度。

舒適 0.50 炎熱 0.25 普通 0.35 悶熱 0.53

規則「舒適 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 悶熱 → 中風』的觸發強度是多少?

Q2. 規則『炎熱 AND 普通 → 強風』的觸發強度是多少?

Q3. 在這個輸入下,有多少條規則的觸發強度大於 0?

對應到相同輸出標籤的規則用 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. 中風標籤的聚合高度是多少?

Q2. 強風標籤的聚合高度是多少?

這一章真正重要的只有兩件事

AND = min
只有當兩個輸入標籤都很強時,規則才會強烈觸發。
相同輸出標籤 → max
即使有多條規則主張中風,只保留最強的那個主張就足夠了。