| タスク通知 (task-announcement) / 直接落札 (directed-award) |
| CnpManager[@リポジトリ名] |
|
(※1) 省略可能。CnpManager.dashの(initial_facts)にある (_default)ファクトを書き換えることによって初期値を変更できる。
(_default :env "r1:_localhost" // デフォルトのリポジトリ
:wp "w1:_localhost" // インスンタンシエート先のデフォルト
:award (RWP :url "r1:_localhost") // 落札内容のデフォルト
:wait 15000 // デフォルトの待ち時間(15秒)
)
|
本組織構成プロトコル(Dash-Org)をインクルードしたエージェント群を使って組織構成する には、送信メッセージ中にACLエディタには無い属性を付加する必要がある。また、いくつかのメッセージについては、 replyを用いて返信する必要があり、ACLエディタのみでは困難である。そのため、利用者の要求をプロトコルに適した 書式に変換し、タイムアウトなどの処理を代わりに行ってくれる組織構成エージェント(CnpManager)を 用意した。しかしながら、要求が拒否された場合や、エラーメッセージを受信した場合などの処理は含まれていないため 個々の領域に適した組織を構成するためには、別途、エージェントを設計する必要がある。そこで、エージェントを設計 するにあたって必要となるメッセージについて述べる。(4.1)送信メッセージ
本プロトコルは、契約ネットプロトコルを基にしたプロトコルであり、木構造の組織を構成することが できる。ここでは、ルートに相当するノードをルートエージェント、中間に相当するノードをマネージャエージェント、 リーフに相当するノードをコントラクタエージェントと呼ぶ。各ノード間は、ルートに近い方を契約の受注側、リーフに 近い方を受注側として表現し、エージェント間のメッセージは、この2ノード間でしか行われない。
ルートエージェント |
マネージャエージェント | |
コントラクタ
エージェント
コントラクタ
エージェント
次に、ルートエージェントを含めた組織構成プロトコルの流れ図を示す。各メッセージの書式については、 後述する。
![]()
1 (send :performative "task-announcement" 2 :to [ エージェント名 ] 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子 5 ) |
1 (send :performative "directed-award" 2 :to [ エージェント名 ] 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子 5 ) |
1 (reply :performative "award" 2 :to [ 入札メッセージをバインドした変数 ] 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子 5 :award 落札内容(型は無制限) 6 :wp インスタンシエート先のワークプレース名 7 :manager コントラクタ側に知っていて欲しいマネージャ等のエージェント名 8 ) |
1 (send :performative "award" 2 :to [ タスクを依頼したエージェント名 ] 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子 5 :award 落札内容(型は無制限) 6 :wp インスタンシエート先のワークプレース名 7 :manager コントラクタ側に知っていて欲しいマネージャ等のエージェント名 8 ) |
1 (reply :performative "negotiation-end" 2 :to [ 入札メッセージをバインドした変数 ] 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子 5 ) |
1 (send :performative "negotiation-end" 2 :to [ タスクを依頼したエージェント名 ] 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子 5 ) |
1 (Msg :performative "bid" 2 :from 入札を送信してきたエージェント名 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子(タスク通知に記述したものと同値) 5 ) |
1 (Msg :performative "refusal" 2 :from サブタスクを依頼したエージェント名 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子(直接落札に記述したものと同値) 5 ) |
1 (Msg :performative "acceptance" 2 :from 落札の送信先となっていたエージェント名 3 :content (task :name XYZ :属性1 値1 :属性2 値2 ... ) 4 :tid タスク識別子(タスク通知に記述したものと同値) 5 :members ((コントラクタ1 ()) (コントラクタ2 ()) ...) 6 ) |
| [ 戻る ] | |||||||||||||||||||||||||||||||||
| メンバ名を取得する | |||||||||||||||||||||||||||||||||
【解説】
|
|||||||||||||||||||||||||||||||||
| [ 戻る ] | |||||||||||||||||||||||||||||||||
| エージェントリストについて (: membersの属性値について) | |||||||||||||||||||||||||||||||||
エージェントリストとは、組織を構成しているエージェントの名前をリストにしたものである。組織構成の過程でインスタンシエートに成功していた場合は、ワークプレース上での名前が格納され、失敗してした場合は、リポジトリ上の名前が格納される。要素の基本的な組を次に示す。 |
1 (Msg :performative "Error" 2 :from [ エージェント名 ] 3 :content エラーメッセージ 4 :tid タスク識別子 5 :cnp NO_SUCH_AGENT / NO_SUCH_DVM 6 ) |
1 (Msg :performative "Error" 2 :from [ エージェント名 ] 3 :content エラーメッセージ 4 :tid タスク識別子 5 :cnp INSTANTIATE_FAILED 6 ) |