This project describes a control system for a parking lot, based on reinforcement learning, where an AI can take control of the customer's car and dispach/retrieve it to/from a designated parking spot.
Here you can find the training simulation, working on pygame. The training method used is a multi-agent version of the A3C model, based on the implementation by Jaromír Janisch avalaible here. A pretraining program, based on an A* search, is also included: it finds optimal paths to/from parking spots for a car, and uses the accumulated experience to train the same neural network used in the main program.
Check the linked images for a description of the threaded structure of the code and of the architecture of the neural network
- conda create --name myenv python=3.6.3
- conda activate myenv
- pip install -r requirements.txt
- python A_star_pretrain.py -- runs the pretraing based on A* search (takes long time)
- python A_star_pretrain.py --test -- pretrains with the first parking only for testing (1 minute)
- python main.py -- runs the A3C training simulation ( hyperparameters tuning can be performed changing the variables in cfg.py)