Batch


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

Этот объект содержит внутри очередь (объект типа Queue), в которой хранятся входящие агенты. При накоплении количества агентов, равного заданному Размеру партии, создается один новый агент (агент-партия), который мгновенно покидает объект.

Пример постоянной партии: предположим, что вы хотите собрать вместе 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
Новая партия [динамический]
Укажите здесь тип партий, которые будет создавать этот блок.
Тип значения: Agent
Изменить размеры [динамический]
Если опция выбрана (true), можно будет изменить размеры агентов - партий, создаваемых этим блоком, задав соответствующие значения в параметрах Длина, Ширина и Высота ниже.
Тип значенияboolean
Локальная переменная:  agent - агент
Длина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Новая длина создаваемого агента (партии).
Тип значенияdouble
Локальная переменная:  agent - агент
Ширина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Новая ширина создаваемого агента (партии).
Тип значенияdouble
Локальная переменная:  agent - агент
Высота [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Новая высота создаваемого агента (партии).
Тип значенияdouble
Локальная переменная:  agent - агент
Место агентов
Фигура разметки (node или path), где располагаются агенты, пока они находятся в этом блоке.
Синтаксис: 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 - Географ. место
Скорость [динамический]
[Параметр виден, если Место новой партии задано одной из опций] Скорость движения агентов, которых производит этот блок.
Тип значения: double
Значение по умолчанию: 10 м/с
Локальная переменная: T agent - агент.
Координаты X, Y, Z [динамический]
[Параметр виден, если Место новой партии: Точка] Координаты точки.
Тип значения: double
Локальная переменная: TBatch agent - партия агентов.
... в сети
[Параметр виден, если Место новой партии: Точка] Если эта опция выбрана (true), агенты добавляются в сеть, которую вы можете выбрать в поле Сеть.
Синтаксис: boolean locationXYZInNetwork
Сеть [динамический]
[Параметр виден, если выбрана опция ... в сети] Сеть, куда отправляются агенты, созданные этим блоком.
Тип значения: Network
Локальная переменная: TBatch agent - партия агентов.
Узел [динамический]
[Параметр виден, если Место новой партии: Узел сети / ГИС] Узел сети, ГИС точка или ГИС регион, куда отправляются агенты, созданные этим блоком.
Локальная переменная: TBatch agent - партия агентов.
Аттрактор [динамический]
[Параметр виден, если Место новой партии: Аттрактор] Аттрактор, куда отправляются агенты, созданные этим блоком.
Тип значения: Attractor
Локальная переменная: TBatch agent - партия агентов.
Широта, Долгота [динамический]
[Параметр виден, если Место новой партии: (широта, долгота)] Координаты широты и долготы точки на ГИС карте, где появляются агенты.
Тип значения: double
Локальная переменная: TBatch agent - партия агентов.
Имя места [динамический]
[Параметр виден, если Место новой партии: Географ. место] Имя конкретного места на карте ГИС, где будут появляться агенты. Укажите имя как текст в кавычках, например, "London". ГИС карта выполнит поиск места по этому имени. Первый результат в списке результатов ГИС поиска будет использован в качестве местоположения, куда будут помещены агенты.
Тип значения: String
Локальная переменная: TBatch agent - партия агентов.
Специфические
Добавить партии в
Здесь вы можете указать, куда будут помещены агенты-партии, созданные этим блоком, в популяцию по умолчанию или в другую популяцию агентов, которую вы можете выбрать ниже.
Синтаксис: boolean addToCustomPopulation
Популяция агентов [динамический]
[Параметр виден, если Добавить партии в: другую популяцию агентов] Имя популяции агентов, куда будут помещены партии, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: TBatch batch - партия, созданная в этом блоке.
Выталкивать агентов
Если опция выбрана (true), то агенты, созданные этим блоком, будут немедленно вытолкнуты дальше независимо от состояния следующего блока.
Синтаксис: boolean pushProtocol
Вернуть агентов в исходную точку
Если опция выбрана, агенты возвращаются в свое начальное местоположение (узел или путь, где они находились до того, как попали в блок Batch), после того, как покинут фигуру разметки, заданную в параметре Место агентов.
Синтаксис: boolean restoreEntityLocationOnExit
Включить сбор статистики
По умолчанию, статистика собирается для всех блоков Библиотеки Моделирования Процессов. Тем не менее, вы можете настроить этот параметр и выключить сбор статистики, чтобы улучшить динамику модели. Для этого добавьте блок PML Settings и отключите опцию Включить статистику по умолчанию. Таким образом, вы отключите сбор статистики для всех блоков диаграммы процесса в этой модели. Но вы можете включить статистику для некоторых конкретных блоков, включив эту опцию Включить сбор статистики в свойствах самого блока.
Синтаксис: boolean forceStatisticsCollection
Значение по умолчанию: false
Действия
При входе [код]
Код, выполняемый при поступлении нового агента в объект.
Локальная переменная: T agent - агент.
При добавлении [код]
Код, выполняемый при формировании партии агентов (постоянной или временной) для каждого хранящегося в объекте агента.
Локальные переменные: T agent - агент.
TBatch batch - агент-партия, созданная этим объектом.
При выходе [код]
Код, выполняемый, когда агент-партия покидает объект.
Локальная переменная: TBatch agent - партия агентов.
При извлечении [код]
Код, выполняемый, когда агент умышленно извлекается из блока посредством вызова функции агента remove(). Этот код вызывается автоматически после вызова функции remove().
Локальная переменная: T agent - агент.

Функции

int size() - Возвращает количество агентов во вложенной очереди queue.

T remove(Agent agent) - Извлекает агента agent из очереди и возвращает его. Если такого агента в очереди обнаружено не будет, метод вернет null.

void resetStats() - Удаляет статистику, собранную на этот момент.

Iterator iterator() - Возвращает итератор над агентами в этом блоке.

Порты

in
Входной порт.
out
Выходной порт.