In [15]:
using NetworkDiscovery
using POMDPs
using POMDPToolbox
using POMCP
rng = MersenneTwister(11);

In [16]:
p_intra = 0.3;
p_inter = 0.01;

In [17]:
nw = generate_network(rng, 100, 5, p_intra, p_inter)


Out[17]:

In [18]:
pomdp = generate_problem(rng, nw, 10, 1, 100.0, 10, 10, p_intra, p_inter)


Out[18]:
CommunityAffiliationPOMDP(10,1,100.0,CommunityNetwork({100, 374} undirected graph,5,[3,3,5,4,2,2,3,4,5,1  …  5,5,4,2,1,1,3,2,3,1],10),Set{Int64}({47,32,2,16,39,82,60,35,83,65,22,23,31,78,13}),Set{Pair{Int64,Int64}}({edge 13 - 47,edge 16 - 22,edge 23 - 60,edge 32 - 60,edge 2 - 83,edge 31 - 82,edge 35 - 65,edge 39 - 78}),[23=>3,13=>2,35=>4,83=>3,2=>3,16=>3,22=>3,39=>3],0.3,0.01)

In [24]:
rollout_rng = MersenneTwister(3)
pomcp_rng = MersenneTwister(4)
rollout_policy = DiscoveryHeuristic(ProbeHighestDegree(true), GuessBasedOnNeighbors(rollout_rng))
solver = POMCPSolver(rollout_policy, 0.0, 100.0, 30, pomcp_rng, false, FullBeliefConverter(), 0)
policy = solve(solver, pomdp)


Out[24]:
POMCPPolicy(CommunityAffiliationPOMDP(10,1,100.0,CommunityNetwork({100, 374} undirected graph,5,[3,3,5,4,2,2,3,4,5,1  …  5,5,4,2,1,1,3,2,3,1],10),Set{Int64}({47,32,2,16,39,82,60,35,83,65,22,23,31,78,13}),Set{Pair{Int64,Int64}}({edge 13 - 47,edge 16 - 22,edge 23 - 60,edge 32 - 60,edge 2 - 83,edge 31 - 82,edge 35 - 65,edge 39 - 78}),[23=>3,13=>2,35=>4,83=>3,2=>3,16=>3,22=>3,39=>3],0.3,0.01),POMCPSolver(DiscoveryHeuristic(ProbeHighestDegree(true),GuessBasedOnNeighbors(MersenneTwister(DSFMT_state(Int32[-1359582567,1073454075,1934390716,1073583786,-114685834,1073112842,-1913218479,1073122729,-73577195,1073266439  …  1226759590,1072980451,-1366384707,1073012992,1661148031,2121090155,141576524,-658637225,382,0]),Uint32[0x00000003]))),0.0,100.0,30,MersenneTwister(DSFMT_state(Int32[-1125970028,1072950084,1987879523,1073737715,1318759160,1073082403,-665387610,1073002484,775432869,1072783382  …  -1193370493,1072918807,503071495,1073572056,-1375397214,586182507,2038247757,798803726,382,0]),Uint32[0x00000004]),false,FullBeliefConverter(),0),nothing)

In [25]:
revealed = initial_belief(pomdp)


Out[25]:
RevealedGraph(Set{Pair{Int64,Int64}}({edge 13 - 47,edge 16 - 22,edge 23 - 60,edge 32 - 60,edge 2 - 83,edge 31 - 82,edge 35 - 65,edge 39 - 78}),[[],[83],[],[],[],[],[],[],[],[]  …  [],[],[],[],[],[],[],[],[],[]],Set{Int64}({47,32,2,16,39,82,60,35,83,65,22,23,31,78,13}),[23=>3,13=>2,35=>4,83=>3,2=>3,16=>3,22=>3,39=>3],Set{Int64}({}),10,0.3,0.01,5)

In [26]:
# b = POMCPBeliefWrapper(revealed)
b = revealed
sim = HistoryRecorder(rng=rng, initial_state=nw, initial_belief=POMCPBeliefWrapper(b))
simulate(sim, pomdp, policy)


Out[26]:
0.0

In [27]:
endnw = CommunityNetwork()
rand!(MersenneTwister(3), endnw, sim.belief_hist[end])
endnw


Out[27]:

In [28]:
policy._tree_ref


Out[28]:

In [ ]:


In [ ]: