JuliaPOMDP / DiscreteValueIteration.jl

Value iteration solver for MDPs
Other
20 stars 12 forks source link

change argument's type of two functions from "MDP" to "Union{MDP,POMDP}" #29

Closed mexsser closed 5 years ago

mexsser commented 5 years ago

When I check the source code of QMDP solver, which is a POMDP solver, I find that ValueIterationSolver from this repo is used. And in this repo, a faster solver SparseValueIterationSolver is also provided. So I think maybe I can modify the source code of QMDP to add this solver as an optional solver. But soon I find that the two functions transition_matrix_a_s_sp(mdp::MDP) and reward_s_a(mdp::MDP) only accept argument of MDP Type. According to my understanding this two function can actually also accept POMDP type. I have tried the modified version in my QMDP solver and everything runs smoothly. The results are also as expected.

MaximeBouton commented 5 years ago

Hi @mexsser, We started discussing this point here #25. You might want to look at the solution using UnderlyingMDP from POMDPModelTools. I think it would be better to modify QMDP such that we could use any Value Iteration solver, it would require extracting the mdp first, something like this (in QMDP.jl):

function solve(solver::QMDPSolver, pomdp::POMDP)
    mdp = UnderlyingMDP(pomdp) 
    vi_policy = solve(solver.vi_solver, mdp)
    # convert to alpha vector ...
    return policy 
end

where vi_solver would be a new field in the QMDPSolver.

MaximeBouton commented 5 years ago

Fixed JuliaPOMDP/QMDP.jl#15 and #32