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

Traffic Light

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

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

Элемент Библиотеки дорожного движения Traffic Light может контролировать движение транспорта на указанных перекрестках или стоп-линиях.

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

Параметры

Задает режим работы для
Опция определяет элементы разметки, для которых светофор задает режим работы:
Стоп-линий перекрестка — светофор будет контролировать движение транспорта у стоп-линий перекрестка, который пользователь может указать в поле Перекресток, расположенном ниже. Затем необходимо настроить график работы светофора, указав в таблице Фазы цвет фаз (красная/желтая/зеленая) и их длительность. Этот режим используется, когда светофор контролирует (запрещает/разрешает) движение транспорта сразу на всех полосах каждой дороги, присоединенной к этому перекрестку. Используйте опцию Соединителей полос перекрестка, когда движение на определенных полосах дороги необходимо разрешить, а на других полосах этой же дороги запретить.
Соединителей полос перекрестка — используйте эту опцию, чтобы контролировать движение на перекрестке, где у полос одной дороги могут быть разные фазы (красная / зеленая). Перекресток необходимо указать в поле Перекресток, расположенном ниже. Затем необходимо настроить график работы светофора, указав в таблице Фазы цвет фаз (красная/желтая/зеленая) и их длительность.
Заданных стоп-линий — светофор будет контролировать движение транспорта у заданных стоп-линий. Этот режим обычно используется для моделирования пешеходных переходов. В этом случае вы рисуете стоп-линию и определяете поведение транспорта у нее, задавая фазы (красная/желтая/зеленая) и их продолжительность в таблице Фазы, расположенной ниже.
Перекресток
[Параметр виден, если выше выбрана опция Задает режим работы для: Стоп линий перекрестка или Соединителей полос перекрестка]
Перекресток, контролируемый этим светофором. Если в дорожной сети нет указанного перекрестка или Перекресток не указан, будет показано сообщение об ошибке.
Тип значения: Intersection
Фазы
Задает поведение у стоп-линии. Подробный пример задания режима работы светофора на перекрестке описан здесь.

Действия

При смене фазы
Здесь вы можете задать код, который будет выполняться при смене фазы светофора, а также при включении / выключении светофора с помощью вызова функций turnOn(...) / turnOff().
Локальная переменная: int currentPhaseIndex — текущая фаза светофора (после смены на следующую фазу)

Функции

Функция Описание
boolean isOn() Возвращает true, если светофор работает, false в противном случае.
turnOn() Включает светофор.
turnOff() Выключает светофор.
turnOn(double offset) Включает светофор с задержкой в единицах модельного времени.

offset — задержка в единицах модельного времени
turnOn(double offset, TimeUnits units) Включает светофор с задержкой в указанных единицах модельного времени. К примеру, вызов функции turnOn(1, MINUTE) включит светофор через 1 минуту от текущего времени.

offset — задержка в указанных единицах модельного времени
units — константа единиц измерения времени
switchToNextPhase() Включает следующую фазу светофора. Типичный пример использования: текущая фаза бесконечна и ее необходимо переключить.
double getCurrentPhaseDuration() Возвращает длительность текущей фазы в единицах модельного времени или -1 если светофор выключен.
double getCurrentPhaseDuration(TimeUnits units) Возвращает длительность текущей фазы в указанных единицах измерения времени. К примеру, если длительность текущей фазы составляет 30 секунд, вызов функции getCurrentPhaseDuration(MINUTE) вернет 0.5. Если светофор выключен, функция вернет -1.

units — константа единиц измерения времени
double getCurrentPhaseElapsedTime() Возвращает время, прошедшее от начала текущей фазы в единицах модельного времени или -1 если светофор выключен.
double getCurrentPhaseElapsedTime(TimeUnits units) Возвращает время, прошедшее от начала текущей фазы в указанных единицах измерения времени. К примеру, если прошло 15 секунд, то вызов функции getCurrentPhaseElapsedTime(MINUTE) вернет 0.25. Если светофор выключен, функция вернет -1.

units — константа единиц измерения времени
double getCurrentPhaseRemainingTime() Возвращает оставшееся время до конца текущей фазы в единицах модельного времени или -1 если светофор выключен.
double getCurrentPhaseRemainingTime(TimeUnits units) Возвращает оставшееся время до конца текущей фазы в указанных единицах измерения времени. К примеру, если оставшееся время составляет 15 секунд, то вызов функции getCurrentPhaseRemainingTime(MINUTE) вернет 0.25. Если светофор выключен, функция вернет -1.

units — константа единиц измерения времени
int getPhasesNumber() Возвращает количество фаз.
int getCurrentPhaseIndex() Возвращает индекс текущей фазы (нумерация начинается с нуля) или -1 если светофор выключен.
double getPhaseDuration(int index) Возвращает длительность фазы по ее индексу в единицах модельного времени.

index — индекс фазы (0, 1, 2, ...)
double getPhaseDuration(int index, TimeUnits units) Возвращает длительность фазы по ее индексу в заданных единицах измерения времени. К примеру, чтобы получить длительность второй фазы в секундах, необходимо вызвать функцию getPhaseDuration(1, SECOND).

index — индекс фазы (0, 1, 2, ...)
units — константа единиц измерения времени
List<List<TrafficLightSignal>> getPhaseSignals() Возвращает список списков, где каждый список содержит фазы для одной стоп-линии в том порядке, в котором они были заданы.
TrafficLightSignal getCurrentSignal(StopLine stopLine) Возвращает текущий сигнал для указанной стоп-линии. Возвращает null, если светофор выключен или если он не контролирует эту стоп-линию.

stopLine — указанная стоп-линия
TrafficLightSignal getCurrentSignal(RoadLanesConnector roadLaneConnector) Возвращает текущий сигнал для указанного коннектора дорожных полос или null, если светофор выключен или если он не контролирует этот коннектор дорожных полос.

roadLaneConnector — указанный коннектор дорожных полос
List<Agent> getSignalElements() Возвращает список контролируемых стоп-линий или соединителей полос.
setRoadNetwork(RoadNetwork roadNetwork) Задает дорожную сеть.

roadNetwork — дорожная сеть, которой принадлежит созданный светофор
RoadNetwork getRoadNetwork() Возвращает дорожную сеть, которой принадлежит контролируемый светофором элемент разметки.
Как мы можем улучшить эту статью?