Skip to content

moevm/Car-Traffic-RL-Scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Car-Traffic-RL-Scheduler

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запуск через 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

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •