ml_implementation icon indicating copy to clipboard operation
ml_implementation copied to clipboard

monte_carlo_tree_search/mcst_example.py: expand(node) method not work in checking new state already exists

Open charleschen6 opened this issue 5 years ago • 0 comments

expand node filter by add eq and hash for class State

def expand(node):
  tried_sub_node_states = [
      sub_node.get_state() for sub_node in node.get_children()
  ]

  new_state = node.get_state().get_next_state_with_random_choice()

  # Check until get the new state which has the different action from others
  while new_state in tried_sub_node_states:
    new_state = node.get_state().get_next_state_with_random_choice()

origin code not work for state object using default hash and not find same state in python3.8

by add below codes will correct the error.

class State(object):
  .....
  def __eq__(self, other):
    if isinstance(other, self.__class__):
      return (self.current_value, self.current_round_index, self.cumulative_choices) == \
             (other.current_value, other.current_round_index, other.cumulative_choices)
    else:
      return False

  def __hash__(self):
    return hash('{},{},{}'.format(self.current_value, self.current_round_index, self.cumulative_choices))

charleschen6 avatar Dec 31 '19 03:12 charleschen6