我正在对一个制造系统建模,在该系统中,机器可能会随机发生故障,并要求技术人员以指定的优先级进行维修。但是,当机器在等待技术人员可用时,其优先级可能会发生变化。我可以在SimPy中建模吗?我的代码的相关部分如下:
with technician.request(priority=self.get_priority()) as req:
yield req
yield self.env.timeout(self.time_to_repair)
答案 0 :(得分:0)
在尝试解决使用请求的cancel()
方法的另一个问题时,我遇到了一个答案,如Advanced Features of the SimPy Language的第2节中所述。
在我的特定示例中,我有一个Machine
类,它运行多个进程。在Machine
的实例中,该请求首先在环境进程中产生:
self.req = technician.request(priority=self.get_priority())
yield self.req
另一个环境进程可以稍后取消该请求并生成一个新请求:
self.req.cancel()
self.req = technician.request(priority=self.get_priority())
yield self.req