Запросите объект из Anyogic Process Block и подождите, пока он не станет доступен, если его нет в данный момент.

Я пытаюсь подражать тому, что делает QUEST, когда запрашивается буфер для определенной части. Там, если часть не находится в буфере, запрос остается в ожидании, и если Часть прибывает в буфер, она освобождается машине, запрашивающей ее. Я также видел такое поведение в SimPy, который является еще одним движком DES.

Я не могу найти простой способ сделать это в AL. Блок очереди имеет следующие методы:

  • release (agent): вернет false и забудет о запросе, если агент не такой, как указанный
  • remove(agent): возвратит ноль, если в очереди нет агента

Так что эти методы не будут делать то, что я хочу... Это становится немного сложнее, так как очередь содержит агентов с параметрами, и я хочу запросить определенный набор параметров (скажем, у агентов есть числовой параметр, который может идти от 1 до 3, и меня интересуют только агенты в очереди, если этот параметр имеет значение 2). Также есть ряд агентов, одновременно извлекающих этих агентов из очереди, и я бы хотел, чтобы был установлен приоритет (скажем, FIFO), поэтому есть пара вещей, которые я попробовал и ни к чему не привел:

  1. Использование блока захвата вместо очереди и добавление агентов во встроенную очередь в блоке захвата. -> Я не могу найти подходящий метод для захвата из буфера другим способом, чем буферный блок (поэтому я перешел к варианту 2), но у seize есть многообещающий выбор ресурса для настройки, который может помочь с параметром down-selection
  2. Использование блока захвата и сохранение агентов в пуле в качестве ресурсов. проблемы с динамическим созданием ресурсов, захватом соответствующего и т.д...
  3. Создание очереди запросов, которые вернули ноль из очереди. Это звучит как излишество, но я посмотрю на это

Все они кажутся немного сложными для такой простой вещи в других программах для моделирования, поэтому мне интересно, если я что-то упустил или кто-то сталкивался с этой проблемой раньше

1 ответ

Предложение 1: может ли это помочь вам сохранить агентов в очереди в коллекции (или других коллекциях, в соответствии с настройками параметров). События: "на входе" и "на выходе"

Предложение 2: может ли здесь помочь блок ожидания?

Другие вопросы по тегам