CSCI 4150: Introduction to Artificial Intelligence, Fall 2005

Assignment 4 information


Files for this assignment

Writeup specifications

You should do your writeup in your favorite word processor rather than turning in handwritten work. This makes it easier for Kris to grade, and generally this results in better quality writeups since it is easy to go back and edit. There is no minimum or maximum length requirement for the writeup, however I expect that most writeups will be between 5 and 15 pages. This, of course, will depend on how you format the transcripts of the games against the test players, among other things. Keep in mind that Kris isn't going to devote an entire evening reading your writeup just because you turn in a tome, so make it easy for him to grade by being concise, coherent, and to the point, but you should also cover everything that you need to cover. You should make sure the boards in your writeup are printed with a monospace font so that they are understandable.

Here are the details of what your writeup for problem 7 should cover.

  1. Give a prose description of how your evaluation function works. In particular, outline how you calculate the value of the function, what features you looked for and incorporated into your calculations, and why your evaluation function is an accurate indicator of how good the game is for MAX.

    If you used an opening database, explain how you created it, i.e., which states did you include in your opening database and how did you select the moves from those states. Do not include your opening database in your writeup, but feel free to use examples from it as necessary in your writeup.

  2. Run your evaluation function on the five boards in the file testboards.scm to the specified depth(s) as given in the file and report which moves it chooses. You should use the code to run these tests. For each of these boards, do the following analysis:

    1. Why did your evaluation function cause minimax to choose each move?

    2. Is it a good move? Explain why. If there is a better move, why didn't your evaluation function choose it?

    3. For the three boards (b3, b4, and b5) that you run once to depth 4 and once to depth 6, explain why your evaluation function chose the same or a different move at the different depths.

  3. Play your evaluation function: These players are available in the "files" section as compiled players.

    ANALYZE the resulting games, pointing out places where your evaluation function made particularly good or bad moves (and why they were good or bad moves). Also, EXPLAIN why your evaluation function caused minimax to make those moves and (for bad moves) why a better move wasn't picked. Include a transcript of these games in your writeup.

Playing with your evaluation function


Opening databases

The details of the opening database mechanism have changed because the implementation had to be different than I originally planned. The details and support code procedures (in are described below.

You can specify a move that you would like your player to make from a given state (not move sequence). Note that there are, in general, multiple move sequences that result in the same state. The problem with specifying states is that our state representation (primarily a string) takes up more memory than it should. Therefore, the opening database mechanism uses a more compact representation. In order to use the opening database mechanism, you must transform your opening database into this form.

Here are the steps to create an opening database:

Opening database procedures in the support code