GOAL は、認知エージェントをプログラミングするためのエージェントプログラミング言語です。GOAL エージェントは、自分の信念と目標から行動を選択します。この言語は、エージェントの信念と目標の操作を可能にし、エージェントの意思決定を構造化するプログラミング構造によって、認知エージェントを設計および実装するための基本的な構成要素を提供します。この言語は、常識や実際的な推論に基づいた直感的なプログラミング フレームワークを提供します。
概要
GOAL の主な機能は次のとおりです。
- 宣言的信念: エージェントは、目標を達成するために、自分が持っている情報、行動する環境に関する信念や知識を記号的かつ論理的な言語で表現します。この知識表現言語はGOAL によって固定されていませんが、原則としてプログラマーのニーズに応じて変更できます。
- 宣言的目標: エージェントは、近い将来または遠い将来のある時点でエージェントが達成したいことを指定する複数の目標を持つ場合があります。宣言的目標は、エージェントが確立したい環境の状態を指定しますが、そのような状態を達成するためのアクションや手順は指定しません。
- ブラインド コミットメント戦略: エージェントは目標にコミットし、目標が達成された場合にのみ目標を放棄します。文献ではブラインドコミットメント戦略と呼ばれるこのコミットメント戦略は、GOAL エージェントが使用するデフォルトの戦略です。認知エージェントは、すでに達成されていると信じている目標を持たないものと想定されます。これは、目標が完全に達成されたときに目標を放棄するという制約が GOAL エージェントに組み込まれていることを意味します。
- ルールベースのアクション選択: エージェントは、信念と目標に基づいて、いわゆるアクション ルールを使用してアクションを選択します。このようなルールは、エージェントのアクション ルールが与えられた場合にいつでも複数のアクションを実行できるという意味で、アクションの選択を不十分に指定する場合があります。その場合、GOAL エージェントは実行のために任意の有効なアクションを選択します。
- ポリシーベースの意図モジュール: エージェントは、アクションのサブセットを使用して、目標のサブセットの達成に関連のある知識のみを使用して、注意を集中し、すべての努力を注ぐことができます。GOAL は、特定の目標の達成に特化したアクション ルールと知識を構造化するモジュールを提供します。非公式には、モジュールはMichael Bratmanの意味でのポリシーベースの意図として考えることができます。
- 知識レベルでのコミュニケーション: エージェントは、情報を交換し、アクションを調整するために互いに通信する場合があります。GOAL エージェントは、信念と目標を表現するためにも使用される知識表現言語を使用して通信します。
- テスト: GOAL のテストも記述できます。
GOALエージェントプログラム
GOAL エージェント プログラムは、それぞれ知識、信念、目標、アクション ルール、アクション仕様、および知覚ルールの 6 つの異なるセクションで構成されます。知識、信念、および目標は、たとえばProlog、回答セット プログラミング、SQL (またはDatalog )、または計画ドメイン定義言語などの知識表現言語で表現されます。以下では、Prolog を使用した GOAL エージェント プログラムのコンポーネントを示します。
GOAL エージェント プログラムの全体的な構造は次のようになります。
メイン: <エージェント名> {
<セクション>
}
GOAL エージェントの構造を説明するために使用される GOAL エージェント コードは、ブロックの世界の問題を解決できるエージェントです。エージェントの信念はブロックの世界の現在の状態を表し、エージェントの目標は目標の状態を表します。次にリストされている知識セクションには、ブロックの世界のドメインに関連する追加の概念またはドメイン知識が含まれています。
知識{
ブロック( a )、 ブロック( b )、 ブロック( c )、 ブロック( d )、 ブロック( e )、 ブロック( f )、 ブロック( g )。
クリア(表)。
クリア( X ) :- ブロック( X )、 not ( on ( Y , X ))。
タワー([ X ]) :- on ( X ,表)。
タワー([ X , Y | T ]) :- on ( X , Y )、 タワー([ Y | T ])。
}
ブロックの完全な構成を特徴付けるには各ブロックの位置を指定する必要があるため、 知識セクションにリストされているすべてのブロックが信念セクションに再び表示されることに注意してください。
信念{
on(a,b)、on(b,c)、on(c,table)、on(d,e)、on(e,table)、on(f,g)、on(g,table)。
}
すべての既知のブロックは、すべてのブロックを再利用する目標構成を指定する 目標セクションにも存在します。
目標{
on(a,e)、on(b,table)、on(c,table)、on(d,c)、on(e,b)、on(f,d)、on(g,table)。
}
GOAL エージェントは、同時に複数の目標を持つことができます。これらの目標は、それぞれ異なる時間に実現される可能性があるため、矛盾する場合もあります。たとえば、エージェントは映画館で映画を観て、その後家に帰るという目標を持つ場合があります。
GOAL では、さまざまな目標の概念が区別されています。基本目標は、知識ベースで定義された概念と組み合わせて目標ベースから得られるステートメントです。たとえば、tower([a,e,b])は基本目標であり、goal(tower([a,e,b])これを表すために と記述します。最初は、エージェントは a が e の上にあり、e が b の上にあり、b がテーブルの上にあるとは考えていないため、tower([a,e,b])も達成目標です。達成目標は、エージェントがそうではないと考えている基本目標であり、 と記述されます。目標が達成されたa-goal(tower([a,e,b])ことを表現できることも便利です。は、たとえば、ブロック e がブロック b の上にある状態でタワーが達成されたことを表すために使用されます。達成目標と、達成された目標の概念は、どちらも次のように定義できます。
goal-a(tower([e,b])[e,b]
a-goal(式) ::= goal(式)、not(bel(式)) goal-a(式) ::= goal(式), bel(式)
エージェント文献には、達成目標の概念を定義する重要な文献があります (参考文献を参照)。
GOAL はルールベースのプログラミング言語です。ルールはモジュールに構造化されています。GOALエージェントのメイン モジュールは、アクション ルールを使用してアクションを選択する戦略を指定します。以下の最初のルールは、ブロック X をブロック Y (またはテーブル) の上に移動することが、そのような移動が建設的である場合、つまりブロックを所定の位置に移動する場合にオプションであることを示しています。2 番目のルールは、ブロック X が間違った場所にある場合に、ブロック X をテーブルに移動することがオプションであることを示しています。
メインモジュール{
プログラム{
a-goal(tower([X,Y|T]))、bel(tower([Y|T]))の場合、move(X,Y)。
a-goal(tower([X|T])) の場合、move(X,table) を実行します。
}
}
上記で使用した移動アクションなどのアクションは、前提条件と事後条件のSTRIPSスタイルの指定を使用して指定されます。前提条件は、アクションがいつ実行できるか (有効になっているか) を指定します。事後条件は、アクションを実行した場合の効果を指定します。
アクションスペック{
移動(X,Y) {
pre{ クリア(X)、クリア(Y)、オン(X,Z)、非(X=Y) }
post{not(on(X,Z))、on(X,Y)}
}
最後に、イベント モジュールは、環境から受信した知覚などのイベントを処理するためのルールで構成されます。以下のルールは、ブロック X がブロック Y 上にあり、X が Y と等しくない Z の上にあると考えられることを示す受信したすべての知覚に対して、(X,Y) の新しい事実を確信ベースに追加し、(X,Z) のアトムを削除することを指定します。
イベントモジュール{
プログラム{
forall bel( percept(on(X,Y)), on(X,Z), not(Y=Z) ) do insert(on(X,Y), not(on(X,Z))).
}
}
関連するエージェントプログラミング言語
GOAL エージェント プログラミング言語は、AGENT0、AgentSpeak、2APL、Golog、JACK Intelligent Agents、Jadex、Jason などの他のエージェント プログラミング言語と関連がありますが、異なります。GOAL の特徴は、宣言的目標の概念です。GOAL エージェントの目標は、エージェントが何を達成したいかを説明するものであり、どのように達成するかを説明するものではありません。他の言語とは異なり、GOAL エージェントは目標にコミットし、目標が完全に達成された場合にのみ目標を削除します。GOAL は、宣言的プログラミングと認知エージェントに必要な推論機能に重点を置いたプログラミング フレームワークを提供します。
参照
参考文献
- ^ エレベーター シミュレーターは、もともと Chris Dailey と Neil McKellar によって作成され、http://sourceforge.net/projects/elevatorsim からオリジナルの形式で入手できます。
- 注記
目標の概念に関する文献:
- Lars Braubach、Alexander Pokahr、Daniel Moldt、Winfried Lamersdorf (2004)。BDI エージェント システムの目標表現、マルチエージェント システムのプログラミングに関する第 2 回国際ワークショップ。
- Philip R. Cohen と Hector J. Levesque (1990)。意図はコミットメントを伴う選択である。人工知能 42、213–261。
- Andreas Herzig および D. Longin (2004)。C&l 意図の再考。知識表現および推論の原理に関する第 9 回国際会議議事録 (KR'04)、527–535 ページ。
- Koen V. Hindriks、Frank S. de Boer、Wiebe van der Hoek、John-Jules Ch. Meyer (2000)。宣言的目標によるエージェントプログラミング。第 7 回インテリジェントエージェント国際ワークショップ VII (ATAL'00) の議事録、pp. 228–243。
- Anand S. Rao および Michael P. Georgeff (1993)。意図と合理的コミットメント。Tech. Rep. 8、オーストラリア人工知能研究所。
- Birna van Riemsdijk、Mehdi Dastani、John-Jules Ch. Meyer (2009)。Goals in Conflict: エージェントプログラミングにおける目標の意味的基礎。International Journal of Autonomous Agents and Multi-Agent Systems。
外部リンク
- GOALエージェントプログラミング言語ホーム
