Как я могу изменить приоритет запроса ресурса в SimPy после выдачи запроса? - PullRequest
0 голосов
/ 11 февраля 2019

Я моделирую производственную систему, в которой машины могут случайно выйти из строя, и запрашиваю техника для ремонта с указанным приоритетом.Однако в то время как машина ждет, пока техник станет доступным, ее приоритет может измениться.Это то, что я могу моделировать в SimPy?Соответствующая часть моего кода ниже:

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

1 Ответ

0 голосов
/ 12 апреля 2019

Я столкнулся с ответом на этот вопрос, пытаясь решить другую проблему, в которой используется метод запроса 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
...