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