問題タブ [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.
java - Java でのエージェントベースのモデリング - アニメーションの質問
Java でエージェントベースのモデリング プログラムを作成しています。
エージェントをアニメーション化する最良の方法を決定しようとしています。グリッドを使用して、各エージェントが一度に 1 つのセルのみを占有できるようにする例をいくつか見てきました。
エージェントがウィンドウを横切ってあらゆる方向に「流れる」ことができる、よりスムーズなものを探しています。
助言がありますか?
ありがとう!
編集:
環境はシンプルで二次元になります。エージェントは 1 人から数百人まで存在します。
エージェントを、何らかの方向を示す小さな円として表現したいと思います (詳細は関係ありません。要点は、エージェントが回転する機能が必要であるということです)。
2番目の編集:
私は現在、このチュートリアルを読んでいます: http://www.giosoft.net/Development/Java-Asteroids-Tutorial.html
私が達成しようとしていることに役立つようです。
java - 空間エージェント ベースのモデリングのデータ構造
2 次元の空間シミュレーションでエージェントを追跡するための適切なデータ構造は何ですか?
quadtrees (私は理解しています) と kd-trees (私はよく理解していません) への言及を見てきました。
エージェントが効率的に「自分の場所を知っているので、自分の近く (自分の特定の半径内) にいるエージェントを知りたい」と言うことができるものを探しています。
例 (疑似コードでもかまいません) をいただければ幸いです。
私はJavaで働いています。
evolutionary-algorithm - エージェント技術による進化的コンピューティングの探索手法を見つけるには?
エージェント技術による進化的コンピューティングのための新しい探索手法を見つけようとしています。私はこれについて何の考えも持っておらず、実装したいと思っています。これに詳しい人はいますか?研究論文を提案してくれる人はいますか? Googleで検索しました。少し興味深い論文が見つかりませんでした。助けてください...
modeling - Netlogoなどのエージェントベースモデリングツールを使用してネットワークシミュレーション(TCPなど)を実行することは可能ですか?
Netlogoを使用してモデル化するつもりです。ただし、ネットワークシミュレーションにNetlogoを使用することについての確固たる言及は見たことがありません。スループットなどの単純なネットワークパラメータと、エージェントセット(この場合はネットワークノード)の変更によって一部のネットワークパラメータがどのように変更されるかを確認したいと思います。これはNetlogoだけで可能ですか?そうでない場合、回避策はありますか?
algorithm - 捕食者-被食者シミュレーション
私は捕食者-被食者のモデルを実装しようとしています。これはエージェントベースモデルです。数ミリ秒ごとに新しい動きがあります。フィールドには、捕食者と獲物の2種類の生き物がいます。それらのそれぞれの動作は、次のルールによって与えられます。
獲物:
- 空いているセルに移動しました
- いくつかのステップごとに、彼の古い細胞の子孫が生まれます
- 平均余命は移動回数によって制限されます
プレデター:
- 捕食者は獲物と一緒に細胞に移動します。そのようなセルがない場合は、任意の隣接セルで
- 同じ
- 同じ
獲物の移動の選択に問題があります。
たとえば、セル5と9に獲物がいます。それぞれがセル6に移動できます。この競合を解決するにはどうすればよいですか?ありがとう
python - Python でクラス ディクショナリを介してクラス インスタンスに直接アクセスする方法
ID 番号を介してクラスのインスタンスに直接アクセスする方法が必要です。
ここで説明しようとしたように、.csv ファイルをインポートしていて、.csv ファイルのすべての行に対してクラス Person() のインスタンスを作成したいのに加えて、これらのインスタンスに直接アクセスできるようにしたいkey .csv ファイルに既に存在する一意の識別子。
user433831 の助けを借りて、これまでに行ったことは次のとおりです。
ここで、 person は、クラス Person() を次のように定義するモジュールです。
これで、個人インスタンスのリスト、つまりpersons
ができました。これは、すでにきちんとしています。しかし今、networkx
モジュールを使用して、これらの人々の間でネットワークを作成する必要があり、すべての人に直接アクセスする方法が絶対に必要です (現在、私のインスタンスには名前がありません)。
たとえば、すべての人は、父親の一意の ID である「father_id」という属性を持っています。現在の集団で父親が生存していない人は、「-1」に等しい「father_id」を持っています。
さて、すべての人を父親に結び付けるには、次のようにします。
私の問題は、この「person_with_id_equal_to_father_id」に直接アクセスできないことです。この直接アクセスを何度も行う必要があることを覚えておいてください。そのため、リスト内で検索する形式ではなく、かなり効率的な方法が必要になります (人口に約 150,000 人いることも考慮してください)。 .
私のクラス Person() に辞書機能のようなものを実装し、すべてのインスタンスのキーを一意の識別子にするのは素晴らしいことです。この一意の識別子は既に私の csv ファイルに存在するため、すべての人の属性として既に持っています。
いつも大変感謝しております。また、私はまったくの python 初心者であることを覚えておいてください (おそらくおわかりのように... ;))
python - 属性値に対して何らかの条件を満たすクラス インスタンスのリストを作成します。
クラス インスタンスの完全なリストから始めて、属性値に関するいくつかの条件を満たすクラス インスタンスのサブリストを作成するにはどうすればよいですか?
たとえば、クラス Person() のインスタンスのリストがあります。これらの人は多くの属性を持っており、そのうちの一意の識別子である ID と、住んでいる世帯の識別子である HH_ID があります。同じ世帯に住んでいて、同じ HH_ID を持つすべての人を接続したいと考えています。「つながる」とは、 を使用して、すべての世帯メンバー間にエッジを作成することを意味しnetworkx
ます。これを行うには、これらの人を特定して「サブリスト」に入れ、何らかのアルゴリズムで処理してそれらをすべて結び付ける必要があります。どうすればこれを達成できますか?
他のより複雑な目的のためにこれを行うための一般的なツールも必要です (たとえば、15 歳から 20 歳までの N 人をランダムに接続するなど)。 HH_ID したがって、次のようなものがあります。
ここで、最初の世帯は [0,1,2] の人で構成され、2 番目の世帯は [3,4] の人で構成されます...
この家庭の問題については、pairwise
イテレータ レシピを使用してみました ( itertools のドキュメントは次のようになります。
しかし、明らかにこれは機能しません。私の反復子は、隣接する 2 人の人物が一致しなくi
なるまで停止し、そこから次の人のために再開するからです。hh_id
たとえば、上記の例の人物の場合、for
ループで人物 1 になると、イテレーターは人物 2 と 3 の比較を開始しますが、for ループで人物 3 に直接ジャンプしてイテレーターを開始させる何らかの方法が必要になります。人物 3 と 4 を比較します。あまり明確に見えなくても、この例が少し明確になることを願っています...
より一般的には、属性値に関するいくつかの条件を満たす人のサブリストを作成する方法、おそらく効率的な方法が必要です (私は約 150000 人を持っています)。
python - 特定の条件を満たす、動的に更新されるクラスインスタンスのリストを作成するにはどうすればよいですか?(Python)
インスタンス属性の特定の条件に従って自動的に更新されるクラスインスタンスのリストを作成したいと思います。
たとえば、カスタムクラスPerson()のオブジェクトのリストがあり、常にすべての既婚者、つまり「MARRIED」に等しい属性「MAR_STATUS」を持つすべての人を含むリストを生成できるようにしたいと考えています。
これはPythonでまったく可能ですか?私は、まさにこれを行う「actor_set」と呼ばれる非常に便利な組み込みを備えたマイクロシミュレーション用のC++プリコンパイラーを使用しました。しかし、C++でどのように実装されたかはわかりません。
ありがとうございました。
oop - エージェントベースのMatlabシミュレーションからのデータスナップショットを保存する
私はMATLABでエージェントベースのシミュレーションを書いています。このシミュレーションでは、エージェントがラウンドでゲームをプレイし、お互いに物を売っています。ほとんどすべて(エージェント、アイテム、場所、コントラクトなど)は、MATLABのOOP機能を使用してオブジェクトとして実装されます。
毎ラウンド、シミュレーションのスナップショットを取り、それをディスクに保存して、後でシミュレーションがどのように開発されたかを分析できるようにします。今私の質問はそうするための最良の方法は何でしょうか?
私の現在の考えは、メインループがすべてのエージェントを呼び出し、そのステータスを報告するように要求することです(たとえば、所有しているプロパティのアイテムの数、契約上の義務、アカウントの残高...必要に応じて、エージェントはオブジェクトを呼び出します彼らは自分のステータスを所有して要求し、その情報をレポートに含めます)。私のアイデアは、エージェントのレポートを文字列(おそらくXML形式)にすることでした。次に、すべてのレポートをタイムスタンプと一緒に追加し、テキストファイルの最後に追加します。
しかし、私はこのようなことをしたことがないので、これが良いアプローチであるかどうかはわかりません。後で簡単に分析できる形式のデータを用意すること以外の私の主な関心事は、スナップショットを作成してディスクに書き込む速度です。私のシミュレーションはかなり大きいので、ラウンドごとに大量のデータが保存されると思います。
代替案は次のとおりです。
- すべてをデータベースに保存します。しかし、データベースへのアクセスはテキストファイルに比べてかなり遅いと思います。また、各エージェントが所有するオブジェクトの数は変化する可能性があるため、データベースの構造についてもよくわかりません。
- .matファイルの使用。しかし、それらが簡単に拡張可能かどうか、そして変化する構造(つまり、ラウンドごとに異なるアイテムを所有するエージェント)にどのように対処するかはわかりません
コメントや提案をありがとう!