ルールベース — IF-THEN を数で追う
温度と湿度の所属度を使って、IF-THEN ルールがどれだけ強く効くかを min / max で計算する。
入力の所属度 → 各ルールの発火度 → 出力側の山のクリップ → 合成 → 重心、という順で進みます。
ルールは 3 × 3 の 9 本だけ
この講座では温度 3 ラベル × 湿度 3 ラベルなので、ルールは 9 本です。表にすると次のようになります。
| 温度 \ 湿度 | 乾燥 | ふつう | 蒸し暑い |
|---|---|---|---|
| 寒い | 弱風 | 弱風 | 中風 |
| 快適 | 弱風 | 中風 | 中風 |
| 暑い | 中風 | 強風 | 強風 |
これ自体は人の言葉に近いルール表です。ファジィ制御らしさは、この表を 0/1 ではなく、所属度の強さつきで使うところにあります。
AND は min で読む
入力を 26℃・68% とすると、第 2 章で求めた所属度は次のとおりでした。
ルール「快適 AND 蒸し暑い → 中風」の発火度 (firing strength) は min(0.50, 0.53) = 0.50 です。「発火度」はそのルールがどれだけ強く効くかを 0〜1 で表す値で、文献によっては「適合度」「充足度」とも呼びます。本講座では英語の firing strength の訳として「発火度」を使います。AND を min にすることで、「両方ともそれなりに成り立つときだけ強く効く」という直感がそのまま残ります。
補足: AND に min を使うのは Mamdani 方式での標準的な選択肢の 1 つで、ファジィ論理の用語では t-norm の一種です。他にも代数積 (product, μA × μB) やドラスティック積など別の t-norm があり、応用によって使い分けられます。本講座では手計算しやすい min で統一しますが、「min は唯一の方法ではない」ことだけ覚えておいてください。
小問 3-1 — 発火度を min で求める
入力は室温 26℃、湿度 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℃・68% のとき、中風に対応するルールは 2 本、強風に対応するルールも 2 本あります。
快適 × ふつう → 中風は 0.35快適 × 蒸し暑い → 中風は 0.50暑い × ふつう → 強風は 0.25暑い × 蒸し暑い → 強風は 0.25
出力側では、中風どうし・強風どうしをそれぞれ max でまとめます。そうすると「中風 0.50、強風 0.25」という 2 本の主張に整理できます。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 のままです。