12

マルチエージェント パラダイムを使用していくつかのシナリオをシミュレートしたいのですが、そのための最も一般的なツールはNetLogoRepastのようです。

誰かがどちらかの経験をしたことがあるかどうか知りたいのですが、それらについてもっと教えてもらえますか? たとえば、Repast にはフラックスグラムのようなモデリング オプションがあることに気付きましたが、かなり制限されていると思います。公式サイトのチュートリアルやドキュメントを見てみましたが、ドキュメントが不足しているようです。それにはいくつかの例がありますが、Repast が明らかに非常に堅牢であり、十分に与えられた場合、明らかにそれを処理できるにもかかわらず、特に準備されていないアンビエントをシミュレートするためにそれを拡張することは、現時点では到達不可能な目標のように思えます。それを熟知しています。

一方、NetLogo にはより多くの例があり、全体的にそのシンプルさが気に入っていますが、病気や類似のモデルの伝播をシミュレートすることに重点を置いているようです。Logoを教えるプログラミングの本を見つけたので、それを使い始める方が簡単だと思います。

現在、ボットネットIDS es をマルチエージェントとしてシミュレートすることを考えています。ただし、問題は、ネットワーク層とトランスポート層をある程度抽象化して、ノード間のトラフィックを生成できるようにする必要があることです。これには Repast の方が適しているようですが、その複雑さとドキュメントの不足を考えると、NetLogo を使用することを考えています。従来のアプリケーション (例: TetrisPac-Man )での NetLogo の例はいくつかありますが、それがどの程度適切かはわかりません。

4

7 に答える 7

12

私は、いくつかの居眠りしたnetlogo マルチエージェント シミュレーションを含む Web ページを持っています。私は教育に netlogo を使用していますが、一度学習曲線を過ぎれば、シミュレーションを驚くほど速く開発できることがわかりました。他のいわゆるエージェント環境 (Jade や Repast など、ほとんどが単なるプログラミング ライブラリです) では 80 工数かかる作業が 2 時間で完了します。

一方、netlogo は、TCP/IP から HTTP までのネットワークをシミュレートするなど、膨大な量の詳細を必要とするシミュレーションには適していません。プログラミング言語に関係なく、大量のコードが必要になるだけであり、プログラムが 10 ページを超える長さになると、netlogo は現在最悪です。そうは言っても、ほとんどの人は、10 ページの netlogo コードで何ができるかに驚くでしょう。

于 2010-02-10T22:24:28.353 に答える
12

簡単な答え:使用するプログラミング パラダイムまたは言語、およびエージェントに必要な設計によって異なります。

  • 迅速なプロトタイピングと洗練されたシミュレーションを可能にする低入門レベルの高天井言語が必要で、新しいパラダイム (ループを回避) を学習したい場合は、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です。これを試す機会がなかったので、これが他のものとどのように比較されるかはわかりませんが、試すことができます.

于 2014-03-05T17:05:13.580 に答える
4

これが一般的な比較です。

http://www.duncanrobertson.com/research/AMLE.pdf

于 2011-07-06T06:23:18.560 に答える
2

数か月前、シミュレーション用のフレームワークを選択しなければならなかったときに、多かれ少なかれ同じ問題が発生しました。Repast、NetLogo、Swarm、Jadeを見ています。NetLogoは素晴らしく、いくつかの簡単なテストアプリケーションを作成しようとしましたが、プログラミング言語としてJavaを使用したかったので、NetLogoは最適な候補ではありませんでした。Repastには、より大規模なシミュレーションを作成するために必要なほとんどすべてのものがあり、Repastが使用される多くのプロジェクト(特に社会科学)があります。Repastsに関する私の問題は、不正なAPIドキュメント、使用されないメソッドまたはコンストラクターに渡されるパラメーター、まったく意味をなさない(ソースコードを参照)、および多くの定型コードでした。Jade(http://jade.tilab.com/ )を使用しています)今、私はそれに本当に満足しています。コミュニティは良好で、彼らのメーリングリストは非常に活発です。さて、ジェイドは単なるライブラリであり、エージェントベースのモデリングのためのフレームワークです。Repastにはこれらのビジュアルエディタのようなものはなく、結果を視覚化するための独自のツールを作成する必要があります。

乾杯

于 2009-11-21T10:46:29.680 に答える
0

NetLogoを試したことはありませんが、Repast-JとSimphonyを試したことはあります。Simphonyは良いようですが、現時点では、Edgeタイプを直線から曲線に変更することに固執しています。利用可能な十分なドキュメントと例がありません。一度Javaをベースにしたメイソンも試してみました。Repast-Jに似ていますが、より高速でした。しかし最近、メイソンにはあまり発展がありません。後でジェイドを試してみたいです。

于 2009-12-03T22:36:21.543 に答える