This package is the core component of ReinforcementLearning.jl. It provides some typical implementations of the interfaces defined in ReinforcementLearningBase.jl.
./src
├── core (define how policies interact with environments)
├── extensions (patch code for upstream packages are stored here)
├── policies (all policies are put here)
│ ├── agents (= policy + trajectory)
│ ├── q_based_policies
│ │ ├── explorers (select action from action-values)
│ │ └── learners (learn state-value, state-action-value, distributional value...)
│ │ └── approximators (= NN + Optimiser)
│ └── (some other common policies).jl
└── utils (Reusable functions/structures)
For developers who are interested in contributing, I suggest you read the source code in the following top-down order:
core/run.jl
policies/base.jl
policies/agents/agent.jl
policies/agents/trajectories/trajectory.jl
policies/q_based_policies/q_based_policy.jl
policies/q_based_policies/learners/approximators/neural_network_approximator.jl
policies/q_based_policies/explorers/weighted_explorer.jl
Then play with the E`JuliaRL_BasicDQN_CartPole`
experiment in ReinforcementLearningZoo.jl and try to understand the runtime logic step by step. After that, you can explore other components on demand.