ObjectSquare [2002 年 12 月号]

[技術講座]

ちょこっとマルチ・エージェント(後)

株式会社オージス総研
ES事業部PDチーム
国正聡

〜〜〜 目次 〜〜〜

5 前回までのあらすじ
6 マルチ・エージェントシミュレーション
 6.1 シミュレーション、その前に。
 6.2 シミュレーション・ビューについて
 6.3 シミュレーション条件
 6.4 シミュレーションの実行と結果
 6.5 シミュレーションのまとめ
7 マルチ・エージェントのその後
参考文献

〜〜〜〜〜〜〜〜〜〜
5 前回までのあらすじ

「ちょっこっとマルチ・エージェント」の後半です。ほんとにちょこっとだなとの感想も あったかと思いますが、前回は「マルチ・エージェントとは何ぞや」という話をするために、 そもそもエージェントとは何かを少しでも理解してもらえるよう、エージェントに必要とさ れる機能の考察や、現在のエージェント技術の適用状況について紹介しました。今回はいよ いよ本題であるマルチ・エージェントの核心に触れていきたいと思います。 今回は、前回の最初で述べた 横断歩道を渡る歩行者の問題を、マルチ・エージェントの概念を用いたシミュレーション を考え、その実行結果の解析を通じてマルチ・エージェントの特徴を探っていきたいと思いま す。その際に、マルチ・エージェントのミソとなるエージェント間の協調動作に注目します。 さて、どうなることやら…。


6 マルチ・エージェントシミュレーション

6.1 シミュレーション、その前に。

今回のシミュレーションプログラムは、オブジェクト指向言語であるJavaにより実装を行います。 「オブジェクト指向にはオブジェクト指向の言語があるのに、エージェント指向には適切な言語 はないの?」とお思いの方もいるかと思います。詳細は省略しますが、エージェント指向言語に 関する研究も現在行われております。興味がある方は、Webで検索してみてはいかがでしょうか? また、参考文献にも挙げていますが、「Javaによる知的エージェント入門」という書籍では、 Javaの持つ特徴(オブジェクト指向、ポータビリティ、など)により、エージェントを記述する ための言語としてJavaは有効であるとの記述もあります。ちなみに私も同意見です。
さて、対象となる問題はすでに与えられていますので、以下にまとめてみます。

エージェント・・・横断歩道を渡る人々
エージェントが存在する環境・・・横断歩道

また、個々のエージェントについてですが、前回紹介したエージェントに必要となる機能として 「環境認識器 (environment recognizor)」「行動選択、実行器 (action selector, executor)」を紹介しましたので、それらを踏まえ以下のような設計となっています。


エージェントの設計

エージェント独自の「環境認識器」「行動選択、実行器」は、それぞれ IRecognizorIActionStrategyインタフェースを実装したクラスによって実現し ます。それぞれのロジックを変更させたいときは、このクラスを切り替えることにより簡単に実 現することができます。ちなみにEnvInfoクラスは、認識した環境情報をまとめた ”入れ物”になります。「学習器」については、今回は考慮しません。

6.2 シミュレーション・ビューについて

今回のシミュレーションプログラムは、Javaによって実装したわけですが、実際にエージェント達 の行動状況を確認できるように、シミュレーション状況を表示するビューを用意しました。やはり 目で見てわかるほうが、シミュレーションしてても面白いですし、人に対して説明するにも便利で すからね。余談ですが、私も学生のころは何度か外部へ発表を行う機会を設けていただきましたが、 目で見えるデモを行うほうがウケが良いようです。 エージェント達が行動する領域は右図のようになります。

また、ビューの中で動き回るエージェント(上に向かって進む人)は、左の画像を用意しました。








6.3 シミュレーション条件

ここで、シミュレーション条件とは、適用した「環境認識器」「行動選択・実行器」 の戦略(ロジック)や、その他シミュレーションを行うにあたってのパラメータなどを指します。

総エージェント数 40
上方向 20、下方向 20
シミュレーションフィールド 20x40コマの2次元平面で、横断歩道を表現
エージェントが持つエネルギー 70
- 一コマ進行で -1
- 方向転換で -0.5
環境認識の戦略 -自身の進行方向一コマ先の情報のみ取得可能
- 取得できる情報は、フィールドの情報
  何もない
  他エージェントが存在する
  障害物(外壁)が存在する
  その他
行動選択・実行器の戦略 基本的に、
1.現在の進行方向に(移動できるなら)前進
2.次進行方向の決定
を一組とする。
次進行方向の決定戦略は、以下の通り
戦略1(協調なし)
進行方向に、他のエージェントがいても特に考慮しない
戦略2(普通の協調)
進行方向に、他のエージェントがいた場合、左、右、後ろの3方向に、等確率で方向変更を行う
戦略3(経験則を踏まえた協調)
進行方向に、他のエージェントがいた場合、左、後ろの2方向に、等確率で方向変更を行う
シミュレーションの終了条件 全てのエージェントがアクティブ状態でなくなると、シミュレーション終了となります

#エージェントは以下の3つの状態をとります
アクティブ ・・・現在活動中の状態
エネルギー切れ ・・・目的を達成していないが、エネルギーがなくなり行動できない状態
目的達成 ・・・目的を達成し、フィールド上に存在しなくなった状態
エージェント行動の評価値 シミュレーション終了時の、各エージェントが持つ残エネルギーの平均値

他にも、シミュレーションを実行する上で必要となる値などありますが、問題の本質とは関係ないの で省略することにします。シミュレーションの開始直後、および行動中の状況は、以下の図のように なります。


うーん。今から横断歩道を渡ろうとする(渡ってる)人々には見えませんが、そういうことにしてお いてください。


6.4 シミュレーションの実行と結果

上述したように、シミュレーションの条件を整えて、行動選択・実行器の戦略を変えながら実験を行い ました。それぞれの結果を以下に紹介します。

6.4.1 シミュレーションの実行と結果(戦略1)

まずは、まったく協調しない戦略についての結果です。結論からいうとシミュレー ションが終了することはありませんでした。なぜかというと、以下のシミュレーション途中の状 況の図を見てください。
ちょっと、エージェントが中心に集まりすぎてわかりにくいですが、両端からやってきたエージェント同士が お互いの存在を認識できる距離まで接近したときに、お互いが協調しない(道を譲らない)ため、そこから一 歩も進めない状態に陥ってしまいます。エージェントのエネルギーは行動しないと減らないため、全てのエー ジェントは永遠にアクティブ状態を保ち、その結果シミュレーションは終了せずに、この状態が延々と続いて しまうことになります。このような状態をデッドロック状態と呼ぶことに します。 実際に人間が横断歩道でぶつかり合ったときは、このようなデッドロック状態になることはないでしょうが、 生まれて間もない赤ちゃんだと、同じような状態に陥るかもしれません(人間は、時間経過とともにエネルギ ーは減っていくので、永久に続くことはありませんが)。

評価値 測定不能



6.4.2 シミュレーションの実行と結果(戦略2)

次に、エージェント同士の協調動作として、戦略2を用いてみました。「前方に他エージェントが存在する 場合、左、右、後ろの3方向へランダムに方向転換する」というこの方法は、特に問題環境を意識しない、 いわゆる普通の解法?といえます。さて、実際にシミュレーションを行ってみると、エージェント達の動作は以 下のようになりました。



実際に動いているところを見せれないのが残念なのですが・・・
ご想像の通り、何の最適化も目的としていない戦略ではありますが、先ほどのデッドロック状態に陥ることなく 目的を達成することができます(実際にはエネルギー切れで、途中で止まってしまうエージェントも多々ありま すが、デッドロック状態になり、解が出ないということにはなりませんでした)。

評価値 8.85

6.4.3 シミュレーションの実行と結果(戦略3)

上でも書きましたが、2つ目の戦略は特に問題環境を考慮しない、つまり最適性を考えないものでした。では最適性 を追求するにはどのような方法があるでしょうか?実際の人間社会を考えてみると、人々が大勢行き交う場所には 右側(左側)通行という暗黙的、時には明示的なルールが存在します。そこでこの左側通行というルールをエージ ェントに取り入れるヒューリスティックな戦略を考えてみました。といっても仕組みは非常に単純で、具体的には、 「前方に他エージェントが存在する場合、左、後ろの2方向へランダムに方向変換する」とします。こうす ることにより、正面からぶつかりあったエージェントはお互い左(後ろ向きもありますが)によけるような行動を 取り、その結果、画面の上方向へ進むエージェント達は左側へ、画面の下方向へ進むエージェント達は右側へより、 全体としてエージェント達が左側通行するという秩序が形成されることが期待できます。
#秩序を意図的に作り出しているところもありますので、自己組織化という言葉は使わず、秩序形成としました。
さて、シミュレーションの実行ですが、基本的な動作は戦略2で見せたものとほとんど同じものとなりました。ただ、 やはり左向きの方向転換を優先させた影響が現れており、左の実行経過の図からもわかるように、それぞれのエージェ ントはこちらの思惑通り左側通行を行ってくれているようです。そして気になる評価値ですが、12.35 と、 戦略2の評価値を上回る値となりました。世の中もそうですけど、全てがバラバラに動くよりかは、何らかのルールに のっとった方が、全体としてスムーズに動作できるようです。

評価値 12.35








6.5 シミュレーションのまとめ

以上の通り、エージェント間の協調動作(行動戦略)を変えながらシミュレーションを行ってみました。協調動作を しない場合は、デッドロック状態に陥ってしまいシミュレーションを正常に終了させることができませんでした。問 題環境を意識しない戦略を用いた場合は、ロック状態に陥ることなくシミュレーションを終了させることができまし た。そして最適解を追求するために、人間社会の左側通行という概念を戦略に取り入れることにより、より高い評価 値を得ることができました。
#前回提示した横断歩道の問題では、「できるだけ早く」ということでしたが、残エネルギーの平均値を評価値と していることにより「全体として効率的に」というニュアンスの方が正しかったのですが・・・


7 マルチ・エージェントのその後

今回のシミュレーションとその結果を通じて、マルチ・エージェントの面白さを知っていただこう思いましたが、い かが感じられたでしょうか?最後に付け足しておきたいのは、今回のマルチ・エージェントの捕らえ方はほんの一例 であり、適用する分野や状況に応じて多種多様な形態を取るということです。今回のシミュレーションでは、最適性 を追及するために、既存の方法による戦略を適用しましたが、真のマルチ・エージェントの特徴は、エージェント達 が自律的に秩序形成していくこと(自己組織化)にあります。そのためには、前回紹介した遺伝的アルゴリズ ムや、強化学習などのロジックを組み込む必要があるのですが、残念ながら今回の範囲では紹介することができません でした。また、機会があれば紹介しようと思います。
実際にマルチ・エージェントが実用化されているかというと、はっきりしたことはいえませんが、私は以下の分野で適 用ができるのではないかと考えています。

  • 生産工場内の、自動搬送者の行動制御、スケジュール管理
  • 道路交通などの経路選択
  • モバイル・エージェント間の協調動作による情報収集
  • 自律ロボットの運動制御

    管理や、制御する対象が大規模になったとき、それらの要素を集中管理するには限界があるといわれています。そこで 集中管理に変わる方法として、それぞれの要素が自律的に行動し、協調し合い、問題を解決するようなシステムが注目 されてきているのは事実です。実際に実用レベルまで達するかどうかは、分散コンピューティング技術の発達のみならず、 自然界における生物の群行動の研究結果が、キーになるのかもしれません。
    タイトルどおり、非常につまみ食い的な所はありましたが、2回の連載でマルチ・エージェントについて紹介させていた だきました。前回に引き続き参考文献としてオススメのエージェント本を最後に紹介しますので、興味があれば、ぜひ読 んでみてください。


    - 参考文献 -

    Javaによる知的エージェント入門
      ジョゼフ・P・ビーガス、ジェニファー・ビーガス 著
      井田 昌之 訳

    知の創発 ロボットは知恵を獲得できるか
      伊藤宏司 編著

    「マッチ箱の脳」 使える人工知能のお話
      森川幸人 編著

    「オブジェクト指向からエージェント指向へ」
      本位田真一/大須賀昭彦 著

  • ©2002 OGIS-RI Co., Ltd.
    Prev Index
    Prev. Index