問題タブ [agent-based-modeling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 高度な視覚化を備えた Python での ABM
これがすべておかしくて不明確に見える場合は申し訳ありませんが、私は現在 Netlogo を学習してエージェントベースの集団行動をモデル化しており、代替ソフトウェアの選択に関するアドバイスを聞きたいと思っています. 私の主なことは、私が理解していることから、並列計算が可能になるため、PyCuda を大いに利用したいということです。しかし、それは、別の環境で数値スクリプトを作成し、さらに別の環境でビジュアルを実装する必要があるということですか?
もしそうなら、私の質問は次のとおりです。
どの数値パッケージを使用すればよいですか? PyEvolve、DEAP、またはその他の何か? PyEvolve はもはや開発されておらず、DEAP は時代遅れの (?) EAP のラッパーに過ぎないようです。
グラフィックに関しては、mayavi2 と vtk が有望だと思います。問題は、数値パッケージのどれもこれらに容易にバインドできないように見えることです。数値出力をデータファイルに保存して、たとえばmayavi2にフィードするよりも良い方法はありますか?
もう 1 つのオプションは、Netlogo を介してデータを生成し、(2) からグラフ作成パッケージにフィードすることです。これを行うことの不利益はありますか?
この混乱に光を当ててくれてありがとう。
simulation - シミュレーションとソフトウェア工学
離散時間シミュレーションであるシミュレーション プロジェクトを開始したいと考えています。目的は、関連するいくつかの非自律的な物理モデルとのエージェント通信をシミュレートすることであるため、必ずしも純粋なエージェントベースのシミュレーションに限定されるわけではありません。始める前に、シミュレーションに固有のソフトウェア エンジニアリング プラクティスにはどのようなものがあるのかを尋ねたいと思いました。たとえば、テスト プラクティス (TDD に適していますか? シミュレーションは非常に非決定論的である傾向があります)、ソフトウェア エンジニアリングの観点から見た一般的で頻繁に発生する問題はどれですか?などです。モデリング プロセスについて話しているのではなく、既存のモデルを使用するシステムを実現するプロセスです。関連書籍の推薦は大歓迎です。
ありがとう。
objective-c - Objective-C でのエージェント ベースのモデリング プロジェクトの同期とスレッド化
まず、私は Objective-C の初心者です。私のバックグラウンドのほとんどは Java です。また、ほとんどの Objective-C に関する質問は Cocoa に関するものであるため、これはGNUStepに関するものであることを指摘しておく必要があります。
学校のプロジェクトのために、単純なエージェント ベースのモデリング フレームワークを作成しています。これらのフレームワークは通常、複雑なシステム (病気の蔓延など) をモデル化するために使用されます。私のフレームワークには、ワールドとバグという 2 つの主要なオブジェクトがあります。世界は「レイヤー」で構成され、各レイヤーはトロイダル グリッドに関連付けられています。世界には虫が住むことができ、それぞれの虫には x 座標と y 座標、および虫が属するレイヤーがあります。
私の一般的な考えは、世界にバグを追加し、バグごとにスレッドを起動して、バグがやりたいようにすることです。メイン クラスをサブクラス化し、プロトコルで定義されたメソッドBug
を実装することで、あらゆる種類のバグを作成できます。act
このようにして、さまざまな種類のカスタム バグとカスタム動作を作成できます。バグは、世界と相互にやり取りできる必要があります (世界からバグを削除したり、世界にバグを追加したり、自分自身を移動したりします)。ご覧のとおり、これはすぐにマルチスレッド地獄に向かっています。
現在、私はたくさんの@synchronized
ブロックを持っており、世界が常に一貫した状態に保たれるようにするのに苦労しています。バグは世界と通信して行動する必要があり、その逆も同様であるため、これは特に困難になります。RandomBug
世界中をランダムに移動するa という単純なバグを実装しようとしています。状態が破損したり無効になったりする可能性がある潜在的な問題が見られるため、これでさえ困難であることが証明されています。
と を調べ始めたのはNSOperation
、NSOperationQueue
これにより作業が簡単になる可能性があるためです。これに関して2つの質問があります。
NSOperation
s を繰り返し (つまり、特定の間隔で)実行する簡単な方法はありますか。- スレッドの最大同時操作数を 1 に設定した場合でも、
@synchronized
ブロックは必要ですか? ある時点で世界とやり取りするスレッドは 1 つだけではありませんか? - この種の問題 (複数のスレッドが 1 つの共有リソースと繰り返し対話する) に取り組むためのより良い方法はありますか?
- スレッド化を完全にやめて、単純に世界のバグを反復処理し、ランダムにアクティブ化する必要がありますか?
objective-c - スレッドから非同期に NSView を更新する
まず、私は Objective-C の初心者です。そのため、OS X や iOS の開発にはあまり詳しくありません。私の経験は主に Java です。
エージェントベースのモデリング フレームワークを作成しています。シミュレーションを表示したいのですが、そのために小さなアプリケーションを書いています。まず、フレームワークについて少し説明します。フレームワークには、すべてのエージェントを反復処理してタスクを実行させるメソッドWorld
があるクラスがあります。start
世界の 1 つの「ステップ」が終了すると (つまり、すべてのエージェントが処理を完了した後)、メソッドはを実装するオブジェクトstart
のメソッドを呼び出します。このオブジェクトは、コンストラクターを介して以前に渡されました。インターセプターを使用すると、誰でも世界の状態にフックできます。これは、ログを記録したり、達成しようとしているシナリオ (情報をグラフィカルに表示する) で役立ちます。への呼び出しは同期的です。intercept
InterceptorProtocol
intercept
GUI アプリに関する限り、これは非常に単純です。カスタム ビューを初期化するコントローラーがあります。このカスタム ビューInterceptorProtocol
は、世界で起こっていることをリッスンできるように実装します。World
オブジェクトを作成し、ビューをインターセプターとして渡します。ビューはプライベート プロパティを介して世界への参照を保持しているため、世界を初期化したら、作成したばかりの世界にビューの世界プロパティを設定します (これによりサイクルが作成されることは認識していますが、ビューのメソッド内の世界であり、drawRect
それを持つことができる唯一の方法は、クラスからの参照を維持することです)。
ワールドのstart
メソッドは同期なので、すぐにワールドを起動しません。このdrawRect
メソッドでは、世界が動いているかどうかを確認します。そうでない場合は、バックグラウンド スレッドで起動します。そうであれば、私は世界を調べて、必要なすべてのグラフィックを表示します。
intercept
メソッド (start
バックグラウンド スレッドでの実行から呼び出される) では、 に設定しsetNeedsToDisplay
ますYES
。世界のstart
メソッドは別のスレッドで実行されているため、オブジェクトが変更されている間はオブジェクトで作業しないように、同期に使用するロック オブジェクトもありますWorld
(この部分は一種のジャンキーで、おそらく機能していません)。私が期待する方法 - いくつかの荒い点があり、私は単に少し作業をしようとしています; 後でクリーンアップする予定です)。
私の問題は、ビューがいくつかのものをレンダリングし、その後ほとんどロックアップすることです。NSLog
ステートメントが呼び出され、コードが実行されていることがわかりますが、ビューでは何も更新されていません。
関連するコードの一部を次に示します。
MasterViewController
ワールドビュー
World.mのstartメソッド:
他のコードを表示したい場合はお知らせください。コードがきれいではないことに気付きました。私は物事を機能させようとしていただけで、後でクリーンアップする予定です。また、Objective-C のベスト プラクティスに違反している場合は、お知らせください。
少し外に出ます。すぐに返信しなかったらごめんなさい!
python-2.7 - オブジェクトが Python パッケージ ComplexNetworkSim の属性としてメソッドを使用できないのはなぜですか?
networkxおよびSimPyから継承するPython パッケージComplexNetworkSimを使用して、メッセージがネットワーク内で伝播する方法のエージェントベースのモデルをシミュレートしようとしています。
これが私のコードです:
(このコードの下流には他の問題がある可能性があり、完全にはテストされていません。)
私の問題は、 myAgent オブジェクトがメソッド Run as an attribute を適切に呼び出していないことです。具体的には、上記のコードを実行しようとしたときに表示されるエラー メッセージは次のとおりです。
これがなぜなのか誰か知っていますか?私のコードがComplexNetworkSimの例とどのように大きく異なるのかわかりません。
frameworks - 時間的相互作用を伴うエージェントベースのモデリング?
ユーザーがモデルを「巻き戻し」、いくつかのパラメーターを変更し、新しいパラメーターでどのように発展するかを確認できるエージェントベースの言語またはフレームワークを見つける必要があります。基本的には、ユーザーがシミュレーション内でタイムトラベルし、異なるタイムラインを分岐できるようにする ABM です。
そのようなものは存在しますか?
multithreading - ネイティブプログラミング言語を使用したエージェントベースのプログラミング
基本的に私は戦場のエージェントベースのシミュレーションを構築することに興味があります.
JADE などのエージェント ベースのモデルのフレームワークはたくさんありますが、特定の制約により、フレームワークやライブラリを使用せずに C++ や Java などのネイティブ プログラミング言語のみを使用して実装することしかできません。
Google で検索しましたが、エージェント指向プログラミングに関する適切なチュートリアルが見つからないようです。
どこから始めればよいですか?または、エージェントベースのプログラミングの完全な初心者向けのチュートリアルはありますか?
THX b4