Playing to learn

Design and implement a Least Mean Squares (LMS) learner that learns to play connect4 by updating the weights of your static evaluation function. You should start with random values for these weights. There are two ways to apply the LMS weight learner

  1. Use your hand tuned static evaluator to evaluate a board and return a value against which your measure your error
  2. Play two learners against each other and use the outcome to determine error
I expect you to use the first method to obtain a player that plays as well as your player from the prior assignment.

You will get extra-credit for using the second method and producing a player that plays as well as, OR BETTER, than your player from the prior assignment.

General rules
You may talk strategies but no code sharing. Good Luck


Turning it in

Send me a link to a web page with the following:
  1. Your source, your data, executable (specify linux, android, mac, or windows).
  2. Analyze the strengths and weaknesses of your learned static evaluator. You can do this, for example, by playing five games that pit the handtuned evaluator (or target function) against the LMS tuned target function and recording a move by move analysis. Show your best learned weights and compare them to the hand-tuned weights from the prior assignment.
  3. Movies of your running code that show the strengths and weaknesses of your learned static evaluator. These strengths and weaknesses should relate closely to your analysis.
Your grade depends on how well your program plays and how well you are able to describe your static evaluator.
Sushil Louis