In [ ]:
push!(LOAD_PATH,joinpath("..","src"))
push!(LOAD_PATH,joinpath("..","..","..","POMCP.jl","src"))
using Multilane
using POMCP
using POMDPToolbox
using GenerativeModels
using MCTS
using JLD
In [ ]:
nb_lanes = 4
pp = PhysicalParam(nb_lanes,lane_length=100.) #2.=>col_length=8\n",
_discount = 1.
nb_cars=10
dmodel = NoCrashIDMMOBILModel(nb_cars, pp)
N = 10
POMCP.node_tag(a::MLAction) = string("(",a.acc,",", a.lane_change, ")")
POMCP.tooltip_tag(::MLAction) = ""
POMCP.node_tag(::Any) = ""
POMCP.tooltip_tag(::Any) = ""
models = JLD.load("rmodels.jld")
rmodels = models["rmodels"]
In [ ]:
rmodel = rmodels[1]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=3.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[2]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=5.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[3]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=20.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[4]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=50.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[5]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=150.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[6]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=300.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[7]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=600.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[8]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=1500.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[9]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=3000.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
rmodel = rmodels[10]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=5000.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
a = action(policy, b)
visualize(pomdp, s, a, s)
POMCPTreeVisualizer(b)
In [ ]:
using ProfileView
In [ ]:
rmodel = rmodels[1]
pomdp = NoCrashPOMDP(dmodel, rmodel, _discount)
bu = ParticleUpdater(100, pomdp, MersenneTwister(555))
rng = MersenneTwister(12345) # w/ seed=1, get crash!
solver = POMCPDPWSolver(eps=0.01,
c=3.0,
tree_queries=100,
alpha_observation=0.75, # 10 higher -> widens faster
k_observation=0.3, # 0.5 higher -> widens faster
alpha_action=5., #10
k_action=0.5,
rollout_solver=SimpleSolver()) #0.5
policy = POMDPs.solve(solver, pomdp)
state = rng.seed
s = initial_state(pomdp, rng)
_b = create_belief(bu,s)
q = rand(rng,_b)
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
In [ ]:
function POMCP.extract_belief(::POMDPToolbox.FastPreviousObservationUpdater{MLObs}, node::RootNode)
rand(MersenneTwister(1),node.B)
end
POMCP.initialize_belief(u::FastPreviousObservationUpdater{MLObs}, o::Union{MLState,MLObs}) = o
POMCP.create_belief(u::FastPreviousObservationUpdater{MLObs}) = nothing
POMCP.extract_belief(::POMDPToolbox.FastPreviousObservationUpdater{MLObs}, node::BeliefNode) = node.label[2]
policy = POMDPs.solve(solver, pomdp)
a = action(policy, b)
In [ ]:
b = RootNode(0, _b, Dict{Any,POMCP.ActNode}())
Profile.clear()
@profile for i = 1:10000; action(policy2, s); end
ProfileView.view()
In [ ]:
policy2 = solve(SimpleSolver(),pomdp)
In [ ]: