JuliaPOMDP / SARSOP.jl

Julia package that wraps the SARSOP software for solving POMDPs/MDPs
Other
14 stars 7 forks source link

MethodError: no method matching isless while solving POMDP #23

Closed sarit-adh closed 6 years ago

sarit-adh commented 6 years ago

I have my POMDP model with all the functions implemented. While trying to solve the model with SARSOP solver,

solver = SARSOPSolver() policy = solve(solver, pomdp)

I get following error. I am confused because it doesn't point to any specific part in my code. Rather it seems to be issue related to reading or writing POMDPX file. I am using JuliaBox

MethodError: no method matching isless(::Float64, ::Array{Float64,1})
Closest candidates are:
  isless(::Float64, ::Float64) at float.jl:439
  isless(::Missings.Missing, ::Any) at /mnt/juliabox/.julia/v0.6/Missings/src/Missings.jl:74
  isless(::AbstractFloat, ::AbstractFloat) at operators.jl:96
  ...

Stacktrace:
 [1] >(::Array{Float64,1}, ::Float64) at ./operators.jl:216
 [2] trans_xml(::WumpusWorld, ::POMDPXFiles.POMDPXFile, ::IOStream) at /mnt/juliabox/.julia/v0.6/POMDPXFiles/src/writer.jl:392
 [3] write(::WumpusWorld, ::POMDPXFiles.POMDPXFile) at /mnt/juliabox/.julia/v0.6/POMDPXFiles/src/writer.jl:132
 [4] (::SARSOP.##call#1#2)(::Bool, ::Type{T} where T, ::WumpusWorld, ::String) at /mnt/juliabox/.julia/v0.6/SARSOP/src/file.jl:16
 [5] (::Core.#kw#Type)(::Array{Any,1}, ::Type{SARSOP.POMDPFile}, ::WumpusWorld, ::String) at ./<missing>:0
 [6] #solve#5(::Bool, ::String, ::Function, ::SARSOP.SARSOPSolver, ::WumpusWorld, ::SARSOP.POMDPPolicy) at /mnt/juliabox/.julia/v0.6/SARSOP/src/solver.jl:94
 [7] solve(::SARSOP.SARSOPSolver, ::WumpusWorld) at /mnt/juliabox/.julia/v0.6/SARSOP/src/solver.jl:94
 [8] include_string(::String, ::String) at ./loading.jl:522
zsunberg commented 6 years ago

It looks like the pdf function is returning a vector instead of a single float representing a probability in some case. What kind of distribution are you using?

On Sat, Apr 21, 2018, 23:50 Sarit Adhikari notifications@github.com wrote:

I have my POMDP model with all the functions implemented. While executing following code

solver = SARSOPSolver() policy = solve(solver, pomdp)

I get following error. I am confused because it doesn;t point to any specific part in my code. Rather it seems to be issue related to reading or writing POMDPX file. I am using JuliaBox

MethodError: no method matching isless(::Float64, ::Array{Float64,1}) Closest candidates are: isless(::Float64, ::Float64) at float.jl:439 isless(::Missings.Missing, ::Any) at /mnt/juliabox/.julia/v0.6/Missings/src/Missings.jl:74 isless(::AbstractFloat, ::AbstractFloat) at operators.jl:96 ...

Stacktrace: [1] >(::Array{Float64,1}, ::Float64) at ./operators.jl:216 [2] trans_xml(::WumpusWorld, ::POMDPXFiles.POMDPXFile, ::IOStream) at /mnt/juliabox/.julia/v0.6/POMDPXFiles/src/writer.jl:392 [3] write(::WumpusWorld, ::POMDPXFiles.POMDPXFile) at /mnt/juliabox/.julia/v0.6/POMDPXFiles/src/writer.jl:132 [4] (::SARSOP.##call#1#2)(::Bool, ::Type{T} where T, ::WumpusWorld, ::String) at /mnt/juliabox/.julia/v0.6/SARSOP/src/file.jl:16 [5] (::Core.#kw#Type)(::Array{Any,1}, ::Type{SARSOP.POMDPFile}, ::WumpusWorld, ::String) at ./:0 [6] #solve#5(::Bool, ::String, ::Function, ::SARSOP.SARSOPSolver, ::WumpusWorld, ::SARSOP.POMDPPolicy) at /mnt/juliabox/.julia/v0.6/SARSOP/src/solver.jl:94 [7] solve(::SARSOP.SARSOPSolver, ::WumpusWorld) at /mnt/juliabox/.julia/v0.6/SARSOP/src/solver.jl:94 [8] include_string(::String, ::String) at ./loading.jl:522

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/JuliaPOMDP/SARSOP.jl/issues/23, or mute the thread https://github.com/notifications/unsubscribe-auth/AEC0azENTem3SQnuOMpDtcdTV0U25y9iks5trCgdgaJpZM4TewI9 .

sarit-adh commented 6 years ago

That's exactly what was happening. I sort of assumed the 1 element array would be converted to atomic element automatically. It was difficult to find the source of error though. Thanks