Skip to content

moevm/Car-Traffic-RL-Scheduler

Repository files navigation

Car-Traffic-RL-Scheduler

Описание

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

Для работы с дорожным трафиком использовался симулятор SUMO (https://github.com/eclipse-sumo/sumo) версии 1.23.0.

Генерация дорожного трафика

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

Формирование светофорных групп

Формирование светофорных групп реализовано с помощью комбинации иерархической кластеризации и алгоритма k-medoidsл. Светофорам, которые не вошли в светофорные группы, назначается статическое управление

Среда для обучения

Пространство наблюдений для одного светофорного объекта состоит из следующих признаков:

  • Плотность автомобилей на каждой из двух полос
  • Заполненность каждой полосы автомобилями, которые находятся в пробке
  • Номер текущей светофорной фазы
  • Текущая длительность фазы
  • Сигнал о том, текущая длительность фазы меньше 15 секунд, больше 60 секунд или находится в промежутке от 15 до 60 секунд
  • Текущее количество пропущенных автомобилей через перекрёсток
  • Среднее расстояние автомобилей на полосах до перекрёстка, который регулируется данным светофором
  • Среднеквадратическое отклонение расстояния автомобилей на полосах до перекрёстка, который регулируется данным светофором
  • Средняя скорость автомобилей на полосах до перекрёстка, который регулируется данным светофором
  • Среднеквадратическое отклонение скорости автомобилей на полосах до перекрёстка, который регулируется данным светофором

Полное пространство наблюдений состоит из 4 светофоров.

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

Награда для одного светофорного объекта состоит из следующей суммы:

  • Суммарное время ожидания автомобилей на полосах, прилегающих к контролируемому перекрёстку
  • Количество пропущенных автомобилей за последний шаг

Награда за светофорную группу рассчитывается суммированием награды для каждого светофорного объекта.

Запуск через Docker

  1. Склонируйте репозиторий с помощью следующей команды:
https://github.com/moevm/Car-Traffic-RL-Scheduler.git
  1. Перейдите в директорию с приложением:
cd Car-Traffic-RL-Scheduler
  1. Запустите скрипт run-docker.sh, который сделает образ приложения, а затем запустит контейнер на основе данного образа в режиме обучения:
sh run-docker.sh train.sh
  1. Если Вам необходимо запустить систему в режиме оценки обученного агента, то запустите контейнер следующих образом:
sh run-docker.sh evaluate.sh

Запуск без Docker

  1. Склонируйте репозиторий следующим образом:
git clone https://github.com/moevm/Car-Traffic-RL-Scheduler.git
  1. Перейдите в директорию с кодом проекта:
cd Car-Traffic-RL-Scheduler/src
  1. Создайте переменную окружения и активируйте её:
python3 -m venv .venv && source .venv/bin/activate
  1. Установите необходимые зависимости:
pip -r requirements.txt
  1. Сгенерируйте карту с помощью netgenerate из пакета SUMO так, чтобы каждый светофорный объект имел не более 6 фаз, каждый узел имел от 1 до 4 соседей включительно и каждое ребро имело 2 полосы в одном направлении. Сгенированная карта должна храниться в директории configs.

  2. Сгенерируйте конфигурационный файл в папку configs/simulation_parameters помощью simulation_parameters_generator.py. Справку можно просмотреть с помощью следующей команды:

python3 simulation_parameters_generator.py --help
  1. Запустите обучение или оценку агента с помощью main.py. Справку можно просмотреть с помощью следующей команды:
python3 main.py --help

About

Project includes RL-Agent for env: https://sumo.dlr.de/docs/index.html

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •