Как я могу изменить приоритет запроса ресурса в SimPy после выдачи запроса?
Я моделирую производственную систему, в которой машины могут случайно выйти из строя, и обращаюсь к специалисту по ремонту с указанным приоритетом. Однако в то время как машина ждет, пока техник станет доступным, ее приоритет может измениться. Это то, что я могу моделировать в SimPy? Соответствующая часть моего кода ниже:
with technician.request(priority=self.get_priority()) as req:
yield req
yield self.env.timeout(self.time_to_repair)
0 ответов
Я столкнулся с ответом на это, пытаясь решить другую проблему, которая использует запрос cancel()
метод, как подробно описано в Разделе 2 " Дополнительные возможности языка SimPy".
В моем конкретном примере у меня есть 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