original_docstring: 
          Calculate the UCT value of this node relative to its parent, the parameter
          "explore" specifies how much the value should favor nodes that have
          yet to be thoroughly explored versus nodes that seem to have a high win
          rate.
          Currently explore is set to zero when choosing the best move to play so
          that the move with the highest win_rate is always chosen. When searching
          explore is set to EXPLORATION specified above.
  
          
docstring: Calculate the UCT value of this node relative to its parent, the parameter
  "explore" specifies how much the value should favor nodes that have
  yet to be thoroughly explored versus nodes that seem to have a high win
  rate.
  Currently explore is set to zero when choosing the best move to play so
  that the move with the highest win_rate is always chosen. When searching
  explore is set to EXPLORATION specified above.
docstring_tokens: Calculate the UCT value of this node relative to its parent the parameter " explore " specifies how much the value should favor nodes that have yet to be thoroughly explored versus nodes that seem to have a high win rate . Currently explore is set to zero when choosing the best move to play so that the move with the highest win_rate is always chosen . When searching explore is set to EXPLORATION specified above .
code: def value(self, explore: float = MCTSMeta.EXPLORATION, rave_const: float = MCTSMeta.RAVE_CONST) -> float:
          """
          Calculate the UCT value of this node relative to its parent, the parameter
          "explore" specifies how much the value should favor nodes that have
          yet to be thoroughly explored versus nodes that seem to have a high win
          rate.
          Currently explore is set to zero when choosing the best move to play so
          that the move with the highest win_rate is always chosen. When searching
          explore is set to EXPLORATION specified above.
  
          """
          # unless explore is set to zero, maximally favor unexplored nodes
          if self.N == 0:
              return 0 if explore is 0 else GameMeta.INF
          else:
              # rave valuation:
              alpha = max(0, (rave_const - self.N) / rave_const)
              UCT = self.Q / self.N + explore * sqrt(2 * log(self.parent.N) / self.N)
              AMAF = self.Q_RAVE / self.N_RAVE if self.N_RAVE is not 0 else 0
              return (1 - alpha) * UCT + alpha * AMAF
code_tokens: def value ( self , explore : float = MCTSMeta . EXPLORATION , rave_const : float = MCTSMeta . RAVE_CONST ) -> float : if self . N == 0 : return 0 if explore is 0 else GameMeta . INF else : alpha = max ( 0 , ( rave_const - self . N ) / rave_const ) UCT = self . Q / self . N + explore * sqrt ( 2 * log ( self . parent . N ) / self . N ) AMAF = self . Q_RAVE / self . N_RAVE if self . N_RAVE is not 0 else 0 return ( 1 - alpha ) * UCT + alpha * AMAF
short_docstring: Calculate the UCT value of this node relative to its parent, the parameter
  "explore" specifies how much the value should favor nodes that have
  yet to be thoroughly explored versus nodes that seem to have a high win
  rate.
short_docstring_tokens: Calculate the UCT value of this node relative to its parent the parameter " explore " specifies how much the value should favor nodes that have yet to be thoroughly explored versus nodes that seem to have a high win rate .
comment: """
          Calculate the UCT value of this node relative to its parent, the parameter
          "explore" specifies how much the value should favor nodes that have
          yet to be thoroughly explored versus nodes that seem to have a high win
          rate.
          Currently explore is set to zero when choosing the best move to play so
          that the move with the highest win_rate is always chosen. When searching
          explore is set to EXPLORATION specified above.
  
          """$SEP$# unless explore is set to zero, maximally favor unexplored nodes$SEP$# rave valuation: