隸屬函數 — 把「有點溫」化為數字
不再以一條線切割邊界,而是用 0 到 1 之間的隸屬度來表達某個值與某個標籤的契合程度。
溫度的各個標籤彼此稍微重疊。例如在 26°C,單一個值可以同時屬於多個標籤,例如「舒適 0.50、炎熱 0.25」。
術語整理 — 隸屬函數與隸屬度
本章使用兩個有所區分的術語。
- 隸屬函數(membership function):以輸入值
x為自變數,將其與某標籤的契合度以 0 到 1 的數字回傳的函數本身。具有三角形或梯形等形狀。 - 隸屬度(membership degree):該函數對某個
x所回傳的輸出值。例如「舒適(26) = 0.50」中右邊的 0.50 就是隸屬度。
簡言之,「隸屬函數會回傳隸屬度」、「隸屬度是該函數的輸出」這樣的關係。本章及之後的本文均依此定義使用。
函數形狀的選擇 — 為什麼採用三角形與梯形
隸屬函數有高斯型(平滑的鐘形曲線)、S 型(單側上升的 S 字形)、三角形、梯形等多種形狀。本課程僅使用三角形與梯形,是因為對入門者具有以下三項優勢。
- 參數少:三角形由 3 個點決定、梯形由 4 個點決定,設計簡單。
- 易於手算:以直線方程式即可表達,不需計算機也能追蹤隸屬度。
- 區間意義清楚:頂點與肩部位置直接代表「最契合處」與「飽和區域」。
當需要連續可微分(將控制器嵌入適應控制或最佳化時)會選擇高斯型。在本課程的範圍內精度差異有限,因此採用簡便的三角形與梯形。
溫度只準備三個標籤
本課程在整個流程中,以三個標籤處理溫度:寒冷 / 舒適 / 炎熱。函數也就只有下列三個。
| 標籤 | 函數 | 意義 |
|---|---|---|
| 寒冷 | trapmf(x, 16, 16, 19, 23) | 在 16–19°C 之間穩穩地冷,往 23°C 方向逐漸減弱。 |
| 舒適 | trimf(x, 20, 24, 28) | 在 24°C 時最舒適,往兩側離開時逐漸減弱。 |
| 炎熱 | trapmf(x, 25, 29, 34, 34) | 超過 25°C 後逐漸變熱,29°C 以上則穩穩地熱。 |
舉例來說,在 26°C 時,舒適位於右側斜坡,而炎熱位於左側斜坡。
comfortable(26) = (28 - 26) / (28 - 24) = 0.50
hot(26) = (26 - 25) / (29 - 25) = 0.25
因此 26°C 可以描述為「既舒適又稍微有點熱」。這正是與 0/1 門檻的本質差異。
練習 2-1 — 計算溫度的隸屬度
溫度標籤:寒冷 = trap(16,16,19,23)、舒適 = tri(20,24,28)、炎熱 = trap(25,29,34,34)。
Q1. 對於舒適三角形 tri(20,24,28),22°C 處的隸屬度是多少?
22°C 位於左側斜坡上,因此 (22-20)/(24-20) = 0.50。
Q2. 對於炎熱梯形 trap(25,29,34,34),26°C 處的隸屬度是多少?
26°C 位於上升段,因此 (26-25)/(29-25) = 0.25。
Q3. 對於舒適三角形 tri(20,24,28),27°C 處的隸屬度是多少?
27°C 位於右側斜坡上,因此 (28-27)/(28-24) = 0.25。
濕度的標籤也以相同方式重疊
濕度也同樣保持三個標籤:乾燥 / 普通 / 悶熱。
| 標籤 | 函數 | 範例 |
|---|---|---|
| 乾燥 | trapmf(x, 20, 20, 30, 45) | 在 40% 時,(45-40)/(45-30) = 0.33 |
| 普通 | trimf(x, 35, 55, 75) | 在 68% 時,(75-68)/(75-55) = 0.35 |
| 悶熱 | trapmf(x, 60, 75, 90, 90) | 在 68% 時,(68-60)/(75-60) = 0.53 |
在 68% 時得到「普通 0.35、悶熱 0.53」。與其只鎖定在單一個標籤,這個值同時帶有一點兩者,因此下一章的規則便能同時觸發。
練習 2-2 — 計算濕度的隸屬度
濕度標籤:乾燥 = trap(20,20,30,45)、普通 = tri(35,55,75)、悶熱 = trap(60,75,90,90)。
Q1. 對於悶熱梯形 trap(60,75,90,90),68% 處的隸屬度是多少?
68% 位於上升段,因此 (68-60)/(75-60) = 8/15 ≈ 0.53。
Q2. 對於乾燥梯形 trap(20,20,30,45),40% 處的隸屬度是多少?
40% 位於右側斜坡上,因此 (45-40)/(45-30) = 5/15 ≈ 0.33。
隸屬度不是機率
這裡的 0.53 並不是「有 53% 的機率是 68%」。它只有一個意義:68% 與標籤「悶熱」的契合程度。這也是為什麼舒適與炎熱、或普通與悶熱,可以在不矛盾的情況下同時各部分成立。
在模糊控制裡,我們不是消除模糊,而是把模糊以數字往下傳遞。
僅有隸屬度尚不能控制 — 連結至第 3 章
隸屬度只表達了「輸入與某標籤的契合度」,目前還沒有決定輸出(風扇要轉幾 %?)的機制。例如在 26°C・68% 算出「舒適 0.50・炎熱 0.25・普通 0.35・悶熱 0.53」,僅憑這些還無法決定要把風扇開到弱風還是強風。
因此第 3 章將導入IF-THEN 規則,從輸入標籤的隸屬度推導出輸出標籤(弱風 / 中風 / 強風)。隸屬度是交給規則的原料,而規則則把這些原料組合成對輸出的主張,形成這樣的分工。