def setUp(self): reload(game_agent) self.player1 = game_agent.MinimaxPlayer(2, sample_players.improved_score) self.player2 = sample_players.GreedyPlayer() self.game = isolation.Board(self.player1, self.player2, 9, 9) self.time_left = lambda: float("inf")
def test_minimax(self): self.minimax_player = game_agent.MinimaxPlayer( score_fn=sample_players.center_score, timeout=float("inf")) self.greedy_player = sample_players.GreedyPlayer() self.game = isolation.Board(self.minimax_player, self.greedy_player) # self.game.play(time_limit=float("inf")) self.minimax_player.match_boards(self.game, self.game)
def test_single_min_max(self): width, height = 7, 7 #timeout = float("-inf") timeout = 10. self.player1 = game_agent.MinimaxPlayer( search_depth=3, score_fn=game_agent.custom_score, timeout=timeout) self.player2 = sample_players.GreedyPlayer( score_fn=game_agent.custom_score_3) self.game = isolation.Board(self.player1, self.player2, width=width, height=height) #self.game.apply_move((random.randint(0, self.game.width-1), random.randint(0, self.game.height-1))) #self.game.apply_move((random.randint(0, self.game.width-1), random.randint(0, self.game.height-1))) print(self.game.to_string()) # players take turns moving on the board, so player1 should be next to move assert (self.player1 == self.game.active_player) # get a list of the legal moves available to the active player print(self.game.get_legal_moves()) # play the remainder of the game automatically -- outcome can be "illegal # move", "timeout", or "forfeit" winner, history, outcome = self.game.play() print("\nWinner: {}\nOutcome: {}".format( "player 1" if winner == self.player1 else "player 2", outcome)) print("\nstate:\n{}".format(self.game.to_string())) print("\nhistory:\n{}".format(history))
def setUp(self): reload(game_agent) self.player1 = game_agent.MinimaxPlayer() self.player2 = sample_players.GreedyPlayer( sample_players.improved_score) self.player3 = game_agent.AlphaBetaPlayer() # self.game = isolation.Board(self.player1, self.player2,7,7) self.game = isolation.Board(self.player3, self.player2, 7, 7)
def setUp(self): self.player1 = game_agent.MinimaxPlayer(score_fn=self.custom_score, search_depth=3) self.player2 = sample_players.GreedyPlayer() self.game = isolation.Board(self.player1, self.player2) minmax_value = self.player1.get_move(self.game, lambda: 10000) print(minmax_value)
def setUp(self): reload(game_agent) self.player1 = game_agent.MinimaxPlayer() self.player2 = sample_players.GreedyPlayer() self.player3 = sample_players.RandomPlayer() self.player4 = game_agent.AlphaBetaPlayer() self.player5 = game_agent.AlphaBetaPlayer() self.player6 = game_agent.MinimaxPlayer() self.game = None
def test_score_time(self): player1 = game_agent.MinimaxPlayer() player2 = sample_players.GreedyPlayer() game = isolation.Board(player1, player2) for _ in range(0, 2): game.apply_move(random.choice(game.get_legal_moves())) game_agent.custom_score(game, game.get_player_location(game.active_player)) game_agent.custom_score_2(game, game.get_player_location(game.active_player)) game_agent.custom_score_3(game, game.get_player_location(game.active_player))
def reset_boards(self): self.my_player = game_agent.MinimaxPlayer(3,game_agent.custom_score,10) self.opponent = sample_players.GreedyPlayer(sample_players.open_move_score) self.game_board_1 = TestBoard(self.my_player, self.opponent) self.game_board_2 = TestBoard(self.opponent,self.my_player) self.my_player = game_agent.MinimaxPlayer(5,game_agent.custom_score,10) self.game_board_3 = TestBoard(self.my_player, self.opponent) self.my_player = game_agent.MinimaxPlayer(10,game_agent.custom_score,10) self.game_board_4 = TestBoard(self.my_player, self.opponent) self.my_player = game_agent.MinimaxPlayer(3,game_agent.custom_score_2,10) self.game_board_5 = TestBoard(self.my_player, self.opponent) self.my_player = game_agent.MinimaxPlayer(3,game_agent.custom_score_3,10) self.game_board_6 = TestBoard(self.my_player, self.opponent)
def test_alpha_beta(self): """Test Alfa beta agains GreedPlayer""" player1 = game_agent.AlphaBetaPlayer() player2 = sample_players.GreedyPlayer() game = isolation.Board(player1, player2, 3, 5) winner, history, outcome = game.play() self.assertNotEqual(outcome, 'timeout', "AlphaBeta should not lost by timeout") game = isolation.Board(player1, player2) winner, history, outcome = game.play() self.assertNotEqual(outcome, 'timeout', "AlphaBeta should not lost by timeout")
def test_minimax_func(self): minimax_player = game_agent.MinimaxPlayer(search_depth=1, score_fn=sample_players.improved_score) other_player = sample_players.GreedyPlayer() state = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 43] game = isolation.Board(minimax_player, other_player, width=9, height=9) game._board_state = state legal_moves = game.get_legal_moves() move = minimax_player.get_move(game, lambda: 10) print(game.to_string()) print('Available choices:') print(legal_moves) print(move) assert(move in legal_moves)
def test_greedy_player(self): """Test against GreedPlayer""" # create an isolation board (by default 7x7) player1 = game_agent.MinimaxPlayer() player2 = sample_players.GreedyPlayer() game = isolation.Board(player1, player2, 3, 5) winner, history, outcome = game.play() self.assertNotEqual(outcome, 'forfeit', "MinimaxPlayer should not lost by forfeit") self.assertNotEqual(outcome, 'timeout', "MinimaxPlayer should not lost by timeout") game = isolation.Board(player1, player2) winner, history, outcome = game.play() self.assertNotEqual(outcome, 'forfeit', "MinimaxPlayer should not lost by forfeit") self.assertNotEqual(outcome, 'timeout', "MinimaxPlayer should not lost by timeout")
def setUp(self): reload(game_agent) self.player1 = game_agent.MinimaxPlayer() self.player2 = sample_players.GreedyPlayer() self.game = isolation.Board(self.player1, self.player2)
def setUp(self): reload(game_agent) self.player1 = sample_players.GreedyPlayer() self.player2 = game_agent.AlphaBetaPlayer( score_fn=sample_players.open_move_score, timeout=20) self.game = isolation.Board(self.player1, self.player2)