||CS 391 Selected Topics: Game AI
Due the beginning of class on Thursday 2/11.
Note: This work is to be done in groups of 2. Each group will submit one assignment. Although
you may divide the work, both team members should be able to present/describe
their partner's work upon request.
Using your FreeCellNode from Homework #2 (or another's FreeCellNode
implementation if you wish), implement a FreeCell solver program that takes the
game seed as a command line parameter (i.e. args in the main method), and
prints the solution following the
notation of the
FreeCell solutions site, or "No solution found." if the search is
unsuccessful. You should report the fraction of game seeds from 1-100 that
you are able to solve in 1 minute each or less, and be prepared to demonstrate your
- Begin by defining a heuristic/static evaluation (i.e. progress score) of your state. In
class, we discussed several possible features that might be helpful, but you
can find even more feature ideas from
G. Heineman. Algorithm to Solve FreeCell Solitaire Games
(download code to see actual board evaluation), and
Elyasaf, Hauptman, and Sipper. Evolutionary Design of FreeCell Solvers
(which gets Heineman's heuristic wrong).
- You are welcome to use any search algorithm, but I recommend starting
with a modification to recursive depth limited search that returns heuristic
state evaluation information and thus guides the play in helpful directions
when a goal node isn't found. These ideas are similar to a strategy
called "island-driven search". There are many other search ideas that may be
helpful (e.g. beam search and variants). Do not expect that you'll be
able to look far enough ahead from the beginning to find a goal node.
That's what makes this a particularly interesting search challenge!
- You may find it helpful to automate your testing process. In
that case, you may wish to time-limit your search algorithm, in which case
System.currentTimeMillis() will again be helpful.
- Note: If you would like to see and/or make use of my Homework #2 code,
please mention it as you submit your Homework #2 work via email. You will
submit this work via email as well. Please include all necessary files
for compilation and question answering in a single .zip file as an