9
9
from subprocess import call
10
10
11
11
12
- MCTS_PARALLELS = [2 , 4 , 6 , 8 , 16 ]
13
- MCTS_SIMS = [32 , 64 , 128 , 160 ]
14
- BATCH_SIZE_EVALS = [2 , 4 , 6 , 8 ]
15
- SAMPLE_NUM = 30
16
-
12
+ SAMPLE_NUM = 50
17
13
18
14
def overwrite_file (old_values , new_values ):
19
15
for idx , new_value in new_values .items ():
@@ -29,6 +25,8 @@ def do_sims(player, old_values, mcts_parallel=2, mcts_sim=8, batch_size_eval=2):
29
25
"BATCH_SIZE_EVAL" : batch_size_eval
30
26
}
31
27
overwrite_file (old_values , new_values )
28
+ print ("-- STARTING FOR %d GAMES WITH MCTS PARALLEL %d SIMS %d BATCH_SIZE %d --" \
29
+ % (SAMPLE_NUM , mcts_parallel , mcts_sim , batch_size_eval ))
32
30
queue , results = create_matches (player , cores = PARALLEL_SELF_PLAY ,
33
31
opponent = player , match_number = SAMPLE_NUM )
34
32
moves = []
@@ -38,50 +36,54 @@ def do_sims(player, old_values, mcts_parallel=2, mcts_sim=8, batch_size_eval=2):
38
36
for _ in range (SAMPLE_NUM ):
39
37
result = pickle .loads (results .get ())
40
38
moves .append (result [1 ])
41
- times .append (result [2 ])
39
+ move_times = result [2 ]
40
+ times .append (result [3 ])
42
41
finally :
43
42
queue .close ()
44
43
results .close ()
45
-
46
- print ("-- FINAL RESULTS FOR %d GAMES WITH MCTS PARALLEL %d SIMS %d BATCH_SIZE %d --" \
47
- % (SAMPLE_NUM , mcts_parallel , mcts_sim , batch_size_eval ))
48
- print ("total game duration: %d seconds, total game move count: %d" \
49
- % (sum (times ) / PARALLEL_SELF_PLAY , sum (moves )))
44
+ print ("-- RESULTS --" )
45
+ print ("real total game duration: %.3f seconds, total game move count: %d" \
46
+ % (sum (times ), sum (moves )))
50
47
print ("average game duration: %.5f seconds, average game move count: %.1f" \
51
48
% (np .mean (times ), np .mean (moves )))
52
49
print ("average move duration: %.5f seconds, average sim duration: %.8f seconds" \
53
- % (sum ( times ) / sum ( moves ) , sum ( times ) / ( sum ( moves ) * mcts_sim ) ))
50
+ % (np . mean ( move_times ) , np . mean ( move_times ) / mcts_sim ))
54
51
print ("-- DONE --\n " )
55
52
return new_values
56
53
57
54
58
55
def stats_report ():
59
56
multiprocessing .set_start_method ("spawn" )
60
57
player = Player ()
61
- old_values = {
58
+ first_values = {
62
59
"MCTS_PARALLEL" : MCTS_PARALLEL ,
63
60
"MCTS_SIM" : MCTS_SIM ,
64
61
"BATCH_SIZE_EVAL" : BATCH_SIZE_EVAL
65
62
}
66
63
67
- old_values = do_sims (player , old_values , mcts_parallel = 2 , mcts_sim = 32 , batch_size_eval = 2 )
68
- old_values = do_sims (player , old_values , mcts_parallel = 4 , mcts_sim = 32 , batch_size_eval = 2 )
69
- old_values = do_sims (player , old_values , mcts_parallel = 6 , mcts_sim = 32 , batch_size_eval = 2 )
70
- old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 32 , batch_size_eval = 2 )
71
- old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 32 , batch_size_eval = 2 )
72
- old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 32 , batch_size_eval = 4 )
73
- old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 32 , batch_size_eval = 4 )
74
- old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 32 , batch_size_eval = 6 )
64
+ ## 64 simulations
65
+ old_values = do_sims (player , first_values , mcts_parallel = 2 , mcts_sim = 64 , batch_size_eval = 2 )
66
+ old_values = do_sims (player , old_values , mcts_parallel = 4 , mcts_sim = 64 , batch_size_eval = 2 )
67
+ old_values = do_sims (player , old_values , mcts_parallel = 6 , mcts_sim = 64 , batch_size_eval = 2 )
68
+ old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 64 , batch_size_eval = 2 )
69
+ old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 64 , batch_size_eval = 2 )
70
+ old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 64 , batch_size_eval = 4 )
71
+ old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 64 , batch_size_eval = 4 )
72
+ old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 64 , batch_size_eval = 6 )
75
73
76
- old_values = do_sims (player , old_values , mcts_parallel = 2 , mcts_sim = 128 , batch_size_eval = 2 )
74
+
75
+ ## 128 simulations
76
+ old_values = do_sims (player , old_values , mcts_parallel = 4 , mcts_sim = 128 , batch_size_eval = 2 )
77
77
old_values = do_sims (player , old_values , mcts_parallel = 4 , mcts_sim = 128 , batch_size_eval = 2 )
78
78
old_values = do_sims (player , old_values , mcts_parallel = 6 , mcts_sim = 128 , batch_size_eval = 2 )
79
- old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 128 , batch_size_eval = 2 )
79
+ old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 128 , batch_size_eval = 4 )
80
80
old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 128 , batch_size_eval = 2 )
81
81
old_values = do_sims (player , old_values , mcts_parallel = 8 , mcts_sim = 128 , batch_size_eval = 4 )
82
82
old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 128 , batch_size_eval = 4 )
83
83
old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 128 , batch_size_eval = 6 )
84
84
85
+
86
+ ## 160 simulations
85
87
old_values = do_sims (player , old_values , mcts_parallel = 2 , mcts_sim = 160 , batch_size_eval = 2 )
86
88
old_values = do_sims (player , old_values , mcts_parallel = 4 , mcts_sim = 160 , batch_size_eval = 2 )
87
89
old_values = do_sims (player , old_values , mcts_parallel = 6 , mcts_sim = 160 , batch_size_eval = 2 )
@@ -91,7 +93,6 @@ def stats_report():
91
93
old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 160 , batch_size_eval = 4 )
92
94
old_values = do_sims (player , old_values , mcts_parallel = 12 , mcts_sim = 160 , batch_size_eval = 6 )
93
95
94
-
95
96
96
97
97
98
if __name__ == "__main__" :
0 commit comments