------------------------------------------------- SC42050 Knowledge-based control systems ------------------------------------------------- REPRODUCIBILITY ASSIGNMENT - A Reinforcement Learning-Based Architecture for Fuzzy Logic Control The code related to the reproducibility assignment is collected in the Python files in this repository. System requirements: Python 3.x (might be compatible with Python 2.7, but it's not tested) Dependencies: - gym - numpy - scipy - matplotlib The following executables are related to the controllers and tests performed on them: - run_ARIC.py : Code related to the training of the ARIC controller NOTE: ARIC learning is unstable. Sometimes works and sometimes the random initial weights lead to dead-end solutions where the learning gets stuck, as described in the report. If the controller does not learn in the first 10 attempts, just re-run the file. - run_LQR.py : Code related to the testing of the LQR controller - run_Q_agent.py : Code related to the training of the Q-learning controller - run_sensitivity : Code related to the sensitivity test performed on the ARIC The following files contain functionality imported by the executables above: - ARIC_model.py : The actual implementation of the ARIC controller as described by Berenji - membership_functions.py : Definitions of the membership functions for ARIC inputs and outputs - fuzzy_set.py : Handy class for representing and working with fuzzy functions - pole_cart.py : Own implementation of the pole-cart model - utils.py : Small handy functions that reduce clutter code in the implementations