This page answers some possible questions about the assignment. If you have questions about anything else, please let us know! Any general-interest Q/A pairs will be added here.
A: It's fine simply to assume that all the problems you give the system will be from the same set, in which case this isn't an issue.
If you would like to allow the system to receive problems from either set, you could consider having a limit on the effort expended to adapt the retrieved case, with the system reverting to problem-solving from scratch when the limit is exceeded. Feel free to come up with other methods too, though!
A: You're free to select whatever you consider most informative for this. Note that the experiments only need to be suggestive; you don't need to test extensive problem sets.
A: In some form, this output should describe the process of generating the path from the current start state to the old start state, and the process of generating the path from old goal state to the new goal state. If your system does this from scratch, your system could output information such as the starting and end states and the number of states checked. The goal of this output is for an observer to get a good idea of what your program is doing (which can be very important when demonstrating AI systems!).
Here's a specific illustration of one possible set of output information. Each step would be identified by a label (e.g., "Case retrieval step"), and the steps would each output the following information:
- For retrieval, for each stored plan, output:
the initial state,
the goal state
and the similarity rating if the plan was checked for similarity.
- For case adaptation, output:
The path of board states from the initial state of the current problem
to the state just before the initial state of the retrieved solution.
The path of board states of the retrieved solution
- For case storage, output the complete solution
A: This is up to you.
A: If you include an initial case-base, please store it in the file with your code. However, it's fine for your program to start with an empty case-base and build up the case base when the program is run, with nothing written to a file. In that case, you'll want to use a variable to store the case-base as it's built up from one run to another during a single scheme session.
(define 8-puzzle-cbr (lambda (start goal)))Can we assume that start and goal are still defined prior to a run with make-initial-state() and make-goal-state(), as in the original 8-puzzle assignment?
A: Yes, this is how the start and goal states will be created, just as in homework 2.
A: The solution code uses greedy best-first search, not A*, for its informed search. The resulting paths are not guaranteed to be optimal.