我是 Simpy 的新手,我在弄清楚如何为具有复杂依赖关系的进程调度程序建模时遇到了麻烦。
我的问题的高级摘要:
- 我有一个仓库,通过入口接收装有元素的箱子。这些箱子被放入队列中等待处理。
- 每个箱子都有一个目的地房间,必须使用传送带运送到那里。传送带服务于多个房间。
- 只有当传送带和目标房间都可用时,运算符(operator)才会查看队列中的箱子,然后将箱子放在适当的传送带上。运算符(operator)按顺序发送箱子,但跳过无法处理的箱子。
- 在房间内打开箱子后,需要一定的时间来存放元素。在此期间,房间不能接收其他箱子。
- 元素入库后,空箱使用与进来时相同的传送带被送到仓库导出。
- 运算符(operator)随时了解哪些传送带和房间空闲。
我的问题是如何为这个运算符建模。到目前为止,我还没有找到在 Simpy 中执行此操作的优雅方法。我基本上想要一个只有在满足以下三个条件时才会醒来的进程:a)房间是免费的; b) 队列中有一个针对这个房间的盒子,c) 进入房间的腰带是免费的。
非常感谢任何想法、建议或指向现有示例的指针。谢谢!
请您参考如下方法:
这是另一个关于 simpy 的 StackOverflow 问题,可能会让您更接近解决方案:How can I have a process wait for multiple resources?
如果我对这个答案的理解正确,您可以将事件视为队列中的消息:查看它们,但将您不喜欢的放回原处。这意味着您可以等待整个事件列表,包括 .get() 和您的超时,并且当它们中的任何一个触发时,检查它们。您可以对其中的一些采取行动并丢弃其余的(让它们“未处理”以供另一个过程或迭代使用)。这样,即使您的超时在列表中,您也可以检查其他三个事件的状态并采取相应行动。
