/IntelliLight

IntelliLight: A Reinforcement Learning Approach for Intelligent Traffic Light Control

Primary LanguagePython

IntelliLight: A Reinforcement Learning Approach for Intelligent Traffic Light Control

This repository is provided as-is, further updates are included in LibSignal, which supports flexible and cross-platform (CityFlow and SUMO) training and testing in PyTorch. We also actively looking for contributions for LibSignal, feel free to reach out if you would love to contribute to the project!

We've also investigated traffic signal control problems in multi-intersection control scenarios. If you are interested, please refer to PressLight and CoLight. For a more comphrehensive view on RL-based traffic signal control, you can visit this project homepage.

Introduction

This project has been published as the following conference paper:

Hua Wei*, Guanjie Zheng*, Huaxiu Yao, Zhenhui Li, IntelliLight: A Reinforcement Learning Approach for Intelligent Traffic Light Control, in Proceedings of the 2018 ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD'18), London, UK, August 2018.

(*Co-First author.)

The full paper and demo can be found at the author's website.

This project proposes a reinforcement learning based intelligent traffic light control system. Simply run the runexp.py to run the experiment. Please change the parameters in conf/ folder and runexp.py correspondingly if needed. Also, please specify the location of TraCI module in map_computor.py if necessary.

Before running above codes, you may need to install following packages or environments:

  • Python 3.6
  • SUMO 0.32 with TraCI module. Please specify TraCI location correpsondingly in map_computor.py
  • Keras 2.2.0 and Tensorflow 1.9.0

Files in the folder

The files are functioning like this:

  • runexp.py

    Load the experiment setting, and call traffic_light_agent.

  • traffic_light_dqn.py

    Simulate the reinforcement learning agent. This file simulates the timeline, get current state from sumo_agent, get current state from sumo_agent and call the agent to make decision.

  • sumo_agent.py

    Interact with map_computor to get state, reward from the map_computor, and convey action to map_computor.

  • map_computor.py

    Read data from SUMO and operate SUMO.

  • agent.py

    Abstract class of agent.

  • network_agent.py

    Abstract class of neural network based agent.

  • deeplight_agent.py

    Class of our method.

  • conf/

    Configuration files.

  • data/

    Traffic flow files. The intersection is connected with four road segments of 300-meters long.

If you are new to SUMO, hope these slides can help you with a good start (http://personal.psu.edu/hzw77/posts.html#sumo-introduction).

Citation

@inproceedings{wei2018intellilight,
  title={IntelliLight: A Reinforcement Learning Approach for Intelligent Traffic Light Control},
  author={Wei, Hua and Zheng, Guanjie and Yao, Huaxiu and Li, Zhenhui},
  booktitle={Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery \& Data Mining},
  pages={2496--2505},
  year={2018},
  organization={ACM}
}