ソフトウェアエージェント
永続性(persistence) - そのコードは要求されて実行されるのではなく、常に起動された状態で、何らかの行動を起こす時期を自身で判断する。
自律性(autonomy) - エージェントは、実行すべきタスクの選択、優先順位付け、目標に向けた行動、意思決定を人間の手助けなしで行う機能を持つ。
社会性(social ability) - エージェントは他のコンポーネントと何らかの通信や協調をする機能を持ち、1つのタスクを共同で処理する。
反応性(reactivity) - エージェントは周囲の環境を把握し、その変化に適切に反応する。
「エージェント」の概念は規範としてよりもシステムを解析するツールとして最も役立つ。上述したエージェントの概念は人間が複雑な仕事を考える場合の自然な方法を反映したものであり、そのためにエージェントはそのような複雑なタスクのモデルとして有効である。
エージェントベースのシステムの開発する際の問題として、以下のようなものが挙げられる。
タスクのスケジューリングと同期をどのように実現するか
エージェントがどうやってタスクの優先順位付けをするか
エージェント間の協調動作やリソース確保をどうするか
エージェントをどのように別の環境に生成するか、内部状態をどう保持するか
周囲の環境をどのようにして感知し、環境の変化を動作の変化に結びつけるか
通信をどう行うか
エージェント群の階層構造はどうすべきか(例えば、タスク実行エージェント、スケジューリングエージェント、リソース確保エージェント......)
ソフトウェアエージェントが効率的に協調動作するには、データの意味論的要素を共有しなければならない。これはコンピュータシステムがメタデータを提示することで可能である。
「エージェント処理; agent processing」には相互に関連する以下の2つの定義がある。
内部状態処理と知識表現のためのオントロジー
協調動作のプロトコル - タスク間の通信を行うための標準
エージェントシステムは実世界を並行性や並列性でモデル化したものでもある。
Agent Machinery - 各種エンジン。知能程度は様々である。
Agent Content - Machinery が推論や学習に利用するデータ。
Agent Access - Machinery が Content を把握し推論の結果として行動することを可能にする方法
Fanklin & Graesser (1996) では、一般的プログラムとエージェントを区別する4つの点を指摘した。それは「環境への反応、自律性、ゴール指向、永続性」である。