产生请求后,如何在SimPy中更改资源请求的优先级?

时间:2019-02-11 20:40:47

标签: python simpy

我正在对一个制造系统建模,在该系统中,机器可能会随机发生故障,并要求技术人员以指定的优先级进行维修。但是,当机器在等待技术人员可用时,其优先级可能会发生变化。我可以在SimPy中建模吗?我的代码的相关部分如下:

with technician.request(priority=self.get_priority()) as req:
    yield req
    yield self.env.timeout(self.time_to_repair)

1 个答案:

答案 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