Этот блок может содержать в себе агентов и поддерживает их изъятие в ручном режиме (нужно вызвать функции 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 -
[Параметр виден, если Вытеснять: по сравнению агентов]
Код сравнения, который должен возвращать 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
- Выходной порт для агентов, покидающих блок в результате вытеснения.
-
Как мы можем улучшить эту статью?
-