問題タブ [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.
simulation - プロセスに複数のリソースを待機させるにはどうすればよいですか?
現在、SimPy を使用してサーバー プロセスのモデル化とシミュレーションを行っていますが、このメッセージの受信元に応じて、このプロセスに異なるアクションを実行させたいと考えています。
SimPy のドキュメントには、複数のイベントを待機する方法が示されています。イベント2
ただし、現在、リソースが複数のストアから利用可能になるのを待っています。
シナリオは次のとおりです。サーバー S は、さまざまなチャネルからのメッセージを待機しています。これらの各チャネルには、メッセージが到達するまでの時間に影響するさまざまな機能があります。
問題のコードは次のとおりです。
ここで、inchannel は、サーバーへの入力のさまざまなチャネルをモデル化するストアの配列です。
私が抱えている問題は、最初に受信したチャネルのいずれかからのメッセージのみを受け入れるように見えることです。最初のメッセージを受信した後、そのチャネルからのメッセージを受け入れ、他のメッセージを無視します。
私も次のことを試しました:
この場合、inchannel[0] からのみ受信します
python - タスクの優先順位をモデル化するにはどうすればよいですか?
同じ汎用プロジェクトに属する一連のタスクをシミュレートしようとしています。
タスクには期間と優先順位があります (現在のタスクの前に実行する必要があるタスクのリストによって表されます)。
例えば:
つまり、タスク A、C、D は同時に実行できますが、タスク B はタスク A の後に実行し、タスク E はタスク D の後に実行する必要があります。
私はこのコードを書きました:
Task オブジェクトの Completed 属性は、現在のタスクが完了したか終了したかを知るためのものです。(ブール値を使用してこれを実行しようとしましたが、異なる結果はありませんでした。)
taskB には先行タスクとして taskA があります。つまり、taskB は taskA が終了する前に開始する必要がありますが、これを実行したときの出力は次のとおりです。
taskB が実行できなかった理由がわかりません。
-------------------------------------------------- -------------------------
解決した
Simpy の simpy.util モジュールで利用可能な「start_delayed」メソッドを使用しました。現在のタスクに実行する前のタスクがあるかどうかに応じて、各タスクの「アクション」は単純なプロセスまたは遅延プロセスになります。
各タスクの遅延は、add_precedences および Estimate_delays で計算されますが、前のタスクの期間を現在の前のタスクに合計するために必要です。
最終的なコードは次のとおりです。
この場合、プロジェクトには 3 つのタスク (「A」、「B」、「C」) があり、ツリーは次のとおりです。
B は時間 4 で開始する必要があります (これが A の継続時間であるため)。そして、C は次の時間に開始する必要があります: 9 (これは B+A の持続時間であるため)。
どのタスクが既に終了しているかを知るために、各タスクが独自の ID を追加するリストを作成しました。独自の ID がそのリストにある場合、各タスクは環境から削除されます。
python - シンピー; 未知の量の割り込みを組み込む方法
シミュレーションに python と simpy を使用しています。シミュレーションでは、1 つのインスタンス (中断) が別のインスタンス (中断) によって中断される可能性があります。割り込みごとにネストされた try except ステートメントを使用します。ネストされた try except ステートメントは、中断の最大回数がわかっている場合に機能します。
問題は、中断が何回発生するかわからないことです (1、2、3、... の可能性があります)。何度も中断されたオブジェクトを処理する方法がわかりません。
以下のコードは 3 回の中断に対して機能しますが、4 回目の中断が含まれると機能しなくなります (3 つのネストされた try except ステートメントのため)。
不明な回数の割り込みを処理できるように、コードをより汎用的にすることは可能ですか?
どんな助けでも大歓迎です。
コード:
出力:
使用したバージョン:
- パイソン: 2.7.3
- シンピー: 3.0.7
python - 既存のpythonプログラムの評価・シミュレーション
分析する必要がある分散監視ソリューションを実装しました。したがって、監視エージェントの数を調整し、各ホスト (またはネットワーク) での結果のオーバーヘッド (CPU、メモリ、ディスク、ネットワーク) を評価することをお勧めします。残念ながら、十分な物理ノードがありません。したがって、私は主にmininetで試みましたが、タイミングとスケジューリングの負の影響に遭遇しました。さらに、1 つの物理ホストのみでのエミュレーション中に、ホストの CPU またはメモリの使用率を調査することは困難です。
したがって、私はsimpyを試しました。しかし、プロセスの CPU、メモリ、ディスク、およびネットワークの使用状況を監視できません。そうする可能性はありますか?シミュレーションのように、ホストのリソースや正確なタイミングに依存しない評価用のソリューションがあるとよいでしょう。しかし、simpyが適切な決定であるかどうか、またはこのツールがどのようにこれを提供できるかはわかりません。
python - SimPy でクラスをインポートできない理由
今SimPyを学んでいます。最初のサンプル コードを使用しています。リンクhttps://simpy.readthedocs.org/en/latest/topical_guides/process_interaction.html
コードのこの部分は、対話モードで記述されています。クラス EV を、Ev.py という名前の個別の python ファイルに入れたいと考えています (以下を参照)。
Ev.py
次に、ファイルをインポートします。私は次のように実行します:
ステップになると: ev=Ev.EV(env), エラーがあることを示しています:
トレースバック (最新の呼び出しが最後):
モジュール内のファイル「stdin」、1 行目
TypeError: このコンストラクターは引数を取りません
python - Simpy シミュレーション時間を Python Calendar にリンクして、平日の特定のアクションを実行する
時間に関して次の機能を備えた SimPy を使用して、実稼働ネットワークのシミュレーション モデルを構築したいと考えています。
- 工場は月曜から金曜まで稼働(8時間2交替制)
- 大型トラックは、日曜日を除くすべての曜日に運行しています
- 軽トラックは、日曜日を含むすべての曜日に運行しています
この目的のために、ドキュメントで指定されているように BroadcastPipeを構築し、タイムアウトと組み合わせて、オブジェクトが動作していない日にオブジェクトを待機させたいと考えています (工場では、シフトをモデル化するために追加のロジックが必要です)。この BroadcastPipe は、日数を数え (毎日 24*60 分と仮定)、「みんな、月曜日です」と言うだけです。オブジェクト (工場、小型トラック、大型トラック) は、この情報を個別に処理し、それに応じて動作します。
さて、曜日に簡単にアクセスするために、シミュレーション時間を通常の Python Calender オブジェクトにリンクする洗練された方法があるかどうか疑問に思います。これは、銀行休業日やさまざまな開始日などの明確さと強化に役立ちます。これを行う方法についてアドバイスはありますか?(または、より適切にモデル化する方法に関する一般的なアドバイスはありますか?)。前もって感謝します!
simpy - SimPy 3 - 終了したジョブの中断
コードに割り込みがあり、動作することがあり、次のエラー メッセージが表示されることがあります。
RuntimeError: <Process(executeJobs) object at 0x7f3542880890> has terminated and cannot be interrupted.
オブジェクトがまだ存在することを確認しましたが、なぜこのエラーが引き続き発生するのですか?
私はすでにドキュメントを何度も読んでいるので、 http://simpy.readthedocs.org/以外のリソースも喜んで受け取ります。
ありがとうございました!
python - 環境での単純なエラー
Simpy をインストールし、Python 3.5 を使用しています。私は同じエラーがあります:
simpy をインポートできますが、インポートするとenv = simpy.Environment()
このエラーが出力されます。
アンインストール、再インストール、ターミナル、PythonのIDLE、他のIDLEでの使用を試みました...
コード全体は次のとおりです(チュートリアルから):
そして、エラーがポップアップします。
編集(解決済み):
同じフォルダーに simpy.py という名前のファイルがありました。私はそれを削除しましたが、今では完全に機能しています。コードは次のとおりです。
そして出力: