Smithの契約ネットプロトコルに見られるように, マルチエージェントシステムでは外部から要請されたタスクを エージェント全体にブロードキャストする. これは,タスク処理の可能なエージェントがもともと複数存在するためである. エージェントはタスクを他のすべてのエージェントに要請すると, タスク処理を受け入れるかどうかの返答を待つ. そして,タスクを受け入れてくれるエージェントの中から1つを選択して, そのエージェントにタスクを委託する.
マルチエージェントシステムでは, この例から明らかなように,全エージェントへの通信と 特定のエージェントへの通信がある. さらに,上で述べたエージェントの階層性に従うと, エージェントは上位エージェント, 下位エージェントと隣接しており,それらに対してメッセージを送受信する. MRLでは,このようなエージェント間通信に対応するために, 次の記述形式をもつ.
はReceiveに与えられるメッセージパターンが上位エージェントから送信されてくれば, 下位エージェント群にメッセージSendを送信(ブロードキャスト)することを表す.
複数のエージェントが協調しないと達成できないタスクを除けば, 一つのタスクの実行は単一のエージェントが担当するのは一般的である. 逆に,一つのタスクを複数のエージェントが実行してはならない 場合の方が多い. 例えば,腕型ロボットが積木を拾うタスクにおいて, 2台のロボットが一つの積木を拾うことは禁止しなければならない. この例はタスクの排他実行を示しており, 一つのエージェントがタスクの遂行を開始すれば, それ以外のエージェントが同一タスクを遂行してはならない.
このような排他実行を伴う例として, 哲学者の食事問題(dining philosophers problem)がある. この問題に対して,ShapiroはCCL言語族の一つである FCP(:)を用いた解決法を提案している. FCP(:)のシンタックスは,
であり,AskとTellはガードを表すが, Tellは現在の計算状態を局所的に更新させることができる. ここで,局所的というのはTellの実行による計算状態の変化を他のゴールに通知せず, ガードを飛び越えたときに始めて通知することを意味する. Tell内での変数の具体化は言語処理系内部でアトミックに行なわれるために, 複数のゴールでメッセージが交錯することはない. これによって,隣接するエージェント(哲学者)が矛盾する行動を とることはなくなる.
MRLではFCP(:)におけるTellのようなガードは用意していない. その代わり,排他実行の制御は上位エージェントが司さどる. すなわち,兄弟エージェントどうしで排他的なタスクを所有する場合, それぞれで上位エージェントにタスク遂行の許可を依頼する. そして,上位エージェントはいずれかのエージェントにのみ, そのタスクの遂行を許可する. このような上位エージェントによる排他制御を実現するには, 次のようなプログラムを記述すればよい.
このプログラムでは, 節(1)で タスクを要請したエージェントAgentに accept(Task)を送信する. その返答結果にcommitを受けとったならば, 節(2)において上位エージェントにメッセージ before(Task)を送信する. そして,上位エージェントからの返答を節(3)で待ち, 返答がtrueであったならば,do(Task)を実行している.
我々はMRLを用いて,複数の移動ロボット,ハンドリングロボット, 及び赤外線センサやカメラロボットなどの 各種センサー系を協調させることにより,オフィス内での 文書やプリント出力紙を配達するシステムを実現している. MRLでは各機器をロボティックエージェンとして定義することで, エージェント間交渉によるロボット間協調, センサ系からの情報提供を可能にしている. 例えば,プリント出力紙を配達するために, 移動ロボットはハンドリングロボットからの受渡し協調を必要とする. また,配達移動時においては,赤外線センサからの座標補正, 及び,カメラロボットからの誘導を必要とする.
MRLでは,このような協調作業を 上述の通信ストリームを用いたエージェント間通信により実現する. 各々のロボティックエージェントは, 自分の状態情報,及び受けとったメッセージ内容により状態を遷移させ, 機器制御を行なう. 我々は,オフィス内におけるロボティックエージェントの状態を, 以下の3種類に分類している.