CSCI 4150: Introduction to Artificial Intelligence, Fall 2004

Assignment 4 information

Links:


Support code and stuff

Writeup information

For problem 4, part (c) asks you to do some analysis and write up your evaluation function. Here are the details:

  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 you think your evaluation function is an accurate indicator of how good the game is for MAX.

  2. Run your evaluation function on the five boards in the file testboards.scm to the specified depths (as specified in the file) and report which moves it chooses. For each of these moves, do the following analysis:

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

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

    3. For the two boards (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.

    To help you run your evaluation function on these boards, I have put together yet another version of my ab-minimax solutions. The file is: test-myc4.com. It contains one procedure,

    (test-myc4 board-number depth-cutoff player)
    This has the test board states hardcoded in the procedure. For example:
    > (load "my-evalfn")  ; this should load a4code and connect4 
    > (load "test-myc4")
    > (test-myc4 5 'X 4)  ; do test board b5, X to move, depth 4
    
    This will not only run your evaluation function under my ab-minimax, but it will also tell you the move, the value of the subtree, and it will print out the sequence of moves that led to that value!

  3. Play your evaluation function against the test1 and test2 players in the Connect 4 pre-tournament. Annotate the resulting game, pointing out places where your evaluation function made particularly good or bad moves, and explain why your evaluation made those moves (and not better moves).

    Here's an example annotated game. However, because i did this with a very simple evaluation function, the analysis that I can offer on this trascript is not so in-depth. Yours should be more in-depth.

Web-testers and stuff