Запросите объект из Anyogic Process Block и подождите, пока он не станет доступен, если его нет в данный момент.
Я пытаюсь подражать тому, что делает QUEST, когда запрашивается буфер для определенной части. Там, если часть не находится в буфере, запрос остается в ожидании, и если Часть прибывает в буфер, она освобождается машине, запрашивающей ее. Я также видел такое поведение в SimPy, который является еще одним движком DES.
Я не могу найти простой способ сделать это в AL. Блок очереди имеет следующие методы:
- release (agent): вернет false и забудет о запросе, если агент не такой, как указанный
- remove(agent): возвратит ноль, если в очереди нет агента
Так что эти методы не будут делать то, что я хочу... Это становится немного сложнее, так как очередь содержит агентов с параметрами, и я хочу запросить определенный набор параметров (скажем, у агентов есть числовой параметр, который может идти от 1 до 3, и меня интересуют только агенты в очереди, если этот параметр имеет значение 2). Также есть ряд агентов, одновременно извлекающих этих агентов из очереди, и я бы хотел, чтобы был установлен приоритет (скажем, FIFO), поэтому есть пара вещей, которые я попробовал и ни к чему не привел:
- Использование блока захвата вместо очереди и добавление агентов во встроенную очередь в блоке захвата. -> Я не могу найти подходящий метод для захвата из буфера другим способом, чем буферный блок (поэтому я перешел к варианту 2), но у seize есть многообещающий выбор ресурса для настройки, который может помочь с параметром down-selection
- Использование блока захвата и сохранение агентов в пуле в качестве ресурсов. проблемы с динамическим созданием ресурсов, захватом соответствующего и т.д...
- Создание очереди запросов, которые вернули ноль из очереди. Это звучит как излишество, но я посмотрю на это
Все они кажутся немного сложными для такой простой вещи в других программах для моделирования, поэтому мне интересно, если я что-то упустил или кто-то сталкивался с этой проблемой раньше
1 ответ
Предложение 1: может ли это помочь вам сохранить агентов в очереди в коллекции (или других коллекциях, в соответствии с настройками параметров). События: "на входе" и "на выходе"
Предложение 2: может ли здесь помочь блок ожидания?