エージェント指向プログラミング( AOP ) は、ソフトウェアの構築がソフトウェア エージェントの概念を中心に行われるプログラミング パラダイムです。オブジェクト指向プログラミングがオブジェクト (可変パラメータを持つメソッドを提供) を中核としているのに対し、AOP は外部指定のエージェント (インターフェイスとメッセージング機能を持つ) を中核としています。これらはオブジェクトの抽象化と考えることができます。交換されたメッセージは、受信側の「エージェント」によって、そのエージェントのクラスに固有の方法で解釈されます。
歴史
歴史的に、エージェント指向プログラミングの概念と、エージェントの概念を中心にソフトウェアを設計するというアイデアは、1990 年にヨアヴ・ショハムが人工知能の研究の中で導入しました。 [1] [2]彼のエージェントは、1 つのメソッドと 1 つのパラメータのみを持つという点で、彼自身のパラダイムに特化しています。AOP と OOP の基本的な違いについては、ヨアヴ・ショハムの 1990 年の論文から引用します。
... エージェント指向プログラミング (AOP) は、オブジェクト指向プログラミングの特殊化として考えることができます。
フレームワーク
Shoham のプログラミング パラダイムを実装する AOP「フレームワーク」(エージェント プラットフォームとも呼ばれる) は複数あります。次の例は、基本的なエージェントが hello-world プログラムとしてプログラムされる方法を示しています。
ジェイド
Javaプラットフォームの場合、フレームワークの1つはJADEです。[3]これはコードを実行するエージェントの 非常に基本的な例です[4] 。
パッケージhelloworld ; jade.core.Agentをインポート;
public class Hello extends Agent { protected void setup () { System.out.println ( " Hello World . " ) ; System.out.println ( " My name is " + getLocalName ( )); } public Hello ( ) { System.out.println ( "コンストラクターが呼び出されました" ) ; }
}
JADEのAOPモデルの核となるのは、APIが標準のFIPA エージェント通信言語をサポートしていることである。
エージェントスピーク(ジェイソン)
AgentSpeak は、論理プログラミングと信念・欲求・意図(BDI) アーキテクチャに基づいたエージェント指向プログラミング言語です。
エージェント指向の概念を、Javaとオブジェクト指向の背後にあるJADEのような難読化されていないスキームに文字通り翻訳するために、Agent Speak [5] (Jason)はエージェントのための「自然な」言語を提供します。
開始しました。
+開始しました<- .print("Hello World. ").
ゴール
GOAL は、認知エージェントをプログラミングするためのエージェントプログラミング言語です。GOAL エージェントは、自分の信念と目標から行動を選択します。この言語は、エージェントの信念と目標の操作を可能にし、エージェントの意思決定を構造化するプログラミング構造によって、認知エージェントを設計および実装するための基本的な構成要素を提供します。この言語は、常識や実際的な推論に基づいた直感的なプログラミング フレームワークを提供します。
SARL言語
SARL [6]は、マルチエージェントシステムをコーディングするための基本的な抽象化を提供します。[7]スクリプトのような構文を使用します(ScalaとRubyに触発されています)。
パッケージhelloworldをインポートします。io.sarl.core.InitializeエージェントHelloWorldAgent { on Initialize { println ( "Hello World." ) } }
PADE (Python エージェント開発フレームワーク)
PADE [8]はPython言語でインテリジェントエージェントを開発するためのPythonパッケージです。このフレームワークはFIPAおよびACL標準に準拠しています。
クラス AgenteHelloWorld ( Agent ):
def __init__ ( self , aid ):
super ( AgenteHelloWorld , self ) . __init__ ( aid = aid )
display_message ( self . aid . localname , 'Hello World!' )
ミドルウェア
モジュール式または拡張可能な AOP サポートを実装する方法の 1 つは、ソフトウェア エージェントとして実装されているミドルウェア機能に標準 AOP API を定義することです。たとえば、ディレクトリ サービスはFIPAディレクトリ ファシリテーターまたは DF ソフトウェア エージェントとして実装できます。エージェントを開始、停止、一時停止、再開するライフサイクル管理は、FIPA エージェント管理サービスまたは AMS エージェントとして実装できます。[9] AOP アプローチの利点は、アプリケーション、サービス、ネットワークのさまざまなユーザーとプロバイダー間のより動的な役割をサポートすることです。たとえば、従来、ネットワークとサービスは通常、顧客に代わってネットワーク プロバイダーとサービス プロバイダーによって管理され、単一の仮想ネットワーク サービスとして提供されていましたが、顧客自身が独自のサービスを統合および管理する権限が与えられつつあります。これは、AOP と、通信を柔軟かつ動的に管理できるミドルウェア エージェントへの API を介して実現できます。[10]
参照
- ソフトウェアエージェント – ユーザーに代わって動作するコンピュータプログラム
- NetLogo – プログラミング言語
- アクターモデル – 並行計算のモデル
- GOAL – 認知エージェントをプログラミングするためのエージェントプログラミング言語
参考文献
- ^ Shoham, Y. (1990).エージェント指向プログラミング(技術レポート STAN-CS-90-1335). スタンフォード大学: コンピュータサイエンス学部。
- ^ Shoham, Y. (1993). 「エージェント指向プログラミング」.人工知能. 60 (1): 51–92. CiteSeerX 10.1.1.123.5119 . doi :10.1016/0004-3702(93)90034-9.
- ^ Bellifeminee, Fabio; Agostino Poggi; Giovanni Rimassa ( 2024 ). JADE: FIPA2000準拠のエージェント開発環境。自律エージェントに関する第5回国際会議の議事録。pp. 216–217。doi :10.1145/375735.376120。
- ^ “Rootdev”. rootdev.nl . 2011年7月2日時点のオリジナルよりアーカイブ。2022年9月18日閲覧。
- ^ Anand S. Rao、1996年。AgentSpeak(L): BDIエージェントが論理計算可能言語で発言。マルチエージェント世界における自律エージェントのモデリングに関する第7回ヨーロッパワークショップ(MAAMAW-96)の議事録。
- ^ ロドリゲス、セバスチャン、ゴー、ニコラス、ギャランド、ステファン (2014)。「SARL: 汎用エージェント指向プログラミング言語」。2014 IEEE/ WIC /ACM 国際 Web インテリジェンス (WI) およびインテリジェント エージェント テクノロジー (IAT) 合同会議。pp. 103–110。doi :10.1109 / wi-iat.2014.156。ISBN 978-1-4799-4143-8. S2CID 15508257。
- ^ SARLウェブサイト
- ^ 「Python エージェント開発フレームワーク — Pade 1.0 ドキュメント」。
- ^ Poslad, S (2007). 「マルチエージェントシステムインタラクションのプロトコルの指定」ACM Transactions on Autonomous and Adaptive Systems 2 (4): 15–es. doi : 10.1145/1293731.1293735. S2CID 9477595.
- ^ Poslad, S.; Pitt, J.; Mamdani, A.; Hadingham, R.; Buckle, P. (1999). Hayzelden, A.; Bigham, J. (編).顧客ネットワーク サービスを統合するためのエージェント指向ミドルウェア。将来の通信システム向けソフトウェア エージェント。pp. 221–242。doi : 10.1007 /978-3-642-58418-3_9。
