What is the difference between ReinforcementLearning.jl and pomdps.jl

Hello,

I have been reading about both packages and also found this link, but I don`t see the difference between them. Do you?

These packages implement different algorithms. Maybe there is some overlap, but generally the focus of POMDPs.jl is defining and solving POMDPs, i.e. finding optimal policies for a known (PO)MDPs, whereas the focus of ReinforcementLearning.jl is - well - reinforcement learning, i.e. finding an optimal policy for (PO)MDPs with unknown transition and reward probabilities.

Do you need some guidance in picking the right package for a specific problem you would like to solve?

2 Likes

Thanks for your answer!

So in case I have a problem I can define as an MDP, it is better to use POMDPs.jl rather than ReinforcementLearning.jl right?

Can I define an MDP using ReinforcementLearning.jl?

So in case I have a problem I can define as an MDP, it is better to use POMDPs.jl rather than ReinforcementLearning.jl right?

Yes. I would start with POMDPs.jl for a known MDP.

Can I define an MDP using ReinforcementLearning.jl?

Yes. You can use the environment interface to implement an MDP and use the basic implementation of policy and value iteration in ReinforcementLearning.jl (see e.g. the car rental problem). This is one place where there is currently a bit of redundancy between those packages :slightly_smiling_face: . I think it would be straightforward to implement the car rental problem in POMDPs.jl.

1 Like

Perfect! I will try POMDPs.jl because I would like to use tabular methods and I do not see these methods on ReinforcementLearning.jl (maybe I am wrong).

Thank you so much for your help.

Perfect, welcome.

In fact, the policy and value iteration methods in ReinforcementLearning.jl are tabular methods. Also the car rental example is tabular (with 21^2 states and 11 actions). But I think the POMDPs interface is better for these kinds of problems and it has more solvers available.

1 Like