首页 > 解决方案 > 产生请求后,如何在 SimPy 中更改资源请求的优先级?

问题描述

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

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

标签: pythonsimpy

解决方案


我在尝试解决另一个使用请求方法的问题时遇到了这个问题的答案,如SimPy 语言cancel()的高级功能第 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

推荐阅读