私は疫学に関する論文に取り組んでおり、一時的なネットワークで SI の流行をシミュレートする必要があります。各時間ステップで、感染したノードと影響を受けやすいノードの間で抽出を実行する確率 ~ ベルヌーイ (ベータ) があります。私は np.random.binomial(size=whatever, n=1, p=beta) を使用してコンピューターに決定させています。ここで、各ノードから開始することで、同じネットワークでの流行をシミュレートする必要があります。これを K 回繰り返して、各ノードの統計的に関連する結果を取得する必要があります。また、時間ネットワークも確率的であるため、すべてを NET_REALIZATION 回繰り返す必要があります。
したがって、N = 100 のネットワークで、K=500 および NET=REALIZATION=500 の場合、流行は 25,000,000 回繰り返されるはずです。T=100 の場合、SI カップルのセットごとに 2,500,000,000 回の抽出が行われることを意味します (もちろん時間によって異なります)。beta が小さい場合 (よくあることですが)、計算に非常に時間がかかります。私のコンピューターでは、ベルヌーイ抽出に 3.63 µs かかると思われる場合、これは結果が得られるまで何時間も待たなければならないことを意味し、これが私の論文の作成を実際に制限しています。問題は、時間の半分以上がランダムな抽出に費やされていることです。抽出の結果は他のデータ構造と相互作用するため、numpy を使用する必要があります。numba を使用してみましたが、抽出速度が向上するようには見えませんでした。同じ結果を得るより速い方法はありますか? 0 と 1 の 10^12 抽出のような非常に大きな抽出を永遠に 1 回行うことを考えていましたが、異なるシミュレーションごとにそれらの一部をインポートするだけです (これはベータ値のいくつかの値に対して繰り返す必要があります)。もっと賢い動きがあれば。
手伝ってくれてありがとう