Группы пешеходов

AnyLogic поддерживает моделирование движения групп пешеходов. Вы можете собирать пешеходов в группы, менять формы групп и расформировывать группы с помощью специальных объектов Пешеходной библиотеки.

Сборка групп

Группы могут формироваться объектами потоковой диаграммы  PedSource PedEnter и  PedGroupAssemble

PedSource создает пешеходов, а также может использоваться и для сборки групп.

PedEnter принимает созданных где-то извне потоковой диаграммы пешеходов (например, созданных объектом Основной библиотеки Source) в своем входном порту и добавляет их в моделируемую пешеходную среду (в указанное место). Этот объект может также использоваться для формирования групп из последовательно поступающих во входной порт объекта пешеходов.

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

Вы можете выбрать, хотите ли Вы, чтобы группа собиралась: 

Изменение форм групп

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

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

Расформирование групп

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

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

Методы для работы с группами

Группы пешеходов являются экземплярами класса Group. Вы можете программно работать с группами и их содержимым с помощью методов этого класса.

Чтобы итеративно пройти в цикле по всем пешеходам группы (и произвести над ними определенные действия), используйте цикл наподобие следующего: 

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() - Возвращает уникальный идентификатор группы.