PedGroupAssemble


Формирует группы из последовательно поступающих во входной порт пешеходов.

Поддерживается три режима создания групп:

Может использоваться и для воссоединения группы после того, как та была разбита на отдельных пешеходов блоком PedGroupDisassemble. Такие пешеходы будут ждать прихода всех членов их группы в заданной вами области ожидания. По приходу всех членов группы они проследуют дальше уже вновь в виде цельной группы пешеходов. Группы воссоединяются независимо друг от друга, в это же время блок может производить также и формирование новой группы пешеходов.

Демо модель: Pedestrian Groups

Параметры

Область [динамический]
Область, в которой пешеходы будут ждать, пока группа не будет сформирована.
Тип значения: AreaNode
Локальная переменная: ped - пешеход.
Этот блок
Выберите, это блок: создает группы или собирает группы путем поиска соответствия.
Имя: assemblingMode
Изменить значение: set_assemblingMode()
Возможные значения: PedGroupAssemble.ASSEMBLING_MODE_BY_CONDITIONS
PedGroupAssemble.ASSEMBLING_MODE_BY_MATCHING
Группа создается
[Виден, если Этот блок: создает группы] Определяет, что будет являться критерием завершения создания группы: будет ли создаваться группа с заданным числом человек, или в течение заданного времени, или создание группы будет завершаться, если время между приходами пешеходов превзойдет заданное максимальное значение (пока соблюдается интенсивность).
Имя: groupingMode Изменить значение: set_
Возможные значения: PedSource.GROUPING_MODE_SIZE_REACHED
PedSource.GROUPING_MODE_TIMEOUT
PedSource.GROUPING_MODE_TIME_GAP
Число человек в группе [динамический]
[Виден, если Группа создается с заданным числом человек] Число человек в группе.
Если, например, вы оставите значение по умолчанию, то будут создаваться группы из двух и из трех человек (с равными вероятностями).
Тип значения: int
Значение по умолчанию: uniform_discr( 2, 3 )
Локальная переменная: leader - лидер группы.
Время формирования группы [динамический]
[Виден, если Группа создается в течение заданного времени] Время, в течение которого будет собираться группа. Когда этот таймаут истечет, формирование группы будет закончено, и начнется формирование новой группы.
Тип значения: double
Значение по умолчанию: exponential(300/hour())
Макс. время между прибытиями для одной группы [динамический]
[Виден, если Группа создается пока соблюдается интенсивность] Максимальное время между прибытиями пешеходов в одной группе. Если время между прибытиями превзойдет заданное здесь значение, то формирование одной группы будет завершено и начнется формирование новой.
Тип значения: double
Значение по умолчанию: 2 секунды
В той же группе [динамический]
[Виден, если Этот блок: собирает группы путем поиска соответствия] Указанное здесь условие будет проверяться для всех групп, собранных в этом блоке. Если условие выполняется (true) для какой-либо группы, пешеход присоединится к этой группе. Указанное условие может, например, анализировать и сравнивать ID группы и пешехода. Если условие не выполняется (false) ни для одной группы, начинает формироваться новая группа пешеходов.
Тип значения: boolean
Локальные переменные: ped - пешеход,
PedGroup group - группа, для которой проверяется условие
leader - лидер этой группы
Создаются группы [динамический]
[Виден, если Этот блок: собирает группы путем поиска соответствия] Если указанное здесь условие выполняется(true), то сборка группы завершена (текущий пешеход будет последним членом группы).
Тип значения: boolean
Локальные переменные: PedGroup group - группа этого пешехода
leader - лидер группы этого пешехода
int size - размер группы этого пешехода
Форма [динамический]
Форма группы пешеходов: толпа, шеренга или цепочка.
Имя: groupFormation Изменить значение: set_groupFormation(новое значение)
Допустимые значения:
GROUP_FORMATION_SWARM
- толпа
GROUP_FORMATION_CHAIN
- цепочка
GROUP_FORMATION_FRONT
- шеренга
Поведение группы в сервисах
Здесь вы можете задать, как создаваемые этим объектом группы пешеходов будут вести себя при прохождении сервисов (если в задающем сервис объекте PedService не будет выбрано другое поведение).
Возможны три варианта:
  • Все члены группы обслуживаются индивидуально - Каждый член группы должен самостоятельно пройти через сервис. Пример такого сервиса - турникеты.
  • Обслуживается один член группы, остальные ждут в очереди - Вся группа стоит в очереди, но при достижении сервиса обслуживаться будет только один член этой группы, остальные просто его сопровождают. Пример - семья, стоящая в кассу кинотеатра. Места в кинозале выбирают все члены семьи, билеты же покупает только глава семьи. Соответственно, тратится время на обслуживание только одного пешехода, но стоящие вместе с ним сопровождающие лица могут создавать скопления.
  • Обслуживается один член группы, остальные ждут в области ожидания - В сервисе обслуживается (и соответственно, стоит в очереди к нему) только один член группы. Остальные члены группы ждут в стороне, в заданной для них области ожидания (имя этой области нужно указать в свойстве Область ожидания соответствующего объекта PedService). Пример - экскурсионная группа, приобретающая билеты в музей. В очереди в кассу стоит только гид группы, экскурсанты организованно ждут его в стороне.
Имя: serviceGroupBehavior Изменить значение: set_serviceGroupBehavior(новое значение)
Возможные значения:
PedSource.SGB_ONE_MEMBER_IS_SERVED_OTHERS_WAIT_IN_QUEUE
PedSource.SGB_ONE_MEMBER_IS_SERVED_OTHERS_WAIT_IN_AREA
Действия
При входе [код]
Код, который выполняется, когда пешеход поступает в объект.
Локальная переменная: ped - пешеход
При начале создания группы [код]
Код, который выполняется в момент начала формирования группы (прихода первого члена этой группы - лидера).
Локальные переменные: PedGroup group - создаваемая в текущий момент группа,
leader - лидер группы.
При окончании формирования группы [код]
Код, который выполняется, когда этот блок покидает последний член группы пешеходов. Код выполняется после Действия при выходе этого пешехода.
Локальные переменные: PedGroup group - только что созданная группа;
leader - лидер группы.
При выходе [код]
Код, который выполняется, когда пешеход покидает объект через порт out.
Локальная переменная: ped - пешеход
При отмене [код]
Код, который выполняется, когда пешеход покидает блок через выходной порт ccl.
Локальная переменная: ped - пешеход
При извлечении [код]
Код, выполняемый, когда пешеход умышленно извлекается из блока посредством вызова функции пешехода remove(). Этот код вызывается автоматически после вызова функции remove().
Локальная переменная: ped - пешеход

Функции

long countPeds() - Возвращает количество пешеходов, покинувших объект.

long сountGroups() - Возвращает количество сформированных этим блоком групп (включая и собираемую в текущий момент времени группу).

void cancel(Agent ped) - Заставляет заданного пешехода немедленно покинуть блок через порт ccl. Этот пешеход не будет добавлен в группу. Для пешехода выполняется код параметра Действие при отмене.

void cancelAll() - Заставляет всех пешеходов немедленно покинуть объект через порт ccl. Эти пешеходы не будут добавлены в группу. Для каждого пешехода выполняется код параметра Действие при отмене.

int size() - Возвращает количество пешеходов, ожидающих формирования (или воссоединения) групп.

Порты

in
Входной порт.
out
Выходной порт.
ccl
Выходной порт, через который пешеходы покидают объект в случае события "отмены" (возникшего в результате вызова метода cancel или метода cancelAll).