ReinforcementLearning.jl, as the name says, is a package for reinforcement learning research in Julia.
Our design principles are:
- Reusability and extensibility: Provide elaborately designed components and interfaces to help users implement new algorithms.
- Easy experimentation: Make it easy for new users to run benchmark experiments, compare different algorithms, evaluate and diagnose agents.
- Reproducibility: Facilitate reproducibility from traditional tabular methods to modern deep reinforcement learning algorithms.
Installation
This package can be installed from the package manager in Julia's REPL:
] add ReinforcementLearning
Project Structure
ReinforcementLearning.jl itself is just a wrapper around several other packages inside the JuliaReinforcementLearning org. The relationship between different packages is described below:
+-------------------------------------------------------------------------------------------+ | | | ReinforcementLearning.jl | | | | +------------------------------+ | | | ReinforcementLearningBase.jl | | | +--------|---------------------+ | | | | | | +--------------------------------------+ | | | | ReinforcementLearningEnvironments.jl | | | | | | | | | | (Conditionally depends on) | | | | | | | | | | ArcadeLearningEnvironment.jl | | | +-------->+ OpenSpiel.jl | | | | | POMDPs.jl | | | | | PyCall.jl | | | | | ViZDoom.jl | | | | | Maze.jl(WIP) | | | | +--------------------------------------+ | | | | | | +------------------------------+ | | +-------->+ ReinforcementLearningCore.jl | | | +--------|---------------------+ | | | | | | +-----------------------------+ | | |--------->+ ReinforcementLearningZoo.jl | | | | +-----------------------------+ | | | | | | +----------------------------------------+ | | +--------->+ ReinforcementLearningAnIntroduction.jl | | | +----------------------------------------+ | +-------------------------------------------------------------------------------------------+
ReinforcementLearningAnIntroduction.jl contains some traditional reinforcement algorithms and it is not registered yet. So it is not included in ReinforcementLearning.jl. The reason to do so is to ease the burden of maintainance.