class TestMCTS(unittest.TestCase): def setUp(self): self.gs = GameState() self.mcts = MCTS(self.gs, value_network, policy_network, rollout_policy, n_search=2) def test_treenode_selection(self): treenode = TreeNode(None, 1.0) treenode.expansion(policy_network(self.gs)) action, node = treenode.selection() self.assertEqual(action, (18, 18)) # according to the policy below self.assertIsNotNone(node) def test_mcts_DFS(self): treenode = TreeNode(None, 1.0) self.mcts._DFS(8, treenode, self.gs.copy()) self.assertEqual(1, treenode.children[(18, 18)].nVisits, 'DFS visits incorrect') def test_mcts_getMove(self): move = self.mcts.get_move(self.gs) self.mcts.update_with_move(move)