第 5 章 ACAS の設計と実装
5.4 ACAS の実装
表 5.4に載せたルールは非常に限定されたセンサデータのみを利用して、コンテキ スト解析を行う場合の条件であるため、要素とその状態が 3つしか表現されていない。
そのため15ほどのルールで全ての状態を記述することができる。実際にはもう少し ルールに記述される要素数が多くなるため、プロダクションルールも複雑になる。
前節の図 5.4では状態1から状態5というような記述がされていたが、これはセン サデータやコンテキストの状態をシステム設計者が各項目ごとに定義することになる。
例えば、温度などの場合ある温度では「寒い」「快適」「暑い」などの状態を言語化し て定義する必要がある。
5.4.2 ソフトウェア構成
本システムのソフトウェア構成について述べる。実装言語としては Java を利用し たため、他のライブラリも基本的には Java との相互接続性のある言語を用いている。
データベースとの接続には JDBCを利用し、次に述べるファジィ推論エンジンも Java によって記述されたものを選んだ。
ファジィ推論エンジン
ファジィ推論については関連研究として挙げた文献[21] [30]にも述べられているよう に、先行研究が豊富にある。そのため、ファジィ推論のプログラムは一般に公開されて いるものを利用した。GNU General Public Licenseで配布されている、FuzzyEngin [2]
というライブラリを使用した。本論文の末尾に、FuzzyEnginの例としてファジィ推論 を行うサンプルコードを載せた。このサンプルコードでは、レストランでの食事の際 に料理のおいしさとサービスの質から、チップの量を決めるという事象に対して、ファ ジィ推論によって答えを導き出している。
ファジィ集合の定義
以下に、プロトタイプで実装したファジィ集合の定義を載せる。正規化したセンサ データの値をファジィ集合にする際に、表 5.6のような識別名とその度合いの定義名 を定めた。この表にあるデータの識別名と度合いの定義というのは、プロダクション ルールの記述に利用する単語となる。例えば、
If temperature is small then CONTEXT 1 is XXX.
If movement is aberage and light is big then CONTEXT 2 is YYY.
というような形式でルールを構成する。ここに示したファジィ集合が、全てのコンテ キストの根幹となる。また、これらのセンサデータの実際のメンバシップ関数は図 5.5 に示すような定義を与えた。
表 5.6: プロトタイプのファジィ集合定義
センサデータの種類 データの識別名 度合いの定義 温度 temperature small / average / big 振動 movement small / average / big
照度 light small / average / big
0 1 2 3 4 5 6 7 8 9 10 0
1
0.5
average big small
正規化後のセンサデータの値 度合い
図 5.5: プロトタイプのメンバシップ関数
ここで、第6章の評価では、室内でミーティングが行われているかどうかについて 比較実験をするので、それに関連するコンテキストの定義を載せる。まず、ミーティ ングというコンテキストを構成する要素としてはプロジェクタが ONであるというこ とが必須であるのでそれをコンテキストと考える。同様にして机・イス・照明などの 状況をコンテキストとして定義する。それらを表 5.7にまとめた。
表 5.7: プロトタイプのコンテキスト定義
コンテキストの種類 コンテキストの識別名 度合いの定義 プロジェクター projector ON / OFF
机の揺れ desk vibrate / not vibrate
イスの揺れ chair vibrate / not vibrate 照明の点灯 room-light bright / not bright 壁に光が当たる wall bright / not bright
以上のファジィ集合の定義から、プロダクションルールを定めることで室内におけ るミーティングというコンテキストの定義を行う。ルールの基準は、定義する人間が ミーティングをどのように認識しているのかによって異なる。今回のプロトタイプで は、一般的な人が考えるであろう状態をルールとして定義した。つまり、プロジェク ターが ONで机・イスが動いており、照明が点灯しているということをミーティング が行われている場合の判断基準とする。具体的なプロダクションルールを表 5.8に挙 げた。実際には、机・イス・照明・壁は対象が複数であるため、そのセンサごとに定 義する必要があるがここではまとめて記述している。
表 5.8: ミーティングのプロダクションルール
¶ ³
if projector is ON then meeting is on.
if projector is OFF then meeting is off.
if desk is vibrate then meeting is on.
if desk is not vibrate then meeting is off.
if chair is vibrate then meeting is on.
if chair is not vibrate then meeting is off.
if room-light is bright then meeting is on.
if room-light is not bright then meeting is off.
if wall is bright then meeting is on.
if wall is not bright then meeting is off.
µ ´
ここに挙げたプロダクションルールに基づいてファジィ推論を行い、ミーティング のコンテキストを得る。コンテキストは重み付けされた形式で出力されるため、アク チュエータにその値を渡すことでよりきめ細かな機器操作を行えるようになる。