合同会社小村ソフト
第 3 章

ルールベース — IF-THEN を数で追う

温度と湿度の所属度を使って、IF-THEN ルールがどれだけ強く効くかを min / max で計算する。

Mamdani 型ファジィ制御の流れ

入力の所属度 → 各ルールの発火度 → 出力側の山のクリップ → 合成 → 重心、という順で進みます。

ルールは 3 × 3 の 9 本だけ

この講座では温度 3 ラベル × 湿度 3 ラベルなので、ルールは 9 本です。表にすると次のようになります。

温度 \ 湿度乾燥ふつう蒸し暑い
寒い弱風弱風中風
快適弱風中風中風
暑い中風強風強風

これ自体は人の言葉に近いルール表です。ファジィ制御らしさは、この表を 0/1 ではなく、所属度の強さつきで使うところにあります。

AND は min で読む

入力を 26℃・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 にすることで、「両方ともそれなりに成り立つときだけ強く効く」という直感がそのまま残ります。

補足: 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 蒸し暑い → 中風』の発火度はいくつですか。

Q2. ルール『暑い AND ふつう → 強風』の発火度はいくつですか。

Q3. この入力で 0 より大きい発火度を持つルールは何本ありますか。

同じ出力ラベルに対応するルールは 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. 中風ラベルの集約高さはいくつですか。

Q2. 強風ラベルの集約高さはいくつですか。

この章で大事なのは 2 つだけ

AND = min
入力ラベルが 2 本とも強いときだけ、ルールも強く発火します。
同じ出力ラベルどうしは max
中風を主張するルールが複数あっても、いちばん強い主張を残せば十分です。