-


> > > > Programming Assignments > Assignment 5 - Monte Carlo Tree Search

Objectives

Assignment

Create a Python 3 module called mcts (so this must be in a file called mcts.py that implements a function called mcts_strategy that takes a number of iterations and returns a function that returns a function takes a position and returns the move suggested by running MCTS for that number of iterations starting with that position.

The positions passed to the search functions will be instances of Kalah.Position from the kalah module. Python does not have a mechanism to prevent access to members, but your search will not be graded if it accesses members whose names begin with an underscore (the Python convention for indicating members not intended for use by client code). The functions you are allowed to use are

You can see the minimax function in the minimax module for examples of using these functions and read their documentation in the kalah module.

Graduate Credit

Create a function that will be tested independently from your plain MCTS functions. To do so, create a function called heuristic in your search module that takes a Position as its argument and returns an estimate of the value of that position. It may use the "private" members of the Kalah.Position class using their names as given in the kalah.py module. Describe your heuristic in your log file.

Files

In /c/cs474/hw5 are three Python 3 modules:

Examples

  [jrg94@chameleon Kalah]$ pypy3 test_mcts.py -game 100 4 0.1 0.5 1000
  PASS
  [jrg94@chameleon Kalah]$ pypy3 test_mcts.py -game 100 4 0.1 0.65 10000
  PASS
Note that the first test takes about four minutes and the second test takes the better part of an hour. This is the cost of using a search technique that doesn't require any domain knowledge.

Submissions

Submit just your mcts.py module along with any other supporting modules and your log. There is no need to submit a makefile or executable; the test scripts create an executable called MCTS that is used to run the test drivers using pypy3. If you want to override the default makefile then you can submit one named GNUmakefile.

The time limit for the single public test is set to allow 1000 iterations per move. The private test cases may use more iterations and the time limit will be set proportionally higher.

Submissions must implement Monte Carlo Tree Search, so submissions that use a different search will not be graded even if they meet the performance requirements automatically checked by the grading scripts.


Valid HTML 4.01 Transitional