問題タブ [simpy]
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 expovariate()
Python の random.expovariate() で問題に直面しています。
次のコードを実行すると: random.seed(44) for i in range(5): print random.expovariate(250.0/600.0)
次の出力が得られます。
ただし、実際のプログラムで同じコードを使用すると、次のようになります。
基本的に同じ行の出力である別の expo_c- を取得します。
私は同じシードを使用していますが、expovariate() によって生成されるシーケンスは異なります。実際のプログラムで同じシーケンスが生成されるようにするにはどうすればよいですか?
python - スケジュールに従ってクライアントの到着をシミュレートする方法
特定の時間帯での顧客の到着をシミュレートしたい (統計分布に従って生成されていない)。到着時間は、pandas データフレームに読み込んだ csv ファイルで定義されていますdf
。
df
これは私の現在のコードですが、エンティティ (クライアント) を で定義されたスケジュール(たとえば at 09:00:20
、次に at09:01:00
など) に従って強制的に到着させる方法がわかりません。 Environment
、しかし、どうすればいいですか?(リアルタイム シミュレーションは必要ありません):
python - SimPy 3 使用時にシミュレーション出力レポートを生成する方法
SimPy 3 でシミュレーション レポートを生成するには? 私はここで、バージョン2では次のようなことが可能であることを読んでいました:
ただし、SimPy 3 のレポート機能が見つかりません。レポートには、たとえば、サーバーの平均スループット、リソース使用率、およびその他の統計が含まれている必要があります。
python - simpy と互換性のあるオープンソースのアニメーション ライブラリ
simpy
離散イベント シミュレーション ライブラリをオープンソースのアニメーション ツールと組み合わせて、キュー システムを単純に視覚化することはできますか? を使用できることはわかっていmatplotlib
ますが、エンティティの到着と出発、およびそれらのサービス (リソースがビジーまたはアイドルであることを示す) などのアニメーションの構築ではなく、グラフの作成に役立ちます。
たとえば、panda3d
どれがゲームとシミュレーション エンジンであるかはわかりましたが、このツールを使用する場合、おそらくエンティティのすべての移動軌跡をプログラムする必要があり、本当に必要なものが複雑すぎるように見えます。
python - 離散イベント シミュレーションを学ぶために現在使用されている書籍はどれですか?
新しいネットワーク プロトコルの研究を開始するプログラムに登録したばかりで、最初の課題は離散イベント シミュレーションについて学ぶことです。
おすすめされたのは以下の2冊です。
コンピュータ システムのシミュレーション: テクニックとツールMyron H. MacDougall著
シミュレーション モデルの設計と実行:ポール フィッシュウィックによるデジタル世界の構築
どちらの本も、私が特に使用しないツールを使用していますが、離散イベントのシミュレーションの基礎を学ぶには良い本だと言われました。
しかし、たまたま、マクドゥーガルの本は amazon ドットコム以外のどの店でも実際に手に入れることができず、私の住所に届けるのに 2 か月かかるでしょう。そして、フィッシュウィックの本は、私が今は使いたくない大金がかかるでしょう.
さて、私はここにきて、それらに似た離散イベント シミュレーションを学ぶために今日どの本が使われているのかを尋ねに来ました。
PS: Python ベースの SimPy シミュレーション ツールを使用します。
simpy - Simpy で実装されたシミュレーション中に、コンピュータはどのようにイベントを保存、ソート、および処理しますか?
Simpy で同期の問題に直面しています。つまり、イベントがコンピューターによって処理された順序で処理されないということです。イベントがコンピューターによってキューに入れられ、並べ替えられ、処理される方法について、既に Simpy のドキュメントに記載されているよりも多くの情報を探しています。それらがトリガーされなければならない時間に関してソートされていることをどこでも見つけました。残りを読む前に、私にアドバイスできるリンクやドキュメントを誰か教えてください。
より具体的には、実世界のシステム (PoolSystem クラスのインスタンス) をモデル化してシミュレートしようとしています。これは、サブサブシステムにさらに分割するか、失敗する可能性のあるサブシステムのプールです (システムの最後のカテゴリ)。アトミックシステムと呼ばれます)。つまり、PoolSystem は、PoolSystem または AtomicSystem のいずれかであるサブシステムで構成されています。
たとえば、車はこの PoolSystem クラスのインスタンスで、エンジンをサブシステムとして持つことができます。しかし、エンジンはピストンやスパーク プラグなど、いくつかのサブシステムに分解される可能性があり、実際にはこれらのサブシステムが故障する可能性があります。この場合、エンジンは PoolSystem インスタンスとして定義され、ピストンとスパーク プラグは AtomicSystem インスタンスとして定義されます。
AtomicSystem クラスと PoolSystem クラスは、同じ標準モデルに基づいています。どちらも次のとおりです。
- 特定のサブシステムの障害がシステム全体の障害を引き起こす場合 (つまり、他のすべてのサブシステムを中断する必要があることを意味します)、「True」である「クリティカル」ブール属性
- システムがそのサブシステム (存在する場合) と通信するためのシグナルとして機能する「update_order」イベント
- サブシステムがシステムに失敗したことを知らせるシグナルである「dysfunction_signal」イベント
- 特定のシステムが正常に動作しない場合、または上位レベルのシステムによって中断された場合にトリガーされる「中断」イベント
- サブシステムが更新を終了したことを上位システムに通知するシグナルとして機能する「update_end」イベント
- 特定のシステムの運用サービスをシミュレートするプロセスである「ライフサイクル」属性
次のスキーマが、今読んだ内容を理解するのに役立つことを願っています: プール システムとして定義された車の内訳
このスキーマでは、自動車はエンジンとタイヤをサブシステムとする PoolSystem インスタンスとして定義されています。タイヤは自動車の故障の直接の原因となる可能性があるため、AtomicSystem インスタンスとして定義されています。エンジンは、サブシステムがピストンとスパーク プラグである別の PoolSystem として定義されます。これらは故障する可能性があるため、AtomicSystem インスタンスとして定義されます。
クラス AtomicSystem は以下にあります。
クラス PoolSystem は以下にあります。
Eu (AtomicSystem から継承) と ModSat (PoolSystem から継承) の 2 つのクラスを定義しました。基本的に、いくつかの Eu オブジェクト (2 つのシステム レベルのみ) から modsat オブジェクトを構築しています。以下のコードを投稿しました。
最後に、ModSat オブジェクトをテストし、modsat オブジェクトの正常な動作に影響を与えずに、故障した modsat オブジェクトのサブシステム (Eu タイプ) の 1 つを簡単に交換できるかどうかを確認したいと思いました。modsat オブジェクトとやり取りできるシミュレート関数を作成しました。以下で定義された 2 つの modsat オブジェクトを使用してテストを実行しました。
最初のテストは、次のシミュレート関数を使用した非常に単純なものでした。
すべてのイベントがコンピューターによって正しい順序でトリガーおよび処理されているように見えるため、出力は私が望んでいたものです。
ここで、次のシミュレート関数を使用してコードをテストしたいと思います。
上記のシミュレート関数は、最初に失敗した Eu を新しいものに置き換えることをモデル化しているだけです。出力は次のとおりです。
上記のように、「t = 5 : EU1:ModSat1 がサービスを中断する」という行の後に、「t = 5 : ModSat1 が部分的に失敗する」という行があるはずです。しかし代わりに、コンピューターはシミュレート関数の「yield env.timeout(5)」の後の最初の行に直接ジャンプします。
ここで何が起こっているのか理解できません。これは、Simpy によってイベントのキューがどのように定義およびソートされるかについての知識が不足しているためだと思います。ここで何が起こっているのかについてのヒントをオンラインで見つけることができませんでした。この種の質問は、stackoverflow や他のフォーラムで見たことがありません。喜んで助けていただければ幸いです。
私のコードは説明するにはかなり長いので、投稿したコードのコメントで十分であることを願っています :\
どうもありがとうございました!
python-3.x - 多数のオブジェクト/プロセスでのpython simpyメモリ使用量
simpy を使用して、非常に多数のオブジェクト (数百万) を持つ DES を作成しています。メモリの問題が発生しており、これに対処する方法を見つけようとしています。どのオブジェクトが他のプロセスとの相互作用をこれ以上受けないかを判断することができるので、理論的にはこれらのオブジェクトをシミュレーションから削除してメモリを解放することができます。以下のテストを作成しました。
多くのオブジェクトが削除され、プロセスが完了したため (約 70%)、時間 4 までにメモリ使用量が低下すると予想していました。ただし、メモリ使用量は同じままのようです (以下を参照)。これはなぜですか?このメモリは何に使われていますか?完了したプロセスはシミュレーションに残りますか?