University of Washington, Bothell
CSS 482: Expert Systems
Winter 2009
Expert System Assignment 2
Assigned: Monday, February 2, 2009
Due: Monday, February 9, 2009
To get your creative juices flowing, use the following deftemplates:
(deftemplate father-of (slot father) (slot child))
(deftemplate mother-of (slot mother) (slot child)) (deftemplate male (slot name)) (deftemplate female (slot name)) (deftemplate wife-of (slot wife) (slot husband)) (deftemplate husband-of (slot husband) (slot wife)) |
and write rules that will infer the following relations. Describe the additional deftemplates you add to solve the problem.
Create a set of deffacts that include at least 10 people and will allow you to exercise all of your rules. In addition to submitting your code, please submit an example run showing the initial facts and the inferred relations.
Write a program to schedule CSS classes for a student. Use the information from the CSS time schedule pages for the 2008–09 academic year and the course catalog for course prerequisites. Your program should represent the quarters, days, and times for each course and the prerequisites for each course as a set of unordered facts. User input should consist of:
Your program should, as much as possible, create a schedule for the academic year that allows the student to take all of the desired courses without exceeding the credit limits for any quarter, without “double booking” the student in two courses, and without scheduling a course when the student doesn’t have its prerequisite. This may involve scheduling courses that the student didn’t request so that a prerequisite for a desired course is satisfied.
I suggest that you consider building this expert system so that reasoning proceeds in emphphases, perhaps starting with determining if any prerequisite courses need to be added to the list of courses to schedule. Use whatever heuristics seem reasonable to you for developing your rules. You might also consider the various techniques discussed in class for higher-level organization of expert systems into phases or modules. Your program will be judged on whether it works:
Items 1–3 above are the most important; you can consider 4 and 5 to be “extra credit”.
Please submit your program, with documentation (in which you outline your approach, ordered in the steps given above, with the answers to the questions above included) and example runs (that illustrate each of the grading criteria given), to our CollectIt drop box. Your written documentation should be concise, but should allow the reader to understand your design without reference to the code.
Your code should be easy to read and understand. Use consistent indentation. Each file should start with a comment that includes the file name, your name, the date and a summary of the file purpose/contents. Each deftemplate, defrule, etc. should have a useful comment string and comments indicating what each slot means. The gist of your written documentation should be included in comments in your file(s).
There are a total of 100 points available in this assignment. The warmup is worth 20 points. Of the remaining points to be awarded for the scheduling expert system, 5 points will be for comments in the code, 10 points for documentation, 20 points for items 1 and 2 above, and 25 points for item 3. Items 4 and 5 above are worth 10 points extra credit each.