問題タブ [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 - SimPy Bank のチュートリアルでは、ユーザーが特定のカウンターに列を作り、列を早めに離れることができます
私はこの SimPy チュートリアルhttps://pythonhosted.org/SimPy/Tutorials/TheBank.html#several-service-countersを見ています。顧客が同じ回線を使用するが特定のカウンターを使用するようにこれをどのように変更できるか疑問に思っています。 ? そして、さらなる変更として、特定のカウンターに行くために最前列で待つ必要がなかったらどうでしょうか?
背景: 座席が設定された劇場に行くために並んでいる人々の列をシミュレートしようとしています。劇場自体に入るには全員が列に並ぶ必要がありますが、6 列目以上であれば、5 列目の人が着席するのを誰もが待つ必要はありません。そして、誰もがセットシートを持っています(例の「カウンター」によく似ています)。私は地元の劇場をとても楽しんでいますが、人々がより簡単に列に並んで座席を見つける方法をシミュレートできることを望んでいます.
python - Python シミュレーション 患者と医師のリンク (Simpy、救急部門)
Simpy 2.6 を使用して、救急部門の患者の流れを記述するプロジェクトに取り組んでいます。
吸気エリアに 3 人の医師がいるとします。私のプロセスは、ある特定の医師 (たとえば、X 医師) を診察した後、患者は (80% の確率で) 検査室に行くというものです。臨床検査の後、患者はキューに再び参加することで元の医師 X に戻ります。
しかし、どうすれば患者と医師の間のリンクを作成できますか? 現在、私のコードの患者は「無記憶」です - 彼らは実験室のテストの後にランダムな医者に会います. インテークエリアには全部で20床あります。
私を助けてください!前もって感謝します!!
simulation - Simpy: 電車の地下鉄シミュレーションで失敗を表現するにはどうすればよいですか?
ここに新しい python ユーザーがいて、この素晴らしいウェブサイトに最初に投稿します。私の質問に対する答えを見つけることができなかったので、それがユニークであることを願っています。
simpy を使用して、システムに定期的に組み込まれた障害と修理を備えた電車の地下鉄/地下鉄シミュレーションを作成しようとしています。これらの障害は、列車だけでなく、線路の一部やプラットホームの信号機にも発生します。私は公式の Machine Shop の例 (添付のコードに似ていることがわかります) を読んで適用し、その「移動時間」を中断することで、列車の偶発的な故障と修理をモデル化することができました。
しかし、列車が通るルートの信号機の故障をモデル化する方法がわかりませんでした。私は現在、A から B への旅行の時間を指定しているだけです。これは中断されますが、列車の故障によるものです。
各トリップを独自のプロセスとして定義することは可能ですか。つまり、セクション A_to_B および B_to_C に対して個別のプロセスを定義し、プラットフォームを pA、pB、および pC として個別に定義することは可能ですか。それぞれに単一のリソースがあり (一度に 1 つの列車のみを許可する)、これらのセクションおよびプラットフォーム プロセスのランダムな障害と修理を組み込むには? また、2 つのプラットフォーム間にいくつかのセクションを設ける必要があり、そのいずれかで障害が発生する可能性があります。
どんな助けでも大歓迎です。
これまでの私のコードは次のとおりです。
simulation - Simpy 地下鉄シミュレーション: リソースのキューイング中にクラス列車の割り込みエラーを修正する方法は?
私は simpy で列車シミュレーションに取り組んでおり、これまでのところ、以下のコードに従って単一の列車エンティティで成功しています。
列車のプロセスはセクションであり、その後にプラットフォームが続きます。一度に 1 つの列車のみが使用されるように、各セクションとプラットフォームには 1 のリソースがあります。
ただし、以下のエラーを回避する方法が見つかりません。
シミュレーションに 2 番目のトレインを追加すると、1 つのトレインが使用できないリソースを待機し、待機中にそのトレインで障害が発生する場合があります。
Interrupt: Interrupt()エラーが発生します。
これらの失敗したリソースのキューを回避する方法はありますか?
どんな助けでも大歓迎です。
python - コールバックを使用して単純なシミュレーションの実行を開始する
コールバックからシミュレーション コード (イベントの待機を含む) を作成するにはどうすればよいですか?
プロセスを可能な限り単純な例に縮小すると、simpy シミュレーションでイベントが発生したときに実行可能コードを開始したいと考えています。私がしたことは、その実行可能コードをイベントのコールバックとして設定することでした。その実行可能コード自体には、いくつかの単純なイベント処理、特にタイムアウトがあります。私の実際のコードでは、これはプロセス内で発生しますが、この単純化されたバージョンでevent
は、主に同じ問題の動作が表示されます。
私の予想される出力は次のとおりです。
ただし、私の実際の出力は次のとおりです。
yield コマンドを削除すると、次のようになります。
コールバックが正しく設定されていることは明らかですが、要点は でタイムアウトをシミュレートすることsimulationRun
です。コールバックからコードでシミュレーション コード (イベントの待機を含む) を実行するにはどうすればよいですか?
これは Python 3.4.2 と simpy を使用します。
python - SimPy yield hold の構文エラー
私はSimpyの初心者です。私はマニュアルの最初のステップ ( http://simpy.sourceforge.net/old/SimPy_Manual/Manuals/Manual.html ) に従って、自分のやりたいことに適応させていました。私のコード
次のエラーが発生します。
しかし、マニュアルの正確なコードを試すと、次のようになります。
それは正常に動作します。両者の違いがわかりません。何かアイデアがあれば...
python - クラス属性の追加の動作を変更する方法
私は、必要ないくつかのクラスを提供する python パッケージ (simpy) を使用しています。クラスの 1 つは Event と呼ばれ、次のコンストラクターがあります。
コード内のさまざまな場所で、Event.callbacks.append
メソッドを使用してオブジェクトがイベントのコールバックに追加されます。
私が必要としているのは、新しいクラス (私は Zombie と呼んでいます) です。これは、3 つの変更を除いて、実際には Event クラスです。まず、追加の属性と、以前の状態にリセットZombie.reset_callbacks
するメソッドを含める必要があります (これが、属性が必要な理由です。これはすべて、サブクラス化することで実行できます。Zombie.reset()
Zombie.callbacks
Zombie.reset_callbacks
Event
ただし、これが機能するためには、毎回Zombie.callbacks.append(x)
が呼び出され、 にx
追加されるだけZombie.callbacks
でなく、 も追加される必要がありZombie.reset_callbacks
ます。これができるかどうかデコレーターを調べていますが、トンネルの終わりに光が見えません。現在、これは不可能だと感じているか、間違った方向を見ている可能性があります。
Pythonでそのようなこと(クラス属性の追加動作を変更すること)は可能ですか? もしそうなら、どのように?
事前にご協力いただきありがとうございます。B.
python - Simpy: シミュレーションが終わらない理由がわかりません
Counter Strike のゲームをシミュレートしようとしています。基本的に、私は異なるプレイヤーを持つ 2 つのチームを持っており (今のところすべてのプレイヤーは同一です)、それらを「戦わせ」、1 つのチームのすべてのプレイヤーが死んだらシミュレーションを終了する必要があります。
実行中のシミュレーションが終わらない理由を理解しようとしています。simpy のコア要素を誤解しているように感じますが、実際には何がわかりません。
すべてのプロセスと simpy 関連のコードは、main.py と player.py にあります。すべてのプレイヤーが「死亡」したら、シミュレーションを終了させようとしています。
基本的に、私はすべてのプレイヤーが周囲の領域 (Hotspot クラスによって表されるノード) を常にチェックして、敵がいるかどうかを確認するプロセスであることを望んでいます。敵がいる場合、敵はランダムに 1 つを選択して「攻撃」します。いずれかのチームのすべてのプレイヤーのヘルスが 0 未満になると、シミュレーションが終了し、勝ったチームの勝数が 1 増えます。
編集: また、pdb で実行したところ、プレイヤーのヘルスが減少しているようには見えず、play メソッドが実行されていないようでした。
編集 2: 問題を見つけるためにすべてのコードを読む必要はないと思います。主にメイン ファイルとプレーヤー ファイルにあると思いますが、コードがエラーなしで無限にループするため、100% 確信が持てません。
これが私のコードです