-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathcommon_stats.py
36 lines (30 loc) · 1 KB
/
common_stats.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def stats(montecarlo, f=lambda x: x):
n_nodes = 0
n_gen_nodes = 0
n_back_nodes = 0
n_gen_leaves = 0
n_back_leaves = 0
queue = [montecarlo.root_node]
while queue != []:
node = queue.pop()
n_nodes += 1
is_back = node.parent is not None and f(node.state) == f(node.parent.state)
is_leaf = node.children == []
if is_back:
n_back_nodes += 1
else:
n_gen_nodes += 1
if is_leaf:
if is_back:
n_back_leaves += 1
else:
n_gen_leaves += 1
queue += node.children
print(f"""
STATS
number of nodes: {n_nodes}
number of gen nodes: {n_gen_nodes} (including leaves: {n_gen_leaves})
number of back nodes: {n_back_nodes} (including leaves: {n_back_leaves})
expansion count: {montecarlo.stats_expansion_count} (including failed: {montecarlo.stats_failed_expansion_count})
""")
return (n_nodes, n_gen_nodes, n_back_nodes, n_gen_leaves, n_back_leaves)