diff options
author | Matt Strapp <strap012@umn.edu> | 2021-04-26 14:44:57 -0500 |
---|---|---|
committer | Matt Strapp <strap012@umn.edu> | 2021-04-26 15:03:24 -0500 |
commit | 8774432f5b7e87fc9647c97022d38673f66a8b2f (patch) | |
tree | 6b93db7fc54391d79a60d3ac9ed2662e1a2b5b3c /python/agent_MCTS.py | |
parent | Rebase newer branch (diff) | |
download | csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.tar csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.tar.gz csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.tar.bz2 csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.tar.lz csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.tar.xz csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.tar.zst csci4511w-8774432f5b7e87fc9647c97022d38673f66a8b2f.zip |
Add debug configs,
Diffstat (limited to 'python/agent_MCTS.py')
-rw-r--r-- | python/agent_MCTS.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/python/agent_MCTS.py b/python/agent_MCTS.py new file mode 100644 index 0000000..b0072cf --- /dev/null +++ b/python/agent_MCTS.py @@ -0,0 +1,57 @@ +import dotsandboxes.dotsandboxesagent as dba + +import sys +import argparse +import logging +from GameState import GameState, DotsAndBoxesState +from MCTS import MCTSNode, MCTSGameController +import alphaBeta + + +logger = logging.getLogger(__name__) +games = {} +agentclass = dba + + +class Agent(dba.DotsAndBoxesAgent): + def __init__(self, player, nb_rows, nb_cols, timelimit): + super(Agent, self).__init__(player, nb_rows, nb_cols, timelimit) + self.GameStateClass = DotsAndBoxesState + self.game_state = self.GameStateClass(nb_rows, nb_cols, player) + self.controller = MCTSGameController() + + def register_action(self, row, column, orientation, player): + super(Agent, self).register_action(row, column, orientation, player) + # adjust agent specific board representation + move = (row, column, orientation) + self.game_state.play_move(move) + + def next_action(self): + r, c, o = self.controller.get_next_move(self.game_state, time_allowed=self.timelimit) + return r, c, o + + def end_game(self): + super(Agent, self).end_game() + + +# Adapted from provided code +def main(argv=None): + global agentclass + parser = argparse.ArgumentParser(description='Start agent to play Dots and Boxes') + parser.add_argument('--verbose', '-v', action='count', default=0, help='Verbose output') + parser.add_argument('--quiet', '-q', action='count', default=0, help='Quiet output') + parser.add_argument('port', metavar='PORT', type=int, help='Port to use for server') + args = parser.parse_args(argv) + print(args) + + logger.setLevel(max(logging.INFO - 10 * (args.verbose - args.quiet), logging.DEBUG)) + logger.addHandler(logging.StreamHandler(sys.stdout)) + + agentclass = Agent + dba.agentclass = Agent + dba.start_server(args.port) + + +if __name__ == "__main__": + sys.exit(main()) + |