Exemple #1
0
def main():
    mcts_wins = 0
    draws = 0
    mcts_loses = 0
    for game in range(100):
        VF_pickle = open(
            "/Users/lpothabattula/Desktop/100_Days_of_ML_Code/Day4/TicTacToeValFun.pickle",
            "rb")
        ValueFunction = pickle.load(VF_pickle)
        BoardObj = TicTacToe()
        currNode = Node(expanded=False,
                        visited=True,
                        TotalSimualtionReward=0,
                        totalNumVisit=1,
                        TicTacToe=BoardObj,
                        parent=None)
        # print("Initial Board setting")
        # currNode.TicTacToe.print_board()
        while not currNode.Terminal:
            player = currNode.TicTacToe.moveCnt % 2 + 1
            if currNode.TicTacToe.moveCnt & 1:
                x, y = take_action(currNode.TicTacToe.board,
                                   Value=ValueFunction,
                                   player=player)
                TicTacToeObj = cp.deepcopy(currNode.TicTacToe)
                TicTacToeObj.make_move(x, y)
                nextNode = currNode.compareTo(TicTacToeObj.board)
                if nextNode is None:
                    nextNode = Node(expanded=False,
                                    visited=True,
                                    TotalSimualtionReward=0,
                                    totalNumVisit=1,
                                    TicTacToe=TicTacToeObj,
                                    parent=None)
            else:
                nextNode = MCTS.MonteCarloTreeSearch(currNode, 0.1)
            # print("After {} Move".format(nextNode.TicTacToe.moveCnt))
            # print(nextNode.TotalSimualtionReward)
            # print(nextNode.TotalNumVisit)
            # nextNode.TicTacToe.print_board()
            currNode = nextNode
        if currNode.TicTacToe.draw:
            draws += 1
            print("Match {}:Drawn".format(game))
        else:
            if currNode.TicTacToe.moveCnt & 1:
                mcts_wins += 1
                print("Match {}:First Player won".format(game))
            else:
                mcts_loses += 1
                print("Match {}:Second Player won".format(game))
    print("Final analysis:MCTS vs TD")
    print("MCTS won {} times".format(mcts_wins))
    print("match drawn {} times".format(draws))
    print("MCTS lost {} times".format(mcts_loses))
def main():
    BoardObj = TicTacToe()
    currNode = Node(expanded=False,
                    visited=True,
                    TotalSimualtionReward=0,
                    totalNumVisit=1,
                    TicTacToe=BoardObj,
                    parent=None)
    print("Initial Board setting")
    currNode.TicTacToe.print_board()
    while not currNode.Terminal:
        if currNode.TicTacToe.moveCnt & 1:
            x = int(raw_input('Enter row position\n'))
            y = int(raw_input('Enter column position\n'))
            TicTacToeObj = cp.deepcopy(currNode.TicTacToe)
            try:
                TicTacToeObj.make_move(x, y)
            except:
                continue
            nextNode = currNode.compareTo(TicTacToeObj.board)
            if nextNode is None:
                nextNode = Node(expanded=False,
                                visited=True,
                                TotalSimualtionReward=0,
                                totalNumVisit=1,
                                TicTacToe=TicTacToeObj,
                                parent=None)
        else:
            nextNode = MCTS.MonteCarloTreeSearch(currNode, 0.1)
        print("After {} Move".format(nextNode.TicTacToe.moveCnt))
        print(nextNode.TotalSimualtionReward)
        print(nextNode.TotalNumVisit)
        nextNode.TicTacToe.print_board()
        currNode = nextNode
    if currNode.TicTacToe.draw:
        print("Match is Drawn")
    else:
        if currNode.TicTacToe.moveCnt & 1:
            print("First Player won")
        else:
            print("Second Player won")