簡単な答え:使用するプログラミング パラダイムまたは言語、およびエージェントに必要な設計によって異なります。
迅速なプロトタイピングと洗練されたシミュレーションを可能にする低入門レベルの高天井言語が必要で、新しいパラダイム (ループを回避) を学習したい場合は、NetLogoを使用してください。良いドキュメント。
高度に並列化されたクラスターで使用する実際のアプリケーションを作成したい場合、または単に Java Groovy を使用したい場合、または目的のために特定の Java ライブラリが必要な場合は、ハイ パフォーマンス コンピューティング用のRepast またはより良い Repast を使用します(ただし、非常に遅い ReLogo は避けてください)。 . 軽度のドキュメント。
FIPA 通信を使用して (リアクティブではなく) コグニティブ エージェントをモデル化する場合は、JasonまたはAgentSpeak + Java をサポートするJaCaMoを使用することをお勧めします (したがって、お気に入りの Java ライブラリも使用できます)。Groovy は必要ありません。不適切なドキュメント (多くの詳細でない機能とコマンド、および複雑すぎてコメントされていない不適切な例)。
長い回答:
免責事項: 私は NetLogo の経験が豊富ですが、Repast や Jason のような他のいくつかも使用しました。
基本的に、NetLogo と Repast の違いは、NetLogo ではより単純なフレームワークが得られることですが、タートルとパッチ指向のパラダイムでプログラミングする方法を学ぶ必要がありますが、Repast ではそれを学ぶ必要があります。 Java Groovy の背後にあるメカニズムを使用しますが、最終的には柔軟性が向上します。ここでは速度は実際の基準ではありません (以下を参照)。
より明確に言うと、タートルとパッチのネイティブ関数を最大限に使用すれば、NetLogo で効率的にプログラミングできます。たとえば、ノードのリストを実装する代わりに A* を実装する場合は、パッチを直接使用し、次のようなものを使用してそれらをフィルタリングする必要があります。
ask patchs with [criteria1 = value and criteria2 = value2] [do-some-stuff]
ask patchs with-min [criteria][do]
let var [somevalue] of min-one-of patches [criteria]
また、必要なことを効率的に行う方法が見つからない場合は、目的の拡張機能が存在するかどうかを確認してください(ライブラリとツールの下でも確認してください) 。NetLogo の効率的なニューラル ネットワーク。
一方、Repast は NetLogo よりも柔軟である可能性がありますが (Java ライブラリのすべての範囲にアクセスできるため)、Groovy の処理方法を知る必要があるため、もう少し複雑です。
速度のみに関心がある場合は、NetLogo よりもはるかに遅いことが示されている ReLogo (Repast の NetLogo に似た構文) を使用しないでください (以下の 2012 年の論文を参照)。いずれにしても、上記のトリックを使用して NetLogo で実装を試すのが最善の策です。または、アプリケーションを後で実際に使用したい場合は、Repast for High Performance Computingと呼ばれるディストリビューションもあります。 turtles オブジェクトと patchs オブジェクトが付属しているため、実際のアプリケーションに使用できます。NetLogo が並列化を使用してクラスターで計算するための同様の拡張機能が存在しますが、公式のディストリビューションではありません。
多様なプラットフォームに関する詳細情報が必要な場合は、2006 年の素晴らしいレビューをご覧ください。
Railsback、SF、Lytinen、SL、および Jackson、SK (2006)。エージェントベースのシミュレーション プラットフォーム: レビューと開発に関する推奨事項。シミュレーション、82(9)、609-623。
そして、NetLogo と ReLogo を扱った 2012 年のこの論文の更新版:
Lytinen、SL、および Railsback、SF (2012 年 4 月)。エージェントベースのシミュレーション プラットフォームの進化: netlogo 5.0 と relogo のレビュー。エージェントベースのモデリングとシミュレーションに関する第 4 回国際シンポジウムの議事録。
/EDIT:ジェイソンを引用しましたが、それ以上の詳細は提供しませんでした. (反応エージェントの代わりに)認知エージェントをモデル化したい場合は、非公式のBDI 拡張機能を使用して NetLogo でそれを行うことができます。 AgentSpeak を完全にサポートするコグニティブ エージェントをモデル化するために特別に設計されたフレームワークを使用します。
技術面を実装するための完全な AgentSpeak 言語 + JAVA にアクセスできるので、Jasonはとても親切です。実際、AgentSpeak だけを使用してプロジェクト全体を実行することもできますが (私はそうしました)、より Java 指向のバージョンを作成することもできます。プログラムをどのように設計するかはあなた次第です。結果は多かれ少なかれ同じになります。これにより、設計ワークフローに大きな柔軟性がもたらされます。
ヒント:ドキュメントで「Jason internal actions」を検索して、利用可能な AgentSpeak コマンドの詳細な説明を入手してください。
JaCaMo (= Jason + Cartago + Moise)にも興味があるかもしれません。JaCaMo (= Jason + Cartago + Moise) は、複雑な環境をモデル化できる (アーティファクト理論) とマルチエージェント組織 (役割、グループ、ミッションなど)。
私が知っている最後のフレームワークは、2D および 3D 環境をサポートするMasonです。これを試す機会がなかったので、これが他のものとどのように比較されるかはわかりませんが、試すことができます.