samedi 26 octobre 2019

Discrete Event Modelling - Simpy - how to model complex dependencies?

I am new to Simpy and I am having troubles figuring out how to model a process scheduler that has complex dependencies.

High-level summary of my problem:

  • I have a warehouse that receives boxes containing items through an entrance. The boxes are put in a queue where they wait to be processed.
  • Each box has a destination room and must be shipped there using a conveyor belt. A conveyor belt services multiple rooms.
  • An operator looks at the boxes in the queue and puts a box on the appropriate conveyor belt only if both the belt and the destination room are available. The operator sends the boxes in order but skips the boxes that cannot be processed.
  • Once the box is opened inside a room, it takes a certain amount of time to store the object. During this time, the room cannot receive other boxes.
  • After the object is stored, the empty box is sent to the exit of the warehouse using the same conveyor belt it came in.
  • The operator has knowledge at all times of which conveyor belts and rooms are free.

My question is how to model this operator. I did not find so far an elegant way to do this in Simpy. I essentially want to have a process that wakes up only when the following three conditions hold: a) a room is free; b) there is a box in the queue addressed for this room, and c) the belt for getting to the room is free.

Any idea, advice or pointer to an existing example are greatly appreciated. Thank you!

Aucun commentaire:

Enregistrer un commentaire