Моделирует светофор — устройство, предназначенное для регулирования движения на автомобильных, пешеходных перекрестках, а также других сложно контролируемых участках дорожного движения.
Демо-модель: 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() | Возвращает дорожную сеть, которой принадлежит контролируемый светофором элемент разметки. |
-
Как мы можем улучшить эту статью?
-