public override string ToString() { string winPercent = visitCnt == 0 ? "0" : (winCnt / visitCnt).ToString(); string movStr = move != null?move.ToString() : ""; string dispStr = String.Format("\n[SkyNetNode]\nMove: {0}\nWin Percent: {1}\nNum Children: {2}\nPlayer One: {3}\nTerminal: {4}\nVisit: {5}\nWin: {6}\nLevel: {7}\nHash: {8}", movStr, winPercent, children.Count.ToString(), this.playerOne.ToString(), this.terminal.ToString(), visitCnt, winCnt, level, boardHash); return(dispStr); }
public override string ToString() { string winPercent = (winCnt / visitCnt).ToString(); string dispStr = String.Format("\n[SkyNetNode]\nMove: {0}\nWin Percent: {1}\nNum Children: {2}\nPlayer One: {3}\nTerminal: {4}\n", move.ToString(), winPercent, children.Count.ToString(), this.playerOne.ToString(), this.terminal.ToString()); return(dispStr); }
private bool MCTSRandSimPlayout(SkyNetNode curNode) { Console.WriteLine("ENTERING MCTS SIM PLAYOUT"); IBoard tmpBoard = localBoard; bool curBoardTerminal = CheckTerminalNode(tmpBoard); Random rand = new Random(); bool playerOne = curNode.playerOne; while (!curBoardTerminal) { List <GameMove> availMoves = localGame.getAllPlayerMoves(tmpBoard, playerOne); int cnt = availMoves.Count; int randMoveInd = rand.Next(0, availMoves.Count); GameMove randMove = availMoves [randMoveInd]; Console.WriteLine(String.Format("Move Made!\nPlayer One's: {1}\nMove: {2}", playerOne.ToString(), randMove.ToString())); makeMove(tmpBoard, randMove); curBoardTerminal = CheckTerminalNode(tmpBoard); if (!curBoardTerminal) { playerOne = !playerOne; } } Console.WriteLine("Player One Win: " + playerOne.ToString()); Console.WriteLine("EXITING MCTS SIM PLAYOUT"); return(playerOne); }