Assignment 3 of the Course Optimization-Based Robot Control held by Andrea Del Prete during Academic Year 2022-2023 (Department of Industrial Engineering (DII)).
The goal of this assignment is to implement the Deep Q-Learning algorithm with a simple continuous time (state-space) 1-pendulumn environment, using discrete control input space. The environment used for implementing this final project made use of Keras which is a framework built on top of TensorFlow.
- saved_models : Folder containing the model's weights got after the training of the NN (to save best performance of the algorithm)
- Papers : Folder containing the text, questions of the assignment and the scientific papers used for both the DQN algorithm implementation and for writing down the final report.
- Tests_plots : Folder containing the different tests/simulations both for the single and double pendulum in order to try to get the optimal hyper-parameters for stabilizing the pendulum around the top position.
- Videos : Folder containing the videos of both Single and Double Pendulum resulting in the best performance we could have been achieved.
- Prova : Folder containing some plots (only for plotting purposes during perfomed tests )
- src : Folder containing the source code developed during the development of the DQN algorithm
- display.py : Connects to gepetto-viewer or webbrowser
- pendulum.py : Creates a continuous state simulation environment for a N-pendulum
- dpendulum.py : Describes a continuous state pendulum environment with discrete control input
- dqn.py : Creates a Deep-Q-Network learning agent
- main_dqn.py: main file for the dqn algorithm applied to the environment pendulum
- network_utils.py: Contains functions for creating the NN
- plot_utils.py: Contains functions for plotting, mainly V table, policy table and the trajectories of state and control