public Opt_SP_UCTTreeNode(IPuzzleMove move, Opt_SP_UCTTreeNode parent, IPuzzleState state, MersenneTwister rng, bool ucb1Tuned, bool rave, double raveThreshold, bool nodeRecycling, double const_C = 1, double const_D = 20000, bool generateUntriedMoves = true) { Move = move; this.parent = parent; this.const_C = const_C; this.const_D = const_D; rnd = rng; childNodes = new List <Opt_SP_UCTTreeNode>(); NextLRUElem = null; PrevLRUElem = null; SetActive = false; wins = 0; visits = 0; squares_rewards = 0; RAVEwins = 0; RAVEvisits = 0; squaredReward = 0; topScore = double.MinValue; this.ucb1Tuned = ucb1Tuned; this.rave = rave; this.raveThreshold = raveThreshold; this.nodeRecycling = nodeRecycling; if (generateUntriedMoves) { untriedMoves = state.GetMoves(); } }