findmyway / ReinforcementLearning.jl

A reinforcement learning package for Julia

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Get Started

julia> ] add ReinforcementLearning

julia> using ReinforcementLearning

julia> run(E`JuliaRL_BasicDQN_CartPole`)

Check out the Get Started page for a detailed explanation. The underlying design decisions and implementation details are documented in this blog.

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 |                          |
|           |     +--------------------------------------+                          |
|           |                                                                       |
|           |     +------------------------------+                                  |
|           +---->+ ReinforcementLearningCore.jl |                                  |
|                 +----|-------------------------+                                  |
|                      |                                                            |
|                      |     +-----------------------------+                        |
|                      +---->+ ReinforcementLearningZoo.jl |                        |
|                            +----|------------------------+                        |
|                                 |                                                 |
|                                 |     +-------------------------------------+     |
|                                 +---->+ DistributedReinforcementLearning.jl |     |
|                                       +-------------------------------------+     |
|                                                                                   |
+-----------------------------------------------------------------------------------+

Scope of Each Package

  • ReinforcementLearningBase.jl Two main concepts in reinforcement learning are precisely defined here: Policy and Environment.
  • ReinforcementLearningEnvironments.jl Typical environment examples in pure Julia and wrappers for 3-rd party environments are provided in this package.
  • ReinforcementLearningCore.jl Common utility functions and different layers of abstractions are contained in this package.
  • ReinforcementLearningZoo.jl Common reinforcement learning algorithms and their typical applications (aka Experiments) are collected in this package.
  • DistributedReinforcementLearning.jl This package is still experimental and is not included in ReinforcementLearning.jl yet. Its goal is to extend some algorithms in ReinforcementLearningZoo.jl to apply them in distributed computing systems.

Supporting πŸ––

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!

Citing

If you use ReinforcementLearning.jl in a scientific publication, we would appreciate references to the following BibTex entry:

@misc{Tian2020Reinforcement,
  author       = {Jun Tian and other contributors},
  title        = {ReinforcementLearning.jl: A Reinforcement Learning Package for the Julia Language},
  year         = 2020,
  url          = {https://github.com/JuliaReinforcementLearning/ReinforcementLearning.jl}
}

Contributors ✨

Thanks goes to these wonderful people (emoji key):


jbrea

πŸ’» πŸ“– 🚧

Jun Tian

πŸ’» πŸ“– 🚧 πŸ€”

Aman Bhatia

πŸ“–

Alexander Terenin

πŸ’»

Sid-Bhatia-0

πŸ’»

norci

πŸ’» 🚧

Sriram

πŸ’»

Pavan B Govindaraju

πŸ’»

Alex Lewandowski

πŸ’»

Raj Ghugare

πŸ’»

Roman Bange

πŸ’»

Felix Chalumeau

πŸ’»

Rishabh Varshney

πŸ’»

Zachary Sunberg

πŸ’» πŸ“– 🚧 πŸ€”

Jonathan Laurent

πŸ€”

Andriy Drozdyuk

πŸ“–

Ritchie Lee

πŸ›

Xirui Zhao

πŸ’»

Nerd

πŸ“–

Albin Heimerson

πŸ’»

michelangelo21

πŸ›

GuoYu Yang

πŸ“– πŸ’»

Prasidh Srikumar

πŸ’»

Ilan Coulon

πŸ’»

Jinrae Kim

πŸ“–

luigiannelli

πŸ›

Jacob Boerma

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

About

A reinforcement learning package for Julia

License:Other


Languages

Language:Julia 99.5%Language:Dockerfile 0.4%Language:TeX 0.1%