AnyLogic поддерживает моделирование движения групп пешеходов. Вы можете собирать пешеходов в группы, менять формы групп и расформировывать группы с помощью специальных объектов Пешеходной библиотеки.
Группы могут формироваться объектами потоковой
диаграммы
PedSource,
PedEnter и
PedGroupAssemble.
PedSource
создает пешеходов, а также может использоваться и для сборки групп.
PedEnter
принимает созданных где-то извне потоковой диаграммы пешеходов (например, созданных объектом Основной библиотеки Source)
в своем входном порту и добавляет их в моделируемую пешеходную среду (в
указанное место). Этот объект может также использоваться для
формирования групп из последовательно поступающих во входной порт
объекта пешеходов.
PedGroupAssemble формирует группы из последовательно поступающих во входной порт объекта пешеходов.
Также этот объект используется для повторной сборки групп,
которые были разъединены объектами, не поддерживающими работу с
группами пешеходов (например, PedService):
в таком случае пешеходы ждут в заданной области и по прибытии всех членов группы вновь собираются в первоначальную группу.
Вы можете выбрать, хотите ли Вы, чтобы группа собиралась:
Группа пешеходов может иметь одну из следующих форм: толпа, шеренга, цепочка, или другая. В последнем случае форма задается ломаной. Точки такой ломаной обозначают желаемые места расположения пешеходов в группе.
Форма группы задается при формировании группы и может быть изменена впоследствии с помощью объекта
PedGroupChangeForm.
Этот объект изменяет форму группы на другую, заданную этим объектом. Форма
группы будет изменена при прохождении через объект лидера этой группы.
Расформирование групп производится объектом потоковой диаграммы
PedGroupDisassemble. Группа будет расформирована при
поступлении в объект ее лидера. При этом пешеходы станут независимыми и
смогут двигаться каждый в свою сторону.
Демо модель: Pedestrian Groups
Чтобы итеративно пройти в цикле по всем пешеходам группы (и произвести над ними определенные действия), используйте цикл наподобие следующего:
for (Ped ped : group) { }
Также есть ряд методов для работы с содержимым группы пешеходов:
int size() - Возвращает количество пешеходов в данной группе.
void disassemble() - Производит расформирование группы, удаляет всех пешеходов из группы, при этом пешеходы станут независимыми и смогут двигаться каждый в свою сторону. Группа уничтожается.
void add( Ped ped ) - Добавляет заданного пешехода (ped) в эту группу.
void remove( Ped ped ) - Удаляет заданного пешехода (ped) из этой группы.Ped
get( int index )
- Возвращает пешехода, который хранится в группе под заданным индексом index. Нумерация пешеходов в группе начинается с нуля 0; индекс лидера группы равен 0.
Ped getLeader()- Возвращает
лидера группы. Обратите внимание, что лидер группы выбирается может
поменяться в любой момент движения группы, поэтому пользователь
не должен полностью полагаться на значение, возвращаемое этим методом.
Примеры использования этого метода:
- действие, которое нужно произвести единожды для группы, например, когда объект PedGroupAssemble
покидает пешеход, являющийся лидером группы: ped.getGroup().getLeader()
== ped
- выбор группы путем выбора ее лидера: pedConfiguration.select(group.getLeader()
void setFormation( GroupFormation formation ) - Задает новую форму для группы.
int getId() - Возвращает уникальный идентификатор группы.