Пример #1
0
def rank_checkpoints(game, model_class, sims, cuda=False):
    winning_model = NeuralNetwork(game, model_class, cuda=cuda)
    contending_model = NeuralNetwork(game, model_class, cuda=cuda)
    ckpts = winning_model.list_checkpoints()
    num_opponents = game.get_num_players() - 1
    current_winner = ckpts[0]

    for contender in ckpts:

        # Load contending player
        contending_model.load(contender)
        contending_player = DeepMCTSPlayer(game, contending_model, sims)

        # Load winning player
        winning_model.load(current_winner)
        winners = [
            DeepMCTSPlayer(game, winning_model, sims)
            for _ in range(num_opponents)
        ]

        scores, outcomes = play_match(game, [contending_player] + winners,
                                      verbose=False,
                                      permute=True)
        score, outcome = scores[contending_player], outcomes[contending_player]
        print("Current Champ: {}    Challenger: {}    Outcome: {} <{}>    ".
              format(current_winner, contender, outcome, score),
              end="")
        if outcome == "Win":
            current_winner = contender
        print("New Champ: {}".format(current_winner))
Пример #2
0
 def test_two_sim_guess_it(self):
     gi = TwoPlayerGuessIt()
     pr = NeuralNetwork(gi, PriorNet)
     p = DeepMCTSPlayer(gi, pr, 2)
     init = gi.get_initial_state()
     s = p.update_state(init)
     s_gt = init
     s_gt[0, 1, 0] = 1
     s_gt[:, :, -1] = 1
     self.assertTrue((s == s_gt).all())
Пример #3
0
 def test_three_sim_guess_it(self):
     for _ in range(100):  # There should be no stochasticity (temp=0)
         gi = TwoPlayerGuessIt()
         pr = NeuralNetwork(gi, PriorNet)
         p = DeepMCTSPlayer(gi, pr, 3)
         init = gi.get_initial_state()
         s = p.update_state(init)
         s_gt = init.copy()
         s_gt[0, 1, 0] = 1
         s_gt[:, :, -1] = 1
         self.assertTrue((s == s_gt).all())
Пример #4
0
def effective_model_power(checkpoint, game, model_class, sims, cuda=False):
    my_model = NeuralNetwork(game, model_class, cuda=cuda)
    my_model.load(checkpoint)
    my_player = DeepMCTSPlayer(game, my_model, sims)
    strength = 10
    num_opponents = game.get_num_players() - 1
    lost = False

    while not lost:
        contenders = [
            UninformedMCTSPlayer(game, strength) for _ in range(num_opponents)
        ]

        # Play main game
        scores, outcomes = play_match(game, [my_player] + contenders,
                                      verbose=False,
                                      permute=True)
        score, outcome = scores[my_player], outcomes[my_player]
        if outcome == "Lose": lost = True
        print("{} <{}>      Opponent strength: {}".format(
            outcome, round(score, 3), strength),
              end="")

        # Play control game
        control_player = UninformedMCTSPlayer(game, sims)
        scores, outcomes = play_match(game, [control_player] + contenders,
                                      verbose=False,
                                      permute=True)
        score, outcome = scores[control_player], outcomes[control_player]
        print("      (Control: {} <{}>)".format(outcome, round(score, 3)))

        strength *= 2  # Opponent strength doubles every turn
Пример #5
0
 def test_memory_guess_it(self):
     gi = TwoPlayerGuessIt()
     pr = NeuralNetwork(gi, PriorNet)
     p = DeepMCTSPlayer(gi, pr, 2)
     init = gi.get_initial_state()
     s = p.update_state(init)
     s_gt = init.copy()
     s_gt[0, 1, 0] = 1
     s_gt[:, :, -1] = 1
     self.assertTrue((s == s_gt).all())
     for _ in range(100):
         s = p.update_state(init)
     s_gt = init.copy()
     s_gt[1, 1, 0] = 1
     s_gt[:, :, -1] = 1
     self.assertTrue((s == s_gt).all())
Пример #6
0
def one_vs_all(checkpoint, game, model_class, sims, cuda=False):
    my_model = NeuralNetwork(game, model_class, cuda=cuda)
    my_model.load(checkpoint)
    contending_model = NeuralNetwork(game, model_class, cuda=cuda)
    ckpts = my_model.list_checkpoints()
    num_opponents = game.get_num_players() - 1

    for contender in ckpts:
        contending_model.load(contender)
        my_player = DeepMCTSPlayer(game, my_model, sims)
        contenders = [
            DeepMCTSPlayer(game, contending_model, sims)
            for _ in range(num_opponents)
        ]
        scores, outcomes = play_match(game, [my_player] + contenders,
                                      verbose=False,
                                      permute=True)
        score, outcome = scores[my_player], outcomes[my_player]
        print("Challenger:", contender, "Outcome:", outcome, score)
def evaluate_against_uninformed(checkpoint,
                                game,
                                model_class,
                                my_sims,
                                opponent_sims,
                                cuda=False):
    my_model = NeuralNetwork(game, model_class, cuda=cuda)
    my_model.load(checkpoint)
    num_opponents = game.get_num_players() - 1
    uninformeds = [
        UninformedMCTSPlayer(game, opponent_sims) for _ in range(num_opponents)
    ]
    informed = DeepMCTSPlayer(game, my_model, my_sims)
    scores = play_match(game, [informed] + uninformeds, permute=True)
    print("Opponent strength: {}     Scores: {}".format(opponent_sims, scores))
Пример #8
0
            outcomes[p] = "Win"

    return scores, outcomes


if __name__ == "__main__":
    from players.human_player import HumanPlayer
    from neural_network import NeuralNetwork
    from models.minivgg import MiniVGG
    from models.smallvgg import SmallVGG
    from models.senet import SENet
    from players.uninformed_mcts_player import UninformedMCTSPlayer
    from players.deep_mcts_player import DeepMCTSPlayer
    from games.connect4 import Connect4
    from games.tictactoe import TicTacToe
    from games.leapfrog import ThreePlayerLeapFrog

    # Change these variable
    game = Connect4()
    ckpt = 775
    nn = NeuralNetwork(game, SENet, cuda=True)
    nn.load(ckpt)

    # HumanPlayer(game),
    # UninformedMCTSPlayer(game, simulations=1000)
    # DeepMCTSPlayer(game, nn, simulations=50)

    players = [HumanPlayer(game), DeepMCTSPlayer(game, nn, simulations=50)]
    for _ in range(5):
        print(play_match(game, players, verbose=True, permute=True))