AnyLogic
Развернуть
Размер шрифта

PedElevator

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

Сам лифт рисуется с помощью специальной фигуры разметки пространства лифт.

Демо-модель: Pedestrian Elevator Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Нюансы поведения в исключительных ситуациях

Поведение в момент поломки

Пешеходы, вошедшие в блок и движущиеся к лифту, продолжают движение к лифту и останавливаются около него. Ожидание может быть прервано при помощи функций блока cancel(), cancelAll(), remove().

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

Пешеходы внутри лифта продолжают находиться в нем. Могут быть высвобождены при помощи функции remove().

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

Автоматическое извлечение пешеходов из блока при поломке лифта не предусмотрено.

Демо-модель: Elevator Failure Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Поведение в момент починки

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

Перемещение групп пешеходов

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

Параметры

Лифт
Здесь вам нужно будет указать имя фигуры разметки пространства Лифт, графически задающей лифт, в котором пешеходы будут перемещаться на другой этаж. Этот лифт должен иметь возможность обслуживать пешеходов с того уровня, на котором они находятся.
Тип значения: Elevator
Локальная переменная: ped — пешеход
Пешеход перемещается
Здесь вы можете выбрать, будут ли пешеходы перемещаться лифтом автоматически (выбранный по умолчанию и рекомендуемый к использованию режим) или и посадка пассажиров в лифт, и их выход из лифта, и движение лифта будут инициироваться пользователем путем вызова соответствующих функций фигуры разметки Лифт (при выборе опции с помощью функций лифта).
Возможные значения:
ElevatorTransferMode.TRANSFER_MODE_AUTOMATIC — автоматически
ElevatorTransferMode.TRANSFER_MODE_MANUAL — с помощью функций лифта
Значение по умолчанию: автоматически
Локальная переменная: ped — пешеход
Перемещается на уровень
[Параметр виден, если выбрана опция Пешеход перемещается: автоматически]
Уровень, на который перемещается пешеход с помощью лифта. Этот уровень должен обслуживаться заданным лифтом (в свойствах этой фигуры Лифт должна быть или выбрана опция Обслуживает: Все уровни, или в списке обслуживаемых уровней должен присутствовать уровень, заданный в данном свойстве блока). Если пользователь направит пешехода на тот же уровень, на котором он находится в данный момент, то пешеход мгновенно пройдет через блок PedElevator, не вызывая лифт и не подходя к области ожидания.
Тип значения: Level
Локальная переменная: ped — пешеход
Разрешить уход по таймауту
Если опция выбрана (true), то пешеходы могут покидать блок по истечении заданного таймаута. После проведения в блоке максимально допустимого времени пешеходы будут покидать блок через специальный порт outT.
Синтаксис: boolean enableTimeout
Задать новое значение динамически: set_enableTimeout(новое значение)
Таймаут
[Параметр виден, если выбрана опция Разрешить уход по таймауту]
Значение таймаута (или выражение, возвращающее значение таймаута), по истечении которого пешеход прекратит ожидание лифта.
Тип значения: double
Значение по умолчанию: 100 секунд
Локальная переменная: ped — пешеход

Действия

При входе
Код, который выполняется, когда пешеход поступает в блок.
Локальная переменная: ped — пешеход
При начале ожидания
Код, который выполняется, когда пешеход доходит до точки, в которой он будет ждать лифт. Если пешеход не останавливается для ожидания, то этот код не выполняется.
Локальная переменная: ped — пешеход
При входе в лифт
Код, который выполняется, когда пешеход входит в лифт.
Локальные переменные: ped — пешеход
Level level — уровень
При выходе из лифта
Код, который выполняется, когда пешеход выходит из лифта на нужном ему уровне.
Локальные переменные: ped — пешеход
Level level — уровень
При выходе
Код, который выполняется, когда пешеход покидает блок через выходной порт out в случае успешного перемещения на лифте на другой уровень.
Локальная переменная: ped — пешеход
При выходе по таймауту
[Поле видно, если выбрана опция Разрешить уход по таймауту] Код, который выполняется, когда пешеход покидает блок через выходной порт outTimeout вследствие слишком долгого ожидания лифта и истечения заданного таймаута ожидания.
Локальная переменная: ped — пешеход
При отмене
Код, который выполняется, когда пешеход покидает блок через выходной порт ccl (аварийный сценарий) в результате вызова функции блока cancel() или cancelAll().
Локальная переменная: ped — пешеход
При извлечении
Код, который выполняется, когда пешеход умышленно извлекается из блока посредством вызова функции remove(). Этот код автоматически выполняется после вызова функции remove().
Локальная переменная: ped — пешеход

Функции

Статистика по пешеходам
Функция Описание
int size() Возвращает количество пешеходов, находящихся внутри этого блока.
int elevatorQueueSize() Возвращает количество пешеходов, ожидающих лифт внутри этого блока.
long countPeds() Возвращает количество всех прошедших через блок пешеходов.
long countPedsTimeout() Возвращает количество пешеходов, покинувших блок вследствие истечения таймаута ожидания лифта.
Пешеходы в блоке
Функция Описание
Set<Agent> getPeds() Возвращает неизменяемую коллекцию, содержащую пешеходов, находящихся в этом блоке.
boolean contains(Agent ped) Возвращает true, если указанный пешеход ped находится внутри блока.
Отмена операции / извлечение пешеходов из блока
Функция Описание
void cancel(Agent ped) Прерывает команду для заданного пешехода и заставляет его покинуть блок через порт ccl. При этом вызывается код параметра Действие при отмене. Функция может быть вызвана, только если данный пешеход еще не зашел в лифт, иначе возникнет ошибка.
void cancelAll() Прерывает выполнение команды для всех еще не зашедших в лифт пешеходов и заставляет их покинуть блок через порт ccl. Для каждого пешехода, покидающего блок, вызывается код параметра Действие при отмене. Функция может быть вызвана, только если пешеходы еще не зашли в лифт, иначе возникнет ошибка.
Agent remove(Agent agent) Удаляет указанного агента-пешехода из блока (вне зависимости от того, на какой стадии процесса находится пешеход), а также удаляет его из пространства (или лифта), в котором агент-пешеход находится в данный момент. Возвращает null, если пешеход не находится внутри блока. Удаленный пешеход может быть добавлен обратно в диаграмму процесса с помощью блока PedEnter.

Порты

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

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

Как мы можем улучшить эту статью?