問題タブ [montecarlo]
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 - ループ モンテカルロ sim の実行時に zip に問題が発生しました。パイソン
Python 2.7で作業しています。
コードは少し扱いにくいと思いますが、できるだけ簡単に説明しようと思います。
私は2つのリストを持っています:
B の対応する値を T の対応するリストの末尾に追加する必要があるため、zip を使用してそれらをまとめます。
次に、各リストの最初の値を 3 番目の値から差し引いた結果を計算し、別の zip 関数を使用してその値を追加します。
したがって、関数を実行すると、T 変数は [[1,0,1,0], [1,0,3,-2], [0,5,2,-2]] のようになります。
次に、特定の値が他の値よりも高いか低い場合に、リストが勝ち、負け、または引き分けを返す一連の if ステートメントがあります。
関数 (starterTrans) の結果を複数回シミュレートしたいと思います。問題は、私が使用するときです:
シミュレーションごとに異なるバージョンの T を取得しています。そのため、最初のシミュレーションでは、T は各リストに適切な数の要素 (4 つ) を持っていますが、実行するたびに、ますます多くの変数が追加されます。
何度使用しても、T を元の 4 つの変数にロックする方法が必要です。そして、私はそうする方法を見つけるのに苦労しています。何か案は?
私は自分のコードが複雑であることを知っていますが、誰かが私の問題を説明する私の試みに従うのに役立つかどうかは次のとおりです。
助けてくれてありがとう。
python - モンテカルロ シミュレーションの合計結果。パイソン
Python 2.7で作業しています。
リストを取り、引数リストの値をリスト「チーム」に追加し、特定の位置値を比較して、値に応じて勝ち、負け、または引き分けを返す引数があります。
random.shuffle(team) を使用してチーム リストをランダムに並べ替え、結果を何度もシミュレートできるようにしたいと考えています。
私はそれを使用してそれを行うことができます:
しかし、すべてのシミュレーションの勝ち、負け、および引き分けをすべて合計し、シミュレーションの数 (この場合は x) で割り、すべての勝ち、負け、および引き分けの平均を取得できるようにしたいと考えています。シミュレーションの。
starterTrans 関数を変更して、total_wins 変数が += wins に等しいようにしようとしましたが、それを理解できませんでした。何か案は?
localization - モンテカルロローカリゼーションの例
自分が行っているプロジェクトにモンテカルロローカリゼーションを実装したいと思います。私が最初にしたことは、2Dの世界をナビゲートする仮想ロボットにそれを実装しようとしたことです。現在、プログラムは非常に遅く、機能せず、ほとんど進歩していません。ですから、私が見ることができるモンテカルロローカリゼーションの例を誰かが指摘できるかどうか疑問に思います。
algorithm - AI 設計におけるモンテカルロ法の例
私がさまざまな情報源で読んだことによると、モンテカルロ法はランダムなサンプルを取得し、さまざまなソリューションをテストして最適なソリューションを選択するようなものだと言われています。これが実際の AI で実際にどのように機能するかは正確にはわかりません。簡単な例を教えていただけますか?どのように効果的ですか?これを、非決定論的なゲーム AI に特化した他の既存のアルゴリズムと並行して使用することは可能ですか?
r - R でモンテカルロのより効率的なシミュレーション ループを作成する方法
この演習の目的は、栄養摂取値の人口分布を作成することです。以前のデータには繰り返し測定がありましたが、これらは削除されているため、各行はデータ フレーム内の一意の人物です。
このコードは、少数のデータ フレーム行でテストすると非常にうまく機能します。7135 行すべてで、非常に低速です。時間を計ろうとしましたが、マシンの実行経過時間が 15 時間になったときにクラッシュしました。system.time
結果はTiming stopped at: 55625.08 2985.39 58673.87
.
シミュレーションの高速化に関するコメントをいただければ幸いです。
データセット内の 7135 個の観測値のそれぞれについて、100 個のシミュレートされた栄養値が作成され、元の測定レベルに逆変換されます (シミュレーションは、BoxCox 変換された栄養値に対する非線形混合効果モデルの結果を使用しています)。
for
ループは非効率的であると読んだので、ループを使用しないことをお勧めしますが、それらを代替として使用するためR
のオプションについて十分に理解していません。スタンドアロン マシンで実行されている場合、コードの変更方法に関する推奨事項に影響する場合、通常、これは Windows 7 バリアントを実行する標準の Dell タイプのデスクトップになります。apply
R
更新: テストのためにこれを再現するには、
Lambda.Value
=0.4 およびMale.Resid.Var
=12.1029420429778 でMale.Distrib$stddev_u2
あり、すべての観測値で一定の値です。
str(Male.Distrib)
は
head(Male.Distrib)
は
NaN
更新 2:結果を引き起こしている関数の行は
支援とコメント、そして応答の速さに感謝します。
更新: @Ben Bolker はtemp
、NaN の問題を引き起こしているのは負の値であることは正しいです。いくつかのテストでこれを見逃しました(値のみが返されるように関数をコメントアウトしtemp
、結果の data frame を呼び出した後Test
)。このコードはNaN
問題を再現します:
しかし、値を値として入れてから同じ(?)計算を実行すると結果が得られるため、手動計算を行うときにこれを見逃しました:
私は今、ベクトル化を使用する (と思う) 作業コードを持っており、非常に高速です。他の誰かがこの問題を抱えている場合に備えて、以下の作業コードを投稿しています。計算で <0 の問題を防ぐために、最小値を追加する必要がありました。協力してくれたみんな、そしてコーヒーに感謝します。私はrnorm
結果をデータフレームに入れようとしましたが、それは本当に遅くなり、この方法で作成してから使用するのcbind
は本当に速いです。Male.Distrib
は、7135 観測の完全なデータ フレームですが、このコードは、以前に投稿したカットダウン バージョン (テストされていません) で動作するはずです。
その日のレッスン:
- 前に試したことを実行しようとすると、分布関数がループでリサンプリングされないように見えます
max()
列から最大値を返すため、私が試した方法を使用することはできませんが、2 つの値から最大値が必要でした。ifelse
ステートメントは、実行する代わりのものです。
java - モンテカルロ木探索 UCT の実装
ツリーの作り方を教えてください。
ノードがどのように選択されるかはよく理解できましたが、より適切な説明があれば、このアルゴリズムを実装するのに本当に役立ちます。ゲームの状態を表すボードは既に持っていますが、ツリーの生成方法がわかりません。
アルゴリズムのよくコメントされた実装を教えてもらえますか (AI に使用する必要があります)。または、より良い説明/例はありますか?
ネット上で多くのリソースが見つかりませんでした。このアルゴリズムはかなり新しいものです...
python - モンテカルロアルゴリズムでのPython辞書の更新
辞書の要素を最適化するモンテカルロコードを書き込もうとしています。たとえば、元の辞書を次のように定義します
これにより、
ここで、私のモンテカルロでの試行的な動きは、A[1]からランダムな要素'a'を取得し、それをA[2]に配置することであると言います。ただし、元の辞書は残しておきたい。そこで、最初に新しい辞書を作成します。
そして、BIで必要な変更を加えます
その結果、取得したい辞書が変更されました。
ただし、これにより、バックアップしたかった元の辞書Aも変更されました。
これを行う方法はありますか?ご協力いただきありがとうございます!
mpi - モンテカルロとMPI_Reduceを使用して円周率を計算する
私は、MPIを使用してこの問題を並列化する必要があるプロジェクトに取り組んでいます。したがって、基本的な考え方は、各プロセスがポイントのシェアを取得し、テストを実行して(ポイントが円内にあるかどうかに関係なく)、MPI_Reduceを呼び出すことです。その後、ルートは縮小された結果を取得し、最終的な答えを提示します。
私が混乱しているのは、何を減らすかです。各プロセスで円周率を計算する必要があります。円周率を使用してreduceを呼び出し、ルートは円周率の値の平均を取りますか?または、各プロセス呼び出しはヒット数(円内の成功したポイント)で減少し、ルートはこの結果を使用して円周率を計算する必要がありますか?これが明確であることを願っています。ありがとう。