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

Split

Для каждого поступающего агента (будем называть его агентом-оригиналом) блок создает заданное число новых агентов (будем называть их агентами-копиями) и пересылает их дальше через порт outCopy.

Создаваемые блоком агенты могут быть любого типа, они могут быть копиями поступившего в блок агента, а могут и как-то иначе зависеть от его содержимого. Количество создаваемых агентов может изменяться динамически.

Вся операция выполняется в течение нулевого времени — как только агент входит в блок Split, он тут же покидает его вместе с созданными агентами.

Есть два места, где вы можете проинициализировать нового агента: свойства Новый агент и действие При выходе копии. В кодах обоих этих полей агент-оригинал доступен как original, а номер созданного агента — как indexCopy.

В свойстве При выходе копии также доступен и агент-копия, как agent. Вы сами должны задавать свойства создаваемых агентов. Если вам будет нужно скопировать значения каких-то полей агента-оригинала, то это можно сделать в этом поле. Например, если вы создадите параметр attribute как в типе агента-оригинала, так и в типе агента-копии, то вы можете присвоить значение параметра агента-оригинала параметру агента-копии: agent.attribute = original.attribute;

Если вы хотите отслеживать взаимосвязь агента-оригинала и копий этого агента, то вы можете создать у типа агента параметр id и присваивать значение идентификатора оригинала создаваемым агентам. Если впоследствии вы захотите присоединить агентов-копии к оригиналу, то вы сможете воспользоваться этим идентификатором в качестве критерия сравнения агентов. Реальное «воссоединение» может быть реализовано с помощью нескольких блоков Match или с помощью специального кода. В простейшем случае, когда создается только одна копия каждого оригинала, и их порядок не меняется по ходу продвижения по потоковой диаграмме, вы можете собрать одного агента из двух с помощью блока Combine.

Параметры

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

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

Добавить копии в
Здесь вы можете указать, куда помещаются агенты, созданные этим блоком: в популяцию по умолчанию или в другую популяцию (указанную ниже в поле Популяция агентов).
Синтаксис: boolean addToCustomPopulation
Популяция агентов
[Параметр виден, если выбрана опция Добавить копии в: другую популяцию]
Название популяции агентов, куда помещаются агенты, созданные этим блоком.
Тип значения: AgentList
Локальные переменные:
TCopy agent — новый агент
int indexCopy — номер нового агента (среди прочих, созданных для данного агента-оригинала; равен 0, если для оригинала был создан один агент)
T original — агент-оригинал

Действия

При подходе ко входу
Код, выполняемый, когда агент-оригинал поступает в блок.
Локальная переменная: T agent — агент
При выходе копии
Код, выполняемый, когда созданный агент покидает блок.
Локальные переменные: TCopy agent — новый агент
int indexCopy — номер нового агента (среди прочих, созданных для данного агента-оригинала; равен 0, если для оригинала был создан один агент)
T original — агент-оригинал
При выходе оригинала
Код, выполняемый, когда агент-оригинал покидает блок.
Локальная переменная: T agent — поступивший в блок исходный агент (оригинал)

Порты

in
Входной порт.
out
Выходной порт для агентов-оригиналов.
outCopy
Выходной порт для агентов-копий, создаваемых этим блоком.
Как мы можем улучшить эту статью?