問題タブ [simulation]

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.

0 投票する
1 に答える
365 参照

deployment - Microsoft Robotics Development Studio シミュレーション プロジェクトの展開

私は現在、Microsoft Robotics Development Studio でプロジェクトに取り組んでおり、一般的な使用のためにソリューションを展開するのに少し問題があります。

私の問題はこれです。シミュレーションを作成しているので、プロジェクトと共にシミュレーション エンジンをデプロイする必要があります。これは、Ageia PhysX エンジン、DirectX、および Microsoft XNA フレームワークに依存しています。私はこれを理解し、MRDS の展開ツール (dssdeploy) がデフォルトでシミュレーションを展開するように設定されていないことを理解しています。したがって、以前に MRDS を使用したことがあり、シミュレーションを展開したことがある場合は、これについていくつかの助けを借りることができます。

0 投票する
1 に答える
405 参照

simulation - RoboCup Soccer Simulator2dv14のコーチ可能なプレーヤー

私はこれと同様の作業を行っていますが、オンラインで見つけた指導可能なプレーヤーは3歳であり、最新バージョンのサッカーサーバーでは動作しません。

誰かが代替案を知っていますか?または何か推測がありますか?
ありがとう

0 投票する
1 に答える
238 参照

frameworks - テラリウムのようなエージェント インタラクション フレームワーク

エージェントの相互作用シミュレーションのフレームワークを探しています。このフレームワークでは、いくつかのエージェントをデプロイして、相互作用させて進化を観察させることができます。

今まで Terrarium 2.0 ( http://terrarium2.codeplex.com/ ) を見つけました。原則として、これは私が必要としているものです: クリーチャー/エージェントを作成し、それを他のエージェントと相互作用するシミュレーション フレームワークに展開する機能です。しかし、Terrarium はもはや開発中でないようです。

検討する価値のある同様のフレームワークを知っていますか?

ありがとう。

0 投票する
5 に答える
2102 参照

python - キュー シミュレーションの視覚化に適した Python パッケージが必要

wxPython GUI 内で、待ち行列理論のシミュレーションに取り組んでいます。( Project link .) シミュレーションを視覚化するための優れたツールは何ですか? 視覚化は、クライアント、サーバー、施設、人口などの単純なオブジェクトで構成する必要があります。それらはすべて、単純なボックスなどで表す必要があります。クライアントが待機するキューがいくつかあります。

これは進行中のシミュレーションの視覚化であるため、オブジェクトは画面上を移動します。オブジェクトがある場所から別の場所にスムーズに移動でき、突然ジャンプしないと便利です。

そのビジュアライゼーションを作成するための優れたツールは何でしょうか? ネイティブの wxPython グラフィックスでそれを行うことができました。PyGame も使用できます。しかし、ここの誰かがもっとお勧めできるものを持っているのではないでしょうか?

0 投票する
16 に答える
2428 参照

multithreading - 大規模なマルチスレッドプログラミングプロジェクトの開始に関するアドバイス

私の会社は現在、サードパーティのシミュレーションプログラム(自然災害リスクモデリング)を実行しています。このプログラムは、ディスクからギガバイトのデータを吸い上げ、数日間クランチして結果を生成します。間もなく、これをマルチスレッドアプリとして書き直して、数日ではなく数時間で実行するように求められます。変換が完了するまでに約6か月かかると予想しており、単独で作業します。

これを実行するための24プロシージャボックスがあります。元のプログラム(C ++で書かれていると思います)のソースにアクセスできますが、現時点では、プログラムがどのように設計されているかについてはほとんどわかりません。

これに取り組む方法についてアドバイスが必要です。私は経験豊富なプログラマーですが(約30年、現在C#3.5で作業しています)、マルチプロセッサ/マルチスレッドの経験はありません。必要に応じて、新しい言語を学びたいと思っています。言語、学習リソース、本、建築ガイドラインに関する推奨事項を探しています。等

要件:WindowsOS。多くのサポートと優れた学習リソースを利用できる商用グレードのコンパイラ。派手なGUIは必要ありません。おそらく、構成ファイルから実行され、結果がSQLServerデータベースに格納されます。

編集:現在のアプリはC ++ですが、私はほぼ確実にその言語を書き直しに使用しません。誰かが追加したC++タグを削除しました。

0 投票する
4 に答える
4480 参照

math - 加速球間の衝突検出

私は、3D宇宙飛行、惑星/恒星重力、船の推力、相対論的効果を組み込んだ物理エンジン/シミュレーターを書いています。これまでのところ、非常にうまくいっていますが、私が助けを必要としていることの1つは、衝突検出アルゴリズムの計算です。

私が使用している動きの反復シミュレーションは、基本的に次のとおりです。

(注:3Dベクトルはすべて大文字です。)

どこ:

基本的に私がする必要があるのは、上記の(EQ.2)から派生した2つのオブジェクト(obj1、obj2)の効率的な式を見つけて、それらが衝突するかどうか、衝突する場合はいつかを判断することです。正確な時刻が必要なのは、それがこの特定の時間増分にあるかどうかを判断できるようにするため(加速度は時間増分ごとに異なるため)と、正確な位置を特定できるようにするためです(これは、時間)

このエンジンでは、すべてのオブジェクトを球としてモデリングしています。この式/アルゴリズムで行う必要があるのは、どのポイントであるかを把握することだけです。

ここで、.Distanceは正のスカラー値です。(これが簡単な場合は、.Distance計算に暗黙的に含まれる平方根関数を回避するために、両側を2乗することもできます)。

(はい、私は他の多くの衝突検出の質問を知っていますが、それらの解決策はすべてそれらのエンジンと仮定に非常に特有であるようであり、シミュレーションの増分内で適用される3D、球、および加速度の条件に一致するものはないようです。私が間違っているかどうか教えてください。)


いくつかの説明:

1)時間増分の前後で2つの球の交差をチェックするだけでは不十分です。多くの場合、それらの速度と位置の変化はそれらの半径をはるかに超えます。

2)RE:効率性、衝突の可能性のある候補を決定することに関して(とにかくこの時点で)助けは必要ありません、私はそれをカバーしていると思います。


たくさん出てくるように思われる別の説明:

3)増分移動の私の方程式(EQ.2 )は、速度加速度の両方を適用する2次方程式です。

私が見た物理エンジン(そして確かに私が今まで聞いたすべてのゲームエンジン)では、速度のみを適用する増分運動の線形方程式のみ:

これが、StackOverflow、Wikipedia、およびWeb全体で見られる、2つの線分の交差/最も近いアプローチの検出など、一般的に公開されている衝突検出ソリューションを使用できない理由です。私のシミュレーションでは、結果の基本となる可変加速度を扱っているため、必要なのは2つの放物線セグメントの交差/最も近いアプローチです。

0 投票する
3 に答える
930 参照

testing - コンピュータビジョンアルゴリズムの評価のためのシミュレーションと合成ビデオ生成

コンピュータービジョンソフトウェアをテストするための合成ビデオを生成する簡単な方法を探しています。

現在、私はこのニーズを対象とする1つのツール、 ObjectVideo Virtual Video(OVVV)のみを認識しています。これは、仮想世界でカメラをシミュレートできるHalfLife2modです。

しかし、私はもっとオープンで(オープンソースのように)そして多分ポータブルなソリューションを探しています。1つの方法は、必要な機能を1ダースのオープンソース3Dエンジンの1つに実装することです。ただし、OVVVのようなものをすでに実装しているライブラリまたはツールを誰かが知っていれば素晴らしいと思います。

また、すぐに使用できる解決策がない場合:どのように問題に取り組みますか?

PS:ここで私が尋ねる理由は、この問題に費やす努力を最小限に抑えたいからです。どうしたらいいかわからなかったわけではありません。しかし、私のソリューションでは、これに多くの時間を投資する必要があります。だから私はここで具体的なヒントを探しています...:-)

0 投票する
2 に答える
2098 参照

wpf - WPF - オフスクリーン レンダリングされたグリッドでマウス イベントをシミュレートする

複数の要素 (ボタン、テキスト ボックスなど) を含む WPF グリッドをビットマップにレンダリングしています。ビットマップは、Direct3D シーンの 3D サーフェスのテクスチャとして使用されます。ユーザー インタラクションのために、2D マウス カーソルの位置から 3D シーンに 3D レイを作成し、GUI サーフェスとの交点を見つけます。したがって、ユーザーが WPF グリッドのどこをクリックしたかはわかっていますが、そこから行き詰まりました。

開いているウィンドウに実際には表示されず、画面外にレンダリングされているときに、WPF 要素でマウス イベントをシミュレートするにはどうすればよいですか?

最近、UIAutomation と RaiseEvent を調べていましたが、これらはビジュアル ツリー全体ではなく、個々の要素にイベントを送信するために使用されます。ツリーを手動でトラバースし、カーソル位置で要素を探すことはオプションですが、これを正確に行う方法が見つかりませんでした。VisualTreeHelper.HitTest は良いスタートですが、TextBox を見つける代わりに TextBoxView を見つけ、ListBox の代わりに Border を見つけます。

編集: HitTest の結果コールバックで HitTestResultBehavior.Continue を返すと、特定の時点ですべての要素をウォークスルーできます。これらすべての要素にマウス イベントを送信できるようになりましたが、MouseEventArgs オブジェクトの値は実際のマウスの値です。したがって、明らかに不可能なカスタム MouseDevice を作成する必要があります。

0 投票する
8 に答える
1926 参照

c++ - このシャッフルアルゴリズムに何か問題がありますか?

私はちょっとしたレクリエーションホリデーコンピューティングをやっています。私のミニプロジェクトは、イタリアの「トンボリ」ゲームのシミュレーションでした。重要な構成要素は、次のプロセスのシミュレーションでした。

ゲームは、1から90までの番号が付けられた90個のビー玉のバッグを持った男性によって制御されます。彼は、プレーヤーにビー玉の番号を呼び出すたびに、バッグからランダムにビー玉を1つずつ引き出します。

少し考えた後、このビルディングブロック用に次のコードを作成しました。

乱数を使用したゲームシミュレーションには、いたるところに微妙な点や罠があることを知っています。そのため、コードにはかなり満足していますが、自信は100%弱です。だから私の質問は;

1)私のコードに何か問題がありますか?

2)[1)の答えが「いいえ」の場合]私は無意識のうちに標準のシャッフルアルゴリズムを使用していますか?

3)[2)の答えが「いいえ」の場合]私のアルゴリズムは標準的な代替アルゴリズムとどのように比較されますか?

編集 答えてくれたすべての人に感謝します。フィッシャー-イェーツアルゴリズムを再発見し、それが問題の核心になっていることを明らかにしたので、エイダンカリーの答えを受け入れるつもりです。もちろん、事前に調査を行うことで時間と労力を節約できたのも当然です。しかし一方で、それは楽しい趣味のプロジェクトでした。シミュレーションの残りの部分は日常的なものでした。これは最も興味深い部分でした。私は自分で行かなくても、楽しみを奪っていただろう。さらに、私はバッグからビー玉を取り出す男性をシミュレートしようとしていましたが、状況がカードのシャッフルとまったく同じであることに気付いたのは、作品のかなり遅い段階でした。

もう1つの興味深い点は、Kenによって特定された小さな欠陥があることです。この欠陥は、頻繁に繰り返されるパターンrand()%Nは、0..N-1の範囲から乱数を選択するための実際には良い方法ではないことを指摘しています。

最後に、私のバージョンのフィッシャー-イェーツには、シャッフルという優れた特性を備えたエレガントなトリックが欠けています。その結果、私のアルゴリズムは、同じようにランダムですが逆のシャッフルになります。