public virtual ISPTreeNode AddChild(IPuzzleMove move, IPuzzleState state) { untriedMoves.Remove(move); SP_UCTTreeNode n = new SP_UCTTreeNode(move, this, state, rnd, const_C, const_D, true); childNodes.Add(n); return(n); }
public SP_UCTTreeNode(IPuzzleMove move, SP_UCTTreeNode parent, IPuzzleState state, MersenneTwister rng, double const_C = 1, double const_D = 20000, bool generateUntriedMoves = true) { this.move = move; this.parent = parent; this.const_C = const_C; this.const_D = const_D; rnd = rng; childNodes = new List <SP_UCTTreeNode>(); wins = 0; visits = 0; squaredReward = 0; topScore = double.MinValue; if (generateUntriedMoves) { untriedMoves = state.GetMoves(); } }