AnyLogic
Развернуть
Размер шрифта

Wait

Этот блок может содержать в себе агентов и поддерживает их изъятие в ручном режиме (нужно вызвать функции free(), или freeAll()). Этот блок не имеет определенного порядка (кроме случаев, когда включено вытеснение).

Параметры

Тип агента
Тип агентов, проходящих через блок.
Далее: T
Вместимость
[Параметр виден, если не выбрана опция Максимальная вместимость]
Вместимость очереди.
Тип: int capacity
Значение по умолчанию: 100
Установить новое значение во время выполнения: set_capacity(новое значение)
Максимальная вместимость
Если опция выбрана (true), то вместимость очереди будет максимально возможной (ограничена константой Integer.MAX_VALUE).
Синтаксис: boolean maximumCapacity
Значение по умолчанию: false
Установить новое значение во время выполнения: set_maximumCapacity(новое значение)
Место агентов
Фигура разметки (узел или путь), где располагаются агенты, пока они находятся в этом блоке.
Синтаксис: AnimationStaticLocationProvider entityLocation

Специфические

Разрешить уход по таймауту
Если опция выбрана (true), то агенты могут покидать очередь по таймауту. После проведения в очереди максимально допустимого времени агенты будут покидать блок через специальный порт outTimeout .
Синтаксис: boolean enableTimeout
Значение по умолчанию: false
Таймаут
[Параметр виден, если выбрана опция Разрешить уход по таймауту]
Выражение, вычисляющее значение таймаута (максимально допустимое время, которое агент может провести в очереди) для агента.
Тип значения: double Локальная переменная: T agent — агент
Разрешить вытеснение
Если опция выбрана (true), агенты располагаются в очереди соответственно их приоритетам и могут быть вытеснены агентами с более высоким приоритетом.
Синтаксис: boolean enablePreemption
Значение по умолчанию: false
Вытеснять
[Параметр виден, если выбрана опция Разрешить вытеснение]
Задает, как поступающие в блок агенты вытесняют агентов, уже находящихся в нем.
Вытеснять можно:
самого последнего агента — Выбранная по умолчанию политика. Будет вытеснен последний добавленный в очередь агент.
агента с самым низким приоритетом — Агенты будут вытесняться согласно их приоритетам (заданным в поле Приоритет агента).
по сравнению агентов — В этом режиме для каждого поступающего в блок агента будет проверяться логическое выражение, заданное в поле "agent1 может вытеснить agent2". Это выражение будет сравнивать этого агента с агентами, уже хранящимися в блоке, и определит того агента, который должен будет этот блок покинуть.
самого старого агента — Будет вытеснен тот агент, который был добавлен в очередь раньше остальных.
Имя: queuing
Допустимые значения:
Wait.QUEUING_FIFO — самого последнего агента
Wait.QUEUING_PRIORITY — агента с самым низким приоритетом
Wait.QUEUING_COMPARISON — по сравнению агентов
Wait.QUEUING_LIFO — самого старого агента
Приоритет агента
[Параметр виден, если Вытеснять: агента с самым низким приоритетом]
Приоритет поступающего агента (чем больше значение, тем выше приоритет).
Тип значения: double
Локальная переменная: T agent — агент
Значение по умолчанию: 0
"agent1 может вытеснить agent2"
[Параметр виден, если Вытеснять: по сравнению агентов]
Код сравнения, который должен возвращать true, если агент agent1 имеет более высокий приоритет чем агент agent2 (иначе, false, включая случаи равных приоритетов).
Тип значения: boolean Локальная переменная: T agent1, T agent2 — агенты
Значение по умолчанию: false
Выталкивать агентов
Если опция выбрана (true), то агенты, созданные этим блоком, будут немедленно вытолкнуты дальше независимо от состояния следующего блока. Если опция не выбрана, агенты будут не выталкиваться, а выходить постепенно: только когда следующий блок готов принять еще одного агента, он запрашивает его у этого блока, и тогда агент проходит дальше.
Синтаксис: boolean pushProtocol
Значение по умолчанию: false
Вернуть агента в исходную точку
Если опция выбрана, агенты возвращаются в свое начальное местоположение ( узел или путь, где они находились до того, как попали в этот блок), после того, как покинут фигуру разметки, заданную в параметре Место агентов.
Синтаксис: boolean restoreEntityLocationOnExit
Включить сбор статистики
Этот блок собирает статистику по длине очереди. Если сбор статистики глобально отключен для всех блоков Библиотеки моделирования процессов с помощью блока PML Settings, то эта опция позволяет переопределить эту настройку и включить сбор статистики для этого конкретного блока. Иначе статистика собирается вне зависимости от этой настройки.
Синтаксис: boolean forceStatisticsCollection
Значение по умолчанию: false

Действия

Во всех действиях текущий агент доступен как локальная переменная agent.

При входе
Код, выполняемый, когда агент поступает в блок (и помещается в очередь).
При выходе
Код, выполняемый, когда агент покидает блок через порт out (обычным способом).
При уходе по таймауту
[Параметр виден, если выбрана опция Разрешить уход по таймауту]
Код, выполняемый, когда агент покидает блок по таймауту (прождав в очереди максимально допустимое время) через специальный порт outTimeout.
При вытеснении
[Параметр виден, если выбрана опция Разрешить вытеснение]
Код, выполняемый, когда агент покидает блок через порт outPreempted в результате вытеснения.
При извлечении
Код, выполняемый, когда агент умышленно извлекается из блока посредством вызова функции агента remove(). Этот код вызывается автоматически после вызова функции remove().
Локальная переменная: T agent — агент

Функции

Функция Описание
int size() Возвращает количество агентов, находящихся в данный момент в очереди.
T get(int index) Возвращает агента, находящегося в позиции с номером index (ближайшая к выходу из очереди позиция имеет номер 0).
T remove(Agent agent) Извлекает агента agent из очереди и возвращает его. Если такого агента в очереди обнаружено не будет, функция вернет null.
boolean free(Agent agent) Сообщает очереди освободить указанного агента и направить его к выходному порту out.
boolean freeAll() Сообщает очереди освободить всех агентов и направить их к выходному порту out.
boolean isStatisticsCollected() Возвращает true, если блок собирает статистику.
resetStats() Удаляет статистику, собранную блоком к текущему моменту времени.
Iterator<T> iterator() Возвращает итератор агентов (в порядке: первый — у выхода, последний — самое большое время, оставшееся до его задержки).

Статистика

StatisticsContinuous statsSize
Непрерывная статистика длины очереди. Статистика собирается, если сбор статистики не выключен блоком PML Settings.

Порты

in
Входной порт.
out
Выходной порт.
outTimeout
Выходной порт для агентов, покидающих блок по таймауту.
outPreempted
Выходной порт для агентов, покидающих блок в результате вытеснения.
Как мы можем улучшить эту статью?