SimPy использует логику для выбора между одним из двух или более ресурсов

Как дать процессу возможность выбора из двух или более разных ресурсов?

Мне нужно сделать это, поскольку я моделирую действия по обслуживанию как процессы с ресурсами, представляющими общие средства, доступные для выполнения обслуживания. Некоторые действия по техническому обслуживанию могут использовать только один тип оборудования, но другие действия по техническому обслуживанию являются более гибкими и могут использовать несколько типов оборудования.

Таким образом, в терминах SimPy один процесс имеет возможность выбрать только один уникальный тип ресурса, а другие процессы могут выбирать из нескольких уникальных типов ресурсов.

Грубое объяснение того, чего я пытаюсь достичь:

resource_A_req = resource_A.request()

resource_B_req = resource_B.request()

yield resource_A_req or resource_B_req

Будет ли изучение того, как использовать FilterStore, ответом на мой вопрос?


person bobo    schedule 25.01.2017    source источник


Ответы (1)


yield resource_A_req | resource_B_req может сработать для вас. Затем вам нужно проверить, какой запрос был успешным, и вызвать cancel() для другого, чтобы избежать проблем (поищите в документах «условные события»).

FilterStore тоже может сработать. См. этот ответ для краткости пример.

person Stefan Scherfke    schedule 25.01.2017
comment
Спасибо, Стефан. Я успешно попробовал FilterStore! Я тоже попробую первый предложенный вами способ. - person bobo; 26.01.2017