PedServices


Объект PedServices задает группу одинаковых физических объектов обслуживания (например, несколько турникетов или автоматов по продаже билетов). Объект позволяет задавать очереди и сервисы в любой комбинации и задавать правила выбора сервисов – какую очередь выбрать, какой сервис выбрать, к какой очереди должен обращаться сервис, может ли сервис обслуживать несколько очередей и т.д.). Используйте этот объект, чтобы создавать ряды сервисов и задавать их параметры по умолчанию.

К сервисам, заданным этим объектом, можно обращаться с помощью объекта PedService. Значения параметров, заданные по умолчанию в этом объекте, будут применены ко всем ссылающимся на него объектам блок-схемы PedServices. Если Вам нужно определить некоторый набор собственных сервисных параметров, используйте объект PedCmdService для задания самого сервиса и объект PedCmdQueue для задания очереди к этому сервису.

Существует два типа сервисов: Протяженные и Точечные

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

Когда пешеход направляется к конкретному сервису, этот сервис назначается этому пешеходу и становится недоступным (занятым) для остальных пешеходов. Пешеход перемещается в начальную точку линии и начинается ожидать там в течение заданного времени обслуживания. Затем пешеход перемещается в конечную точку линии. Фаза восстановления сервиса начинается, когда пешеход заканчивает процедуру обслуживания (если ожидание выхода пешехода из сервиса отключено) или проходит конечную точку линии (если ожидание выхода пешехода из сервиса включено). Продолжительность фазы восстановления зависит от задержки восстановления. После восстановления сервис становится свободным и готов принимать новых пешеходов.

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

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

Пожалуйста, обратите внимание, что рисуя с помощью ломаной очередь, ведущую к сервису, начальную точку этой ломаной (задающую начало очереди) нужно помещать рядом с сервисом (иначе может возникнуть некоректная ситуация, см. здесь). 

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

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

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

Параметры

Сервисы (группа линий)
Группа, содержащая фигуры (линии), задающие сервисы.
Синтаксис ShapeGroup services
Задержка на восстановление [динамический]
Время восстановления сервиса после обслуживания пешехода, в течение которого он остается недоступным, задается в секундах.
Синтаксис double recoveryTime
Локальная переменная T ped - пешеход.
Значение по умолчанию: 0.0
Тип сервиса
Тип сервиса. Используйте Протяженный сервис, если Вам нужно, чтобы пешеходы двигались от начальной точки линии сервиса к конечной. Используйте Точечный сервис, если пешеходы должны просто провести определенное время в какой-то точке сервиса.
Синтаксис int serviceType
Значение по умолчанию: Точечный
Время задержки [динамический]
Задержка сервиса, задается в единицах модельного времени. Время, в течение которого пешеход стоит у точки входа в сервис Протяженного типа, или в точке Точечного сервиса.
Синтаксис double delay
Локальная переменная T ped - пешеход.
Значение по умолчанию uniform(2.0*second(), 3.0*second())
Ждать, пока пешеход покинет сервис
[Виден, если Тип сервиса Протяженный] Если опция выбрана (true), то сервис не начнет обслуживание нового пешехода, пока обслуживаемый в данный момент пешеход не дойдет до конечной точки линии или ломаной этого протяженного сервиса.
В качестве примера сервиса с таким дополнительным требованием можно привести контроль безопасности (кабинки проверки документов) в аэропорту, а в качестве сервиса без такого ограничения - турникеты.
Синтаксис boolean waitForPedToExit
Значение по умолчанию false
Очереди (группа линий, ломаных)
Группа, содержащая линии и ломаные, задающие геометрию очередей.
Синтаксис Group queues
Правило выбора очереди
Правило выбора очереди – задает, должен ли пешеход выбрать Самую короткую очередь, Ближайшую очередь, или пользователь должен в Ручном режиме задать очередь индивидуально для каждого пешехода в параметре Выбрать очередь (линия, ломаная) .
Синтаксис int queueChoicePolicy
Значение по умолчанию Самая короткая очередь
Выбрать очередь (линия, ломаная) [динамический]
[Виден, если параметр Правило выбора очереди установлен в Ручной режим] Фигура очереди, которую выберет пешеход, ожидая обслуживания.
Синтаксис Shape chooseQueue
Локальная переменная T ped - пешеход.
Обслуживается
Определяет, будет ли сервис обслуживать пешеходов из Самой длинной очереди, Ближайшей очереди, или пользователь должен самостоятельно в Ручном режиме выбрать очередь, из которой нужно обслуживать пешехода, используя параметр Обслуживать очередь (линия, ломаная).
Синтаксис int servePedsFrom
Значение по умолчанию Ближайшая очередь
Обслуживать очередь (линия, ломаная)  [динамический]
[Виден, если параметр Обслуживать пешеходов из установлен в Ручной режим] Фигура, задающая очередь, из которой сервис будет выбирать пешеходов для обслуживания.
Синтаксис Shape serveQueue
Локальная переменная  T ped - пешеход.
Сервис обслуживает несколько очередей
[Виден, если сервис будет Обслуживать пешеходов из Ближайшей очереди] Если опция выбрана (true), то сервис будет обращаться к другим очередям в том случае, если ближайшая очередь пуста.
Синтаксис boolean ServicePollsMultipleQueues
Значение по умолчанию false
Разрешить двунаправленные сервисы
Если опция выбрана (true), то сервисы будут двунаправленными, т.е. пешеходы могут проходить сервисы в обоих направлениях.
Синтаксис boolean enableReverse
Значение по умолчанию false
Обратные очереди (группа линий, ломаных)
[Виден, если выбран параметр Разрешить двунаправленные сервисы] Группа, содержащая линии или ломаные, задающие расположение и внешний вид очередей для пешеходов, проходящих сервисы в обратном направлении.
Синтаксис Group reverseQueues
Точность достижения сервиса, в метрах [динамический]
Задает расстояние в метрах, на которое пешеход должен приблизиться к сервису, чтобы началось его обслуживание.
В случае линии или ломаной подразумевается расстояние до любой ее точки.
Синтаксис double serviceReachTolerance
Локальная переменная: T ped - пешеход
Значение по умолчанию 0.1

Функции

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

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

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

int sizeService() - Возвращает количество пешеходов, находящихся внутри сервисов, заданных в данном объекте.

boolean isServiceIdle() - Возвращает true, если хотя бы один сервис свободен.

int getNumberServices() - Возвращает количество сервисов, задаваемых этим объектом.

int getNumberQueues() - Возвращает количество очередей, задаваемых этим объектом.