2

私は Simpy を初めて使用し、複雑な依存関係を持つプロセス スケジューラをモデル化する方法を理解するのに苦労しています。

私の問題の概要:

  • 入り口からアイテムが入った箱を受け取る倉庫があります。ボックスはキューに入れられ、処理されるのを待ちます。
  • 各ボックスには目的の部屋があり、ベルトコンベアを使用してそこに出荷する必要があります。ベルトコンベアが複数の部屋にサービスを提供します。
  • オペレーターは列に並んだ箱を見て、ベルトと目的の部屋の両方が利用可能な場合にのみ、適切なベルトコンベアに箱を置きます。オペレーターはボックスを順番に送信しますが、処理できないボックスはスキップします。
  • 部屋の中で箱を開けると、オブジェクトを保管するのに一定の時間がかかります。この間、部屋は他のボックスを受け取ることができません。
  • オブジェクトが保管された後、空のボックスは、入ってきたのと同じベルトコンベアを使用して倉庫の出口に送られます。
  • オペレーターは、どのコンベア ベルトと部屋が空いているかを常に把握しています。

私の質問は、この演算子をモデル化する方法です。これまでのところ、Simpy でこれを行うエレガントな方法は見つかりませんでした。基本的に、次の 3 つの条件が満たされた場合にのみ起動するプロセスが必要です。a) 部屋が空いている。b) この部屋宛ての列にボックスがあり、c) 部屋に行くためのベルトは無料です。

既存の例へのアイデア、アドバイス、またはポインタは大歓迎です。ありがとうございました!

4

2 に答える 2

0

解決策に近づく可能性がある simpy に関する別の StackOverflow の質問を次に示します。プロセスに複数のリソースを待機させるにはどうすればよいですか?

その答えが正しく理解できれば、イベントをキュー内のメッセージのように扱うことができます。これは、.get() とタイムアウトを含むイベントのリスト全体を待機し、それらのいずれかがトリガーされたときにそれらを調べることができることを意味します。それらのいくつかを処理し、残りを破棄できます (別のプロセスまたは反復のために「未処理」のままにします)。このようにして、タイムアウトがリストにある場合でも、他の 3 つのイベントのステータスを確認し、それに応じて行動することができます。

于 2020-12-22T00:59:47.330 に答える