/highenv-Safe-MARL-in-Autonomous-Driving

Safe Multi-Agent Reinforcement Learning to Make decisions in Autonomous Driving

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

Constrained Stackelberg Q-learning and MADDPG

This is a pytorch implementation of Constrained Stackelberg Q-learning(discrete action) and Constrained Stackelberg MADDPG(continuous action). These algorithms are proposed by incorporating the Stackelberg model into Deep Q-learning and MADDPG, and leveraging the Lagrangian multiplier method to deal with the safety constraints. The highway environments used in our experiments are modified from highway-env.

1. Installation

# create conda environment
conda create -n env_name python==3.9
conda activate env_name
pip install -r requirements.txt

2. Quick Start

  • create experiment folder, for example, ./merge_env_result/exp2
  • define train config in ./merge_env_result/exp2/config.py
  • define env config in ./merge_env_result/exp2/env_config.py
  • start training by running the following command
  • new highway environment not supported yet due to version conflict
python main_bilevel.py --file-path ./merge_env_result/exp2

3. Demos

3.1 Safe Highway environment

animated animated

3.2 Safe Merge environment

animated

3.3 Safe Roundabout environment

animated

3.4 Safe Intersection environment

animated

3.5 Safe Racetrack environment

animated

4. Results

4.1 Safe Highway Environment

Reward and Training curve
Alt text

4.2 Safe Merge Environment

Leader reward Follower reward Total reward
Alt text Alt text Alt text
Training curve
Alt text

4.3 Safe Roundabout Environment

Leader reward Follower reward Total reward
Alt text Alt text Alt text
Training curve
Alt text

4.4 Safe Intersection Environment

Leader reward Follower reward Total reward
Alt text Alt text Alt text
Training curve
Alt text

4.5 Safe Racetrack Environment

Leader reward Follower reward Total reward
Alt text Alt text Alt text
Training curve
Alt text

Citation

@misc{safemarl2023bilevel,
  author = {Zheng, Zhi and Gu, Shangding},
  title = {Safe Multi-Agent Reinforcement Learning with Bi-level Optimization in Autonomous Driving},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/SafeRL-Lab/Safe-MARL-in-Autonomous-Driving}},
}