質問: ファジー制御について完結で具体的にイメージがわくように説明してください。
回答: * ファジー理論 ブール代数を0〜1の間に拡張したもの ブール代数はA+B=MAX(A,B)またはA・B=MIN(A,B)のように演算を行う ``` A B A+B A・B 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 ``` 上のような真理値表は有名であるファジーへの中間的な表として以下のようなものが考えられる ``` A B A+B A・B 0.0 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.0 1.0 1.0 0.0 0.5 0.0 0.5 0.0 0.5 0.5 0.5 0.5 0.5 1.0 1.0 0.5 1.0 0.0 1.0 0.0 1.0 0.5 1.0 0.5 1.0 1.0 1.0 1.0 ``` また、身長、温度、体重など現実の値を0〜1の値に変える作業のことをファジー化といい、関数のことをメンバシップ関数といいます では上の表の結果部分をAとBに置き換えてみますこの手順は非ファジーかと呼ばれるものです。 ``` A B A+B A・B 0.0 0.0 A,B A,B 0.0 0.5 B A 0.0 1.0 B A 0.5 0.0 A B 0.5 0.5 A,B A,B 0.5 1.0 B A 1.0 0.0 A B 1.0 0.5 A B 1.0 1.0 A,B A,B ``` この手順によってAではどんな制御をするかBではどんな制御をするかを実行することによりファジー制御となります。 上の表では離散的になってしまいますが横軸を現実の値、縦軸をメンバシップ値としたグラフにすることによりすべての実数を表現することができます。 C++での実装方法としてはオペレータをで&|^を書き換え、演算の結果帰ってきた値とそれぞれのメンバシップ関数が返す値を比較して処理を分けるというものが考えられます。