(この文書は歴史的な参照用です – 私は2005年にこれを書き、http://agtivity.com/agdef.htmにある私のWebサイトで公開しました。 プリンシパル、エージェント、およびアシスタント
A Software Agent (または Autonomous Agent または Intelligent Agent) は、別のエンティティ (人間または計算機) に代わって、おそらく長期間にわたって、継続的な直接的監督または制御なしに動的環境 (変化が標準である) で目標に向かって働き、目標を行動タスクに転換しようとする方法でかなりの程度の柔軟性と創造性さえ示すコンピュータ プログラムである。
ソフトウェア エージェント システム (またはマルチエージェント システム (MAS)) は、個々のソフトウェア エージェントが、時には協力的に、時には競争的に、時には自律的に個々の目標を追求し、環境のリソースとサービスにアクセスし、時にはそれらのソフトウェア エージェントを開始したエンティティに結果をもたらすように互いに作用する計算環境 (Web またはグリッド計算環境オーバーレイ ネットワークなど) である。
よりシンプルで構造化された定義は、ソフトウェア エージェントとは、エージェンシーまたはソフトウェア エージェンシーの特性を示すコンピュータ プログラムであると言うことです。
他のエンティティは、人間、従来の「レガシー」コンピュータ プログラム、ロボット、または別のソフトウェア エージェントであり得ました。 ソフトウェア エージェントはロボットに似ていますが、コンピュータ ネットワーク上のサイバースペースで動作します。
ソフトウェア エージェントは自律型または少なくとも半自律型で、直接監督または直接制御をほとんど行わずに目標を追求するタスクを実行できますが、別のエンティティとやり取りして指導や出力結果を得ることができます。 ソフトウェア エージェントは実際、対話型または会話型で、エージェントと対話する「ユーザー」には直接見えない別のエンティティに代わって動作することができます。
ソフトウェア エージェントは、予期しないことが普通である動的な環境に対処するために、高いレベルの「知性」を持つ必要があるかもしれません。 しかし、明確に定義されたタスクを達成するために自律的に働き、予期せぬ状況を検出したときのみ監督を要求する「ダム」ソフトウェア・エージェントを持つことも可能である。
ソフトウェア・エージェントは「モバイル」であり、ネットワークの周りを移動するか、移動されるかもしれませんが、ソフトウェア・エージェントは「スタティック」でもあり、ネットワーク上の1つのホスト・コンピュータ上ですべての作業を行い、エージェントが実行されているホスト以外のホストにあるリソースにアクセスすることもできます。 これは自律的な動作モードではありませんが、対話型エージェントは、ある目標を達成するために出かけて行き、その間に自律的なモードで動作するように指示される可能性があります。 エージェンシー」の問題は、ユーザーとエージェントの間の変換と、エージェントが行う実際のタスクのセットとの間に、どの程度一対一の関係がないかにある。 アシスタントは言われたとおりのことをする。 エージェントは目標を与えられ、その目標を達成する方法について柔軟性を持ちます。
エージェントは単一エージェント (目標を達成するためにさまざまなタスクを行う 1 つのエージェント)、エージェント アンサンブル (チーム メンバーの間で専門性を持つ比較的小さなチーム)、またはエージェント艦隊 (特定のタスクでさえかなりの量の並列処理を行う多数のエージェント) の非常に小さな部分であるかもしれません。 単一のエージェントであっても、他のエンティティに責任を持つ他のエージェントと相互作用することがあります。 エージェント・アンサンブルとエージェント艦隊を区別するのは、それらが単一のエンティティに責任を負うということです。
私たちは、少なくとも多くの独立したエージェントが共通の目標を追求して協力(および/または競争)しているように見える、エージェント・コミュニティ、ソフトウェア・エージェントまたはマルチエージェントシステムのコミュニティについて話すことがあります。 コミュニティは事前に計画されたメンバーに限定されることもあれば、オープンエンドで、任意の外部エージェントがソフトウェアエージェントのオープンコミュニティに「参加」できることもある。
ソフトウェアエージェントは永久または無期限に実行され、その目標を追求し続けることができるが、目標が満たされるかもはや必要なくなった時点でエージェントのインスタンスが終了することも可能である。
ソフトウェアエージェントに適切な特性として頻繁に言及されるのは、反応的、熟慮的、目標駆動、適応的、自律的、学習、コミュニケーション、競争、および協調行動です。
ソフトウェアエージェント(およびソフトウェアエージェントシステム)は、モジュールアーキテクチャを用いて設計する必要があります。 オブジェクトは、一度に 1 つのオブジェクトのみがアクティブになる受動的なものになる傾向があり、オブジェクトはプログラムの中に「隠される」傾向があります。 プログラムは比較的静的で、不特定多数のプログラムが協調する分散計算を設計することは容易ではない。 ソフトウェアエージェントは、並列処理とプログラム間のコラボレーションを、大規模に、そして簡単に、堅牢で信頼性の高い、柔軟で安全な方法で行う機会を提供する。
ソフトウェア エージェントの形態
ソフトウェア エージェントの明確な定義はありませんので、私が現在までに特定したソフトウェア エージェントのさまざまな形態を以下に示します:
- システム エージェント – 通常、特殊で事前にプログラミングした目的を持つ継続実行するバックグラウンド タスクまたはデーモンです。 たとえば、World Wide Web にアクセスするための Web ブラウザ。
- クライアント・エージェント – 検索エンジンやディールシーキングなどのサーバーベースのアプリケーションのクライアント側ユーザー・インターフェイスです。 サーバー側は通常、Web サイトの変更を監視する何らかの形式の Web クローラーによって独立して維持されているデータベースに対して、データベース検索を実行するだけです。
- Web クローラー – Web または Web の選択部分を継続的または定期的にスキャンして、関心のある情報を探すサーバーベースのプログラムです。 会話型エージェント – 非常にユーザーフレンドリーなインターフェイスを表示し、ユーザーの指示に従って特定のタスクを実行する対話型プログラムです。
- Intelligent Agent – タスクを実行したり、最小限の指示で目標を追求するプログラムで、知的または発見的な技術を使用して、ユーザーがコンピュータがこれほど賢くなれることに非常に感銘を受けるような効果をもたらします。 ウェブ上の膨大な情報にリモートでアクセスできるため、IAがモバイルである必要はありません。
- モバイルエージェント – 1つまたは複数の目標を追求する過程で、ホストシステム間を移動する自律的なプログラムです。
- (クローズド)マルチエージェントシステム – アプリケーションの一部がサブゴールを追求するミニプログラムに分割されている、緊密に統合されたアプリケーション環境です。
- Open Multi-Agent System – 独立に構築されたプログラム(エージェント)が、エージェントがかなりの程度共通の関心(コミュニティ)を持っている構造化された相互作用に参加できる、緩く統合、分散したアプリケーション環境
- Ultimate Software Agent – 極めて知的で柔軟なプログラムで、実際の人間とほぼ同じように動作するがサイバースペースに制限されているもの。 さらに、USAは自分自身を動的にサブエージェントに分割し、サブタスクを実行したり、任意の程度の相互作用で並行して動作させることができる能力を持つ。 またUSAは、ネットワーク固有の並列性を利用するために、自分自身のクローンを作ることができる(あるいは、エージェント基盤によって自動的にクローン化されることが望ましい)。 分割されたサブエージェントやクローン化されたサブエージェントは、エージェント全体の機能や性能に適した任意の時点で再結合することができます。 また、USAは他の独立したUSA(USAのコミュニティ)と相互作用することができ、そのUSAは事前にプログラムされていないことを認識することができます。 幅広いプログラミング言語、実装技術、通信プロトコルを使用することができます。 すべてのUSAは、管理上のコントロールとリソースの制限を受けるだけで、他のすべてのUSAと完全に相互運用可能です。
- ロボット – 実世界で移動可能な知的なソフトウェアエージェントです。 今日、ロボットは自分自身のクローンを作ることはできませんが、理論的にはロボットは自分自身のコピーを物理的に作ることができますし、(レンタカーのように)「空の」(またはシェル)ロボットを購入またはレンタルすることもできます。 理論的には、ロボットは、他の場所で空のシェルを手に入れ、その「空の」ロボットに自分のソフトウェアの状態を「アップロード」するだけで、自分自身を他の場所に「移動」させることができます。
- ロボットコミュニティ – 共通の利益を追求するために相互作用できるロボット。
- ハイブリッドロボット/エージェント – 1つまたは複数のソフトウェアエージェントと相互作用できるロボット、または1つまたは複数のロボットと相互作用できるソフトウェアエージェント。 ロボットのコミュニティがソフトウェア・エージェントのコミュニティと相互作用するとき、物事は本当に面白くなる! また、ロボットはそのソフトウェアの状態をソフトウェア・エージェントに転送し、ソフトウェア・エージェントであるかのようにサイバースペースで操作し、その状態をロボットに戻すことができることに注意してください。 ソフトウェア・エージェントは逆に、その状態を物理的なロボットに転送し、ロボットを操作し、そしてその状態をサイバースペースに戻すことができるのです。 ロボットは、リモートアクセスを使って、ソフトウェアエージェントであるかのように行動することができます。 また、ソフトウェア・エージェントは、サイバースペースから直接物理的なロボットを操作することも可能で、これもリモート・アクセスを利用する。 実際、1つのソフトウェアエージェント(またはエージェントチーム)が、同じ場所や異なる場所にある複数のロボットを操作することができ、それらのロボットの相互作用も制御することができます。 A Taxonomy for Autonomous Agents “と題された Stan Franklin と Art Graesser の論文を参照してください。