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.
julia> ] add ReinforcementLearning
julia> using ReinforcementLearning
julia> run(
RandomPolicy(),
CartPoleEnv(),
StopAfterNSteps(1_000),
TotalRewardPerEpisode()
)
The above simple example demonstrates four core components in a general reinforcement learning experiment:
-
Policy. The
RandomPolicy
is the simplest instance ofAbstractPolicy
. It generates a random action at each step. -
Environment. The
CartPoleEnv
is a typicalAbstractEnv
to test reinforcement learning algorithms. -
Stop Condition. The
StopAfterNSteps(1_000)
is to inform that our experiment should stop after1_000
steps. -
Hook. The
TotalRewardPerEpisode
structure is one of the most commonAbstractHook
s. It is used to collect the total reward of each episode in an experiment.
Check out the tutorial page to learn how these four components are assembled together to solve many interesting problems. We also write blog occasionally to explain the implementation details of some algorithms. Among them, the most recommended one is An Introduction to ReinforcementLearning.jl, which explains the design idea of this package.
[TODO:]
[TODO:]
-->
ReinforcementLearning.jl
itself is just a wrapper around several other
subpackages. The relationship between them is depicted below:
+-----------------------------------------------------------------------------------+ | | | ReinforcementLearning.jl | | | | +------------------------------+ | | | ReinforcementLearningBase.jl | | | +----|-------------------------+ | | | | | | +--------------------------------------+ | | +---->+ ReinforcementLearningEnvironments.jl | | | | +--------------------------------------+ | | | | | | +------------------------------+ | | +---->+ ReinforcementLearningCore.jl | | | +----|-------------------------+ | | | | | | +-----------------------------+ | | +---->+ ReinforcementLearningZoo.jl | | | +----|------------------------+ | | | | | | +-------------------------------------+ | | +---->+ DistributedReinforcementLearning.jl | | | +-------------------------------------+ | | | +------|----------------------------------------------------------------------------+ | | +-------------------------------------+ +---->+ ReinforcementLearningExperiments.jl | | +-------------------------------------+ | | +----------------------------------------+ +---->+ ReinforcementLearningAnIntroduction.jl | +----------------------------------------+
Are you looking for help with ReinforcementLearning.jl? Here are ways to find help:
- Read the online documentation! Most likely the answer is already provided in an example or in the API documents. Search using the search bar in the upper left.
- Chat with us in Julia Slack in the #reinforcement-learnin channel.
- Post a question in the Julia discourse forum in the category "Machine Learning" and use "reinforcement-learning" as a tag.
- For issues with unexpected behavior or defects in ReinforcementLearning.jl, then please open an issue on the ReinforcementLearning GitHub page with a minimal working example and steps to reproduce.
ReinforcementLearning.jl
is a MIT licensed open source project with its
ongoing development made possible by many contributors in their spare time.
However, modern reinforcement learning research requires huge computing
resource, which is unaffordable for individual contributors. So if you or your
organization could provide the computing resource in some degree and would like
to cooperate in some way, please contact us!
This package is written in pure Julia. Please consider supporting the JuliaLang org if you find this package useful. โค
If you use ReinforcementLearning.jl
in a scientific publication, we would
appreciate references to the CITATION.bib.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!