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

Batch

Блок Batch преобразует заданное количество поступающих в блок агентов в одного агента-партию. Партия может быть постоянной или временной. При создании постоянной партии хранящиеся в очереди агенты уничтожаются (при этом свойства агента-партии могут как-то зависеть от свойств этих агентов), в то время как при создании временной партии все эти агенты добавляются в содержимое агента-партии и могут быть впоследствии извлечены оттуда с помощью блока Unbatch.

Этот блок содержит внутри очередь (блок типа Queue), в которой хранятся входящие агенты. При накоплении количества агентов, равного заданному Размеру партии, создается один новый агент (агент-партия), который мгновенно покидает блок. Чтобы получить список агентов в партии, используйте agent.contents(), где agent — агент-партия, который выйдет из блока. Чтобы получить количество агентов в собираемой партии, вызовите batch.size(), где batch — это блок Batch. Также размер партии можно получить с помощью agent.contents().size().

Пример постоянной партии: предположим, что вы хотите собрать вместе n агентов типа Packet, имеющих параметр size, и создать нового агента такого же типа, имеющего значение параметра size, равное сумме всех размеров пакетов. Тогда вы должны задать типы агентов: Packet, Packet, оставить выбранным флажок Постоянная партия, написать new Packet() в поле Новая партия, задать количество агентов, необходимых для сборки партии (n) в поле Размер партии и в поле действия При добавлении написать batch.size += agent.size.

Если партия агентов должна собираться не при накоплении заданного количества агентов, а при выполнении какого-либо другого условия, то, возможно, более удобно будет использовать вместо блока Batch блок Queue.

С содержимым агента также работают блоки Pickup и Dropoff.

Параметры

Размер партии
Размер партии (количество агентов, требуемое для ее создания). Может изменяться динамически с помощью функции set_batchSize().
Синтаксис: int batchSize
Значение по умолчанию: 10
Постоянная партия
Если опция выбрана (true), то блок будет создавать постоянные партии агентов. При создании постоянной партии агенты, хранящиеся в блоке, уничтожаются. Если опция не выбрана (false), то хранящиеся в блоке агенты добавляются в содержимое нового агента (временной партии агентов, которая впоследствии может быть разобрана на составных агентов с помощью блока Unbatch).
Синтаксис: boolean permanent
Значение по умолчанию: true
Новая партия
Укажите здесь тип партий, которые будет создавать этот блок. Упоминается ниже как TBatch.
Значение по умолчанию: Agent
Изменить размеры
Если опция выбрана (true), можно будет изменить размеры агентов — партий, создаваемых этим блоком, задав соответствующие значения в параметрах Длина, Ширина и Высота ниже.
Тип значения: boolean
Локальная переменная: agent — агент
Длина
[Параметр виден, если выбрана опция Изменить размеры]
Новая длина создаваемого агента (партии).
Тип значения: double
Локальная переменная: agent — агент
Ширина
[Параметр виден, если выбрана опция Изменить размеры]
Новая ширина создаваемого агента (партии).
Тип значения: double
Локальная переменная: agent — агент
Высота
[Параметр виден, если выбрана опция Изменить размеры]
Новая высота создаваемого агента (партии).
Тип значения: double
Локальная переменная: agent — агент
Место агентов
Фигура разметки (узел или путь), где располагаются агенты, пока они находятся в этом блоке.
Синтаксис: AnimationStaticLocationProvider entityLocation
Место новой партии
Здесь задается местоположение созданных в этом блоке агентов — партий. Выберите либо опцию Не задано, либо одну из следующих опций:
Узел сети / ГИС — агенты будут появляться в заданном узле сети, в ГИС точке или в ГИС регионе.
Аттрактор — агенты будут появляться в заданном аттракторе.
Точка — точка в координатах x, y, z, в которой будут появляться агенты.
(Широта/долгота) — агенты появляются в точке на карте с заданными координатами Широты и Долготы.
Географ. место — агенты появляются в определенном месте на карте. Вы можете задать это местоположение в параметре Имя места.
Имя: locationType
Допустимые значения:
Batch.LOCATION_NOT_SPECIFIED — Не задано
Batch.LOCATION_XYZ — Точка
Batch.LOCATION_NODE — Узел сети
Batch.LOCATION_ATTRACTOR — Аттрактор
Batch.LOCATION_LATLON — (Широта/долгота)
Batch.LOCATION_GEO_PLACE — Географ. место
Узел
[Параметр виден, если Место новой партии: Узел сети / ГИС]
Узел сети, ГИС точка или ГИС регион, куда отправляются агенты, созданные этим блоком.
Тип значения: INodes
Локальная переменная: TBatch agent — партия агентов
Аттрактор
[Параметр виден, если Место новой партии: Аттрактор]
Аттрактор, куда отправляются агенты, созданные этим блоком.
Тип значения: Attractor
Локальная переменная: TBatch agent — партия агентов
Координаты X, Y, Z
[Параметр виден, если Место новой партии: Точка]
Координаты точки.
Тип значения: double
Локальная переменная: TBatch agent — партия агентов
... расположена
[Параметр виден, если Место новой партии: Точка (x, y, z)]
Здесь можно выбрать, где будет находиться точка, в которой окажется новая партия, когда блок ее создаст: на уровне или в сети.
Тип значения: boolean destinationInNetwork
Значение по умолчанию: false
Уровень
[Параметр виден, если ...расположена: на уровне]
Уровень, на котором расположена точка, куда будет помещена новая партия, когда блок ее создаст.
Тип значения: Level
Локальная переменная: TBatch agent — партия агентов
Сеть
[Параметр виден, если ...расположена: в сети]
Сеть, в которой расположена точка, куда будет помещена новая партия, когда блок ее создаст.
Тип значения: INetwork
Локальная переменная: TBatch agent — партия агентов
Широта, Долгота
[Параметр виден, если Место новой партии: (широта, долгота)]
Координаты широты и долготы точки на ГИС карте, где появляются агенты.
Тип значения: double
Локальная переменная: TBatch agent — партия агентов
Имя места
[Параметр виден, если Место новой партии: Географ. место]
Имя конкретного места на карте ГИС, где будут появляться агенты. Укажите имя как текст в кавычках, например, "London". ГИС карта выполнит поиск места по этому имени. Первый результат в списке результатов ГИС поиска будет использован в качестве местоположения, куда будут помещены агенты.
Тип значения: String
Локальная переменная: TBatch agent — партия агентов
Скорость
[Параметр виден, если Место нового агента задано одной из опций]
Скорость движения агентов, которых производит этот блок.
Тип значения: double
Значение по умолчанию: 10 м/с Локальная переменная: agent — агент
Скорость
[Параметр виден, если Место новой партии задано одной из опций]
Скорость движения агентов, которых производит этот блок.
Тип значения: double
Значение по умолчанию: 10 м/с
Локальная переменная: agent — агент

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

Добавить партии в
Здесь вы можете указать, куда будут помещены агенты-партии, созданные этим блоком, в популяцию по умолчанию или в другую популяцию агентов, которую вы можете выбрать ниже.
Синтаксис: boolean addToCustomPopulation
Популяция агентов
[Параметр виден, если Добавить партии в: другую популяцию агентов]
Имя популяции агентов, куда будут помещены партии, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: TBatch batch — партия, созданная в этом блоке
Выталкивать агентов
Если опция выбрана (true), то агенты, созданные этим блоком, будут немедленно вытолкнуты дальше независимо от состояния следующего блока.
Синтаксис: boolean pushProtocol
Вернуть агентов в исходную точку
Если опция выбрана, агенты возвращаются в свое начальное местоположение (узел или путь, где они находились до того, как попали в блок Batch), после того, как покинут фигуру разметки, заданную в параметре Место агентов.
Синтаксис: boolean restoreEntityLocationOnExit
Включить сбор статистики
Этот блок собирает статистику по длине очереди. Если сбор статистики глобально отключен для всех блоков Библиотеки моделирования процессов с помощью блока PML Settings, то эта опция позволяет переопределить эту настройку и включить сбор статистики для этого конкретного блока. Иначе статистика собирается вне зависимости от этой настройки.
Синтаксис: boolean forceStatisticsCollection
Значение по умолчанию: false

Действия

При входе
Код, выполняемый при поступлении нового агента в блок.
Локальная переменная: agent — агент
При добавлении
Код, выполняемый при формировании партии агентов (постоянной или временной) для каждого хранящегося в блоке агента.
Локальные переменные:
agent — агент, добавляемый в агента-партию
TBatch batch — агент-партия, созданная этим блоком
При выходе
Код, выполняемый, когда агент-партия покидает блок.
Локальная переменная: TBatch agent — агент-партия
При извлечении
Код, выполняемый, когда агент умышленно извлекается из блока посредством вызова функции агента remove(). Этот код вызывается автоматически после вызова функции remove().
Локальная переменная: T agent — агент

Функции

Функция Описание
int size() Возвращает количество агентов в блоке Batch.
T remove(Agent agent) Извлекает агента agent из блока и возвращает его. Если такого агента в очереди обнаружено не будет, функция вернет null.
boolean isStatisticsCollected() Возвращает true, если блок собирает статистику.
void resetStats() Удаляет статистику, собранную на этот момент.
Iterator<T> iterator() Возвращает итератор над агентами в этом блоке.

Статистика

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

Порты

in
Входной порт.
out
Выходной порт.
Как мы можем улучшить эту статью?