public override void Update(EGameFinalStatus status) { this.visits++; if (status == EGameFinalStatus.GameWon) { this.wins++; } }
public override void Update(EGameFinalStatus status) { Interlocked.Increment(ref this.visits); if (status == EGameFinalStatus.GameWon) { Interlocked.Increment(ref this.wins); } }
private static void Backpropagate(INode node, EGameFinalStatus status) { // Backpropagate while (node != null) { node.Update(status); node = node.Parent; } }
public void NimsMctsV2(int token, EGameFinalStatus status) { Action<string> print = s => Console.WriteLine(s); var firstPlayer = new NimPlayer(1); var nims = new NimState(token) as IGameState; while (nims.GetMoves().Any()) { print(nims.ToString()); IMove move = SingleThreaded.ComputeSingleThreadedUCT(nims, 1000, true, print, 0.7F); print(move.Name); nims = move.DoMove(); } print(nims.GetResult(firstPlayer).ToString()); Assert.IsTrue(nims.GetResult(firstPlayer) == status); }
public void NimsMctsV1(int token, EGameFinalStatus status) { Action <string> print = s => Console.WriteLine(s); var firstPlayer = new NimPlayer(1); var nims = new NimState(token) as IGameState; while (nims.GetMoves().Any()) { print(nims.ToString()); IMove move = SingleThreaded.ComputeSingleThreadedUCT(nims, 1000, true, print, 0.7F); print(move.Name); nims.DoMove(move); } print(nims.GetResult(firstPlayer).ToString()); Assert.IsTrue(nims.GetResult(firstPlayer) == status); }
public override void Update(EGameFinalStatus status) { this.visits++; if(status == EGameFinalStatus.GameWon) { this.wins++; } }
public abstract void Update(EGameFinalStatus status);