エージェント指向プログラミング (AOP: Agent Oriented Programming) エージェント: メッセージパッシングによって互いに通信を行い、自律的かつ並 行実行的に動作するコンピュータシステム上のプロセス AOPの構成要素 (a) エージェントの状態や機能(仕様)を表現する論理体系 ---> 目標、信念、責務などの心的状態、および 時間概念を含む様相論理の体系 (b) エージェントプログラミング(記述)言語とその処理系 ---> Agent-0(言語)とその処理系 (c) 設計仕様からエージェントを生成するエージェント化機構 ---> 明確な解は与えられていない Y.Shoham, "Agent-oriented Programming", Artificial Intelligence, 60(1), pp.51-92, Elsevier, 1993. © Tetsuo Kinoshita 1 心的状態の表現 ・認識している事柄や知識 ・処理目標(達成したいこと)や処理しなければならない事柄 ・選択可能/実行可能な動作 [AOPで導入されたオペレータ] ・時刻(Time): 各記述に付与される離散時間による指標 holding(t; robot; cup) ・動作(Action): エージェントの振る舞いやその結果 raise-arm(t; robot) ・信念(Belief): エージェントaが時刻tで事柄fが成立すると信じる状態 B(t; a; f) 再帰的な記述:B(3; a; B(10; b; like(7; a,b))) © Tetsuo Kinoshita 2 心的状態の表現 (続き) [AOPで導入されたオペレータ](続き) ・責務(Obligation): 時刻tにおいて、エージェントaがエージェントbに対して、ある事柄fの 達成に関する責務を負う(エージェントaが事柄fの達成にコミット)という状態 OBL(t; a,b; f) ・判断(Decision/Choice): 可能な動作の選択肢のひとつを選択する状態 DEC(t; a; f) = OBL(t; a,a; f) 「時刻tにおいてエージェントaが事柄fを選択する」= 「時刻tでエージェントa は、事柄fの成立に関して、自分自身に対して責務を負う」 ・能力(Capability): 時刻tで、エージェントaによる事柄fの達成可能であるという状態 (aがfを達成する能力を持っている状態) CAN(t; a; f) 例: robot が、時刻5の時点で「時刻8にドアが開く」ことが可能と確信している状態: CAN(5; robot; open(8; door)) ABLE(a) = CAN(time(f); a; f) © Tetsuo Kinoshita 3 Agent-0のプログラム構造 [ エージェントプログラム ] 心的状態(初期状態) Initial Beliefs ::= <fact>* 能力(動作) コミットメントルール Capabilities ::= ( <action> <mntlcond> )* Commitment Rules ::= <commitrule>* ・事実: <fact> ::= ( <time> ( <predicate> <arg>*) ) 例: (10 (Employee Smith G)) ・能力: Capabilities ::= ( <action> <mntlcond> )* © Tetsuo Kinoshita <mntlcond> (B <fact>) : 信念の記述 ((CMT <agent>) <action>) : 責務の記述 (NOT <mntlpattern>) : 心的状態パターンの否定形 4 ・動作プリミティブと通信プリミティブ エージェント動作 固有動作 (DO <time> <privateaction>) 条件付き動作 (IF <mntlcond> <action>) 動作抑制 (REFRAIN <action>) エージェント間通信 情報通知 (INFORM <time> <agent> <fact>) 情報要求 (REQUEST <time> <agent> <action>) 要求無効化 (UNREQUEST <time> <agent> <action>) 例: (INFORM 5 a (DO 8 update-database)) (REQUEST 1 a (REQUEST 5 b (INFORM 10 c fact))) © Tetsuo Kinoshita 5 ・コミットメントルール 心的状態とメッセージに基づくエージェントの振る舞い (COMMIT <msgcond> <mntlcond> (<agent> <action>)* ) 例: (COMMIT (?a REQUEST ?action) (B (now (myfriend ?a))) ( ?a ?action) ) 内容; if エージェント?aから処理?actionに関する要求を受信 そのとき(now)?aが友人であると信じている then エージェント?aから依頼された処理?actionを実行 © Tetsuo Kinoshita 6 Agent-0のインタプリタ 心的状態と能力の初期化 コミットメントルールの定義 メッセージ(入力) 心的状態の更新 クロック データベース 心的状態 信念の更新 信念 責務 責務の更新 コミットメントルール の実行 © Tetsuo Kinoshita 能力 メッセージ(出力) 7 Agent-0の特徴 ・エージェントプログラム:心的状態の変更規則を表現したコミットメントルール. ・エージェント間通信:発話行為(speech act)理論[Austin62]に基づく通信プリ ミティブ(通知、情報要求、反復など)に基づく. ・エージェントプログラムは、クロック同期型のインタプリタによって解釈・実行. ・コミットメントルールによる心的状態の変更によって処理(推論)を実行. 心的状態そのものに関する推論は行わない. Austin, J. L., “How to Do Things with Words”, Oxford University Press, 1962. Searle, J. R., “Speech Acts”, Cambridge University Press, 1969. © Tetsuo Kinoshita 8 適用例: 航空券予約カウンタの処理 航空会社の職員(airline)と顧客(smith) [職員エージェントのプログラム] ・搭乗券発行: (issue-bp pass flightnum time) ・・・ 簡略表記 その意味内容を詳細表記で記述すれば・・・ (IF (AND (B ((- time h) (present pass)) ) (B (time (flight ?from ?to flightnum))) ) (DO time-h (physical-issue-bp pass flightnum time)) ) 搭乗便の出発時間の一時間以上前の時点で、 まだ座席の割り当てが済んでいないとき、搭乗券を発行する ・質問: (query-which t asker askee q) ・確認: (query-whether t asker askee q) © Tetsuo Kinoshita 9 ・発券: ((issue_bp ?a ?flight ?time) true) 顧客(?a)の搭乗便(?flight)への発券が可能と信ずるとき発券処理実行 ・座席情報更新: ( (DO ?time (update_remaining_seats ?time1 ?flight_number ?additional_seats)) (B (?time (remaining_seats ?time1 ?flight_number ?current_seats))) ) 搭乗便(?flight_number)の座席情報を更新(update_remaining_seats)し、 その時点での空席状況(remaining_seats)を信念として記憶 © Tetsuo Kinoshita 10 ・問い合わせ処理(コミットメントルール): (COMMIT (?pass REQUEST (IF (B ?p) (INFORM ?t ?pass ?p)) ) true (?pass (IF (B ?p) (INFORM ?t ?pass ?p))) ) 顧客(?pass)から、事柄(?p)に関する問い合わせがあり、 それに答えられる場合には、顧客に回答を返す 注) (COMMIT <msgcond> <mntlcond> (<agent> <action>)* ) © Tetsuo Kinoshita 11 ・発券処理(コミットメントルール): (COMMIT (?cust REQUEST (issue-bp ?pass ?flight ?time)) (AND (B (?time (remaining_seats ?flight ?n))) (?n > 0) (NOT ((CMT ?anyone) (issue_bp ?pass ?anyflight ?time))) ) (myself (DO (+ now 1) (update_remaining_seats ?time ?flight -1))) (?cust (issue_bp ?pass ?flight ?time)) ) 顧客(?cust)からの発券依頼(出発便?flight)があり、 その便に空席があり、その予約が確認されれば、 職員(myself)は、座席情報を更新して発券する © Tetsuo Kinoshita 12 動作例 Agent Action 3月1日 予約カウンタにて smith (query-which 1march/1:00 smith airline (18april/?!time (flight sf ny ?!num))) 4月18日、SFからNYへの便はありますか. airline (INFORM 1march/2:00 smith (18april/8:30 (flight sf ny #354))) 8時30分発354便があります. airline (INFORM 1march/2:00 smith (18april/10:00 (flight sf ny #293))) 10時発293便があります. airline (INFORM 1march/2:00 smith (18april/ ... ・・・ © Tetsuo Kinoshita 13 Agent Action smith (REQUEST 1march/1:00 airline (issue-bp smith #354 18april/8:30)) じゃあ、354便にしよう. smith (query-whether 1march/4:00 smith airline ((CMT smith) (issue-bp smith #354 18april/8:30))) 354便にブッキングしてください. airline (INFORM 1march/5:00 smith airline (NOT ((CMT smith) (issue-bp smith #354 18april/8:30)))) 354便は満席です. smith (REQUEST 1march/6:00 airline (issue-bp smith #293 18april/10:00)) じゃあ、293便にしよう. smith (query-whether 1march/7:00 smith airline ((CMT smith) (issue-bp smith #293 18april/10:00))) 293便にブッキングしてください. airline (INFORM 1march/8:00 smith ((CMT smith) (issue-bp smith #293 18april/10:00))) 了解しました. © Tetsuo Kinoshita 14 Agent Action ・・・ 4月18日 空港カウンタにて smith (INFORM 18april/9:00 airline (present smith)) 293便に予約しているスミスですが・・・ airline (DO 18april/9:00 (issue-bp smith #293 18april/10:00))) 確認しました.293便の搭乗券をどうぞ. © Tetsuo Kinoshita 15 エージェントプログラミングの性質 概念 抽象化概念 構成要素と その特性 動作モデル 設計モデル/ アーキテクチャ © Tetsuo Kinoshita 手続き型言語 型 命令、データ 静的 手続き/呼び出し 計算(機能) 機能階層 オブジェクト指向言語 エージェント言語 クラス 社会, チーム オブジェクト エージェント 静的 動的、目標指向 メッセージパッシング、 メッセージ交換、 メソッド起動 生成/活性化 計算主体、相互関係、 タスク(問題)、組織、 継承、多重視点 協調分散問題解決 16
© Copyright 2024 ExpyDoc