In [1]:
addprocs(7);
In [2]:
@everywhere begin
using NetworkDiscovery
using POMDPs
import POMDPs: solve
using POMCP
using POMDPToolbox
end
In [14]:
nodes = 100
comms = 5
probes = 10
p_inter = 0.01
p_intra = 0.3
N = 10000
Out[14]:
In [15]:
@everywhere solve(solver::DiscoveryHeuristic, pomdp) = solver
@everywhere function tick_hack(x::Float64,y::Float64)
print(".")
return x+y
end
In [16]:
function est_rew(solver, nodes, comms, probes, p_intra, p_inter, N)
sum = @parallel (tick_hack) for i in 1:N
prob_rng = MersenneTwister(i)
sim_rng = MersenneTwister(i)
nw = generate_network(prob_rng, nodes, comms, p_intra, p_inter)
pomdp = generate_problem(prob_rng, nw, probes, 1, 100.0, 10, 10, p_intra, p_inter)
policy = solve(solver, pomdp)
revealed = initial_belief(pomdp)
sim = RolloutSimulator(rng=sim_rng, initial_state=nw, initial_belief=revealed)
simulate(sim, pomdp, policy)
end
# print("\r")
end
Out[16]:
In [17]:
guess_rng = MersenneTwister(1)
policy = DiscoveryHeuristic(ProbeHighestDegree(false), GuessBasedOnNeighbors(guess_rng))
Out[17]:
In [18]:
@time est_rew(policy, nodes, comms, probes, p_intra, p_inter, N)/N
Out[18]:
In [25]:
rollout_rng = MersenneTwister(1)
pomcp_rng = MersenneTwister(1)
rollout_policy = DiscoveryHeuristic(ProbeHighestDegree(false), GuessBasedOnNeighbors(rollout_rng))
solver = POMCPSolver(rollout_policy, 0.0, 100.0, 1000, pomcp_rng, false, FullBeliefConverter(), 0)
Out[25]:
In [26]:
@time est_rew(solver, nodes, comms, probes, p_intra, p_inter, N)
Out[26]:
In [ ]: