PedGroupAssemble


Формирует группы из последовательно поступающих на входной порт объекта пешеходов. Поддерживается три режима создания групп: по достижению заданного размера группы, по истечению заданного времени создания группы или по истечению максимально допустимого времени прихода пешеходов.

Также может использоваться для явного воссоединения группы. Это требуется тогда, когда группа пешеходов проходит через какой-то блок диаграммы процесса, не поддерживающий группы, а обрабатывающий каждого пешехода по отдельности (например, PedService). Такие пешеходы будут ждать прихода всех членов их группы в заданной Вами области ожидания. По приходу всех членов группы они проследуют дальше уже вновь в виде цельной группы пешеходов. Группы воссоединяются независимо друг от друга, в это же время объект может производить также и формирование новой группы пешеходов.

Пример использования блока для воссоединения группы. Экскурсионная группа проходит через турникеты в музее. Ее лидер обговаривает место, в котором все туристы должны собраться после прохождения турникетов. Только после того, как все члены группы соберутся вместе в назначенном месте встречи, группа туристов сможет продолжить движение дальше.

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

Параметры класса

Класс пешехода
Класс пешехода, проходящего сквозь объект. Он должен быть унаследован от класса Ped. Вы используете собственный класс для создания пешеходов, то рекомендуем Вам указать его здесь, чтобы иметь возможность явно обращаться к собственным полям этого класса в динамических параметрах. В противном случае собственные поля класса будут недоступны.
Синтаксис T extends Ped
Значение по умолчанию Ped

Порты

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

Параметры

Группа создается
Определяет, что будет являться критерием завершения создания группы: будет ли создаваться группа с заданным числом человек, или в течение заданного времени, или создание группы будет завершаться, если время между приходами пешеходов превзойдет заданное максимальное значение (пока соблюдается интенсивность).
Синтаксис: int groupingMode
Локальная переменная: T ped - пешеход.
Значение по умолчанию: с заданным числом человек
Число человек в группе [динамический]
[Виден, если Группа создается с заданным числом человек] Число человек в группе.
Если, например, Вы оставите значение по умолчанию, то будут создаваться группы из двух и из трех человек (с равными вероятностями). 
Синтаксис: int groupSize
Значение по умолчанию: uniform_discr( 2, 3 )
Время формирования группы [динамический]
[Виден, если Группа создается в течение заданного времени] Время, в течение которого будет собираться группа. Когда этот таймаут истечет, формирование группы будет закончено, и начнется формирование новой группы.
Синтаксис: double groupInterarrivalTime
Значение по умолчанию: exponential(300/hour())
Макс. время между прибытиями для одной группы  [динамический]
[Виден, если Группа создается пока соблюдается интенсивность] Максимальное время между прибытиями пешеходов в одной группе. Если время между прибытиями превзойдет заданное здесь значение, то формирование одной группы будет завершено и начнется формирование новой.
Синтаксис: double minimumGapBetweenGroups
Значение по умолчанию: 2*second()
Область ожидания (PedArea)
Объект PedArea, задающий область, в которой пешеходы будут ждать, пока группа не будет сформирована.
Синтаксис: PedArea waitingArea
Форма группы
Форма группы пешеходов: толпашеренгацепочка, или другая (в последнем случае форма задается ломаной, имя которой указывается в поле Другая форма (ломаная).
Синтаксис: int form
Значение по умолчанию: толпа
Другая форма (ломаная)
[Виден, если Форма группы другая] Ломаная, задающая форму группы. Точки ломаной обозначают желаемые места расположения пешеходов в группе.
Синтаксис: ShapePolyline customForm
Значение по умолчанию: null
Группа будет ждать "застрявших" пешеходов
Если опция выбрана (true), то все пешеходы из группы будут ждать, если какой-то пешеход из их группы "застрянет" из-за возникших сложностей с конфигурацией стен и/или чрезмерной плотностью движения пешеходов. 
Синтаксис: boolean waitForStalledPed
Значение по умолчанию: false
Отмена для пешехода распространяется на группу
Если опция выбрана (true), то при отмене какой-либо команды (например, "ждать" или "перейти") для одного пешехода из группы эта команда будет отменена и для всех остальных членов этой группы. 
Синтаксис: boolean solidCancelling
Значение по умолчанию: true
Действие при входе [динамический]
Код, который выполняется, когда пешеход поступает в объект.
Синтаксис void onEnter
Локальная переменная: T ped - пешеход
Действие при выходе первого члена группы [динамический]
Код, который выполняется, когда этот объект покидает первый член группы пешеходов.
Код выполняется перед Действием при выходе этого пешехода.
Синтаксис: void onGroupExitBegin
Локальные переменные: T ped - пешеход
             Group group - создаваемая в текущий момент группа.
Действие при выходе [динамический]
Код, который выполняется, когда пешеход покидает объект через порт out.
Синтаксис void onExit
Локальная переменная: T ped - пешеход
Действие при выходе последнего члена группы [динамический]
Код, который выполняется, когда этот объект покидает последний член группы пешеходов.
Код выполняется после Действием при выходе этого пешехода.
Синтаксис: void onGroupExitEnd
Локальные переменные: T ped - пешеход
             Group group - только что созданная группа.
Действие при отмене [динамический]
Код, который выполняется, когда пешеход покидает блок через выходной порт ccl.
Синтаксис void onCancel
Локальная переменная: T ped - пешеход

Функции

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

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

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

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