def __init__(self, game_state: GameState, move: int, parent): self.game_state = game_state self.move = move self.parent = parent self.is_expanded = False self.is_terminal = game_state.get_result() is not None self.children = DictWithDefault(lambda move: UCTNode( self.game_state.play(move), move, parent=self)) self.child_priors = np.zeros( game_state.get_actions_size(), dtype=np.float32) self.child_total_value = np.zeros( game_state.get_actions_size(), dtype=np.float32) self.child_number_visits = np.zeros( game_state.get_actions_size(), dtype=np.int32) self.child_player_changed = np.ones( game_state.get_actions_size(), dtype=np.int32) if tree_stats_enabled: self.deepness = parent.deepness + 1