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
Новая партия
Укажите здесь тип партий, которые будет создавать этот блок.
Тип значения: 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.
void resetStats() Удаляет статистику, собранную на этот момент.
Iterator<T> iterator() Возвращает итератор над агентами в этом блоке.

Порты

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