WORCESTER POLYTECHNIC INSTITUTE
Computer Science Department

CS4341 ❏ Artificial Intelligence ❏ A'06

Mon, Tue, Thu, Fri - noon - AK 233
Prof. David C. Brown, Fuller Lab 131, (508) 831-5618, dcb at cs.wpi.edu

Version: Thu Aug 31 16:09:31 EDT 2006

PROJECT 2 - An Intelligent System

Overview:

The task is to write an intelligent system (IS), using rules and the RI, to do some basic intelligent task in some domain of your choosing. Sample tasks might be Design, Diagnosis, or Criticism, for example. The "domain" might be Bicycles, for example. So, some domain/task combinations might be Bicycle Design, or Bicycle Diagnosis.

Problem Characteristics:

The problem must:

  • be solved using only the Rule Interpreter (RI) from project 1;
  • be challenging enough so that it cannot be done in a single step;
      {i.e., reasoning requires many rules to be used, with intermediate results, in order to produce a solution}
  • require some specialized knowledge to solve;
  • be able to be done using one of forward chaining or backward chaining;
  • allow its statement and solution to be expressed in the attribute/value format of the RI's Working Memory;
  • not require any, or much, calculation;
  • not require any human intervention or additional input;
  • not require backtracking (i.e., retracting values already decided) to solve;
  • involve a domain in which you have some strong knowledge;
  • be challenging enough that class members would agree that solving it requires intelligence, not just memory.

Sample Tasks:

In order to build a rule-based system to implement the intelligent task you select, you first need to define the task clearly. Do that in terms of the inputs it requires, the knowledge it needs, the output it produces, and a characterization of the transformations it makes on the input.

As a way to help you get started, here below are some basic tasks that might be candidates for your IS. Your system must be an example of one of these types of tasks.

    Configuration selects and arranges components from a predefined set in order to satisfy some requirements. Typically, each component has a restricted set of possible connections.

      {e.g., producing a description of a table appropriate for small, light loads that has a base, a top, and one central leg}

    Criticism compares an item against a standard, or some preferences, and points out the ways in which it is lacking.

      {e.g., pointing out that something very heavy with lots of sharp edges will be very hard for people to lift and move around}

    Diagnosis by Classification can be used to categorize a given state as a certain type of known problem in order to decide what sort of treatment might be used.

      {e.g., deciding that someone with blue toenails and a cough has Fitzwilliam's disease, so that a treatment might then be selected}

    Evaluation uses the results of analysis, or some specific aspects of the item, to provide an estimate of its quality or the degree to which it meets some goals.

      {e.g., deciding that a 2 foot thick table top made of marble is a poor quality solution}

    Parametric Design produces values for attributes, such as color or length, by calculation, or by simple selection.

      {e.g., deciding the material, paint color, and dimensions of a table top.}

Techniques:

Note that forward-chaining is typically used when you want to drive the reasoning from the data towards the solution. Backward-chaining is typically used when you have a hypothesized result that you want to show. In general, you aim towards the larger "target". So, if you have lots of data and only one thing to show, then work backwards. If you have a little data and lots of possible things that might be shown then work forwards. Diagnosis is often associated with backward reasoning, and design with forward. It isn't really quite that simple. Decide for yourself with your problem, but be willing to defend it.

If you need to decompose the problem into pieces, or the reasoning into phases, then leave "flags" in the WM that say what subgoal is currently being tackled. So, for example, an entry in the WM might be (phase second), and a rule might say something like (IF ((SecondPhase?) AND ...) THEN ( ... )).

You will need to develop a set of predicates and a set of actions that can be used in rules to express the knowledge that can be used to solve the problem. Feel free to add special actions if you need them, that print for example. All rule interaction must only be through values set in the WM.

Demonstration:

The domain, and the intelligent task that you are to implement and demonstrate, is up to you. A set of about 30-50 rules will be adequate. To fully show the capabilities of your IS include a variety of runs with different initial situations. For some of the key runs a clear, self-explanatory "demonstration" must be provided, not just the initial input and the answer (see Introduction page for details).

Note that THIS page describes the project requirements, and a solution that looks like one online or in any AI text is not acceptable.

For the due date, see the Schedule. Projects must be completed by the start of class on the due date.

Submit

You must submit:

  • On paper and via turnin:
    • Descriptions of your problem and your domain.
    • An explanation of whether you've used forward- or backward-chaining and why.
    • Brief, clear documentation that describes the design of your intelligent system, including the structure of the reasoning done (e.g., what sort of intermediate results are obtained, and how they are used).
    • A description of any changes you made to your RI in order to get this IS to work. Note that you do not need to resubmit your RI code.

  • Via turnin only:
    • All the test cases that are intended to show that the IS is functioning correctly. These should be commented to explain what they are supposed to mean/show.
    • The output from the IS test/demonstration runs. These should not be annotated as they should be self-explanatory.
    • A listing of all the rules, predicates, and actions.

How to submit:


Please note:

  1. Clearly label all printed work with your name and with the ID number provided by the TA.
  2. Clearly label each file with a helpful name.
  3. ZIP your entire project directory. Make sure it only contains the files to be submitted. Use "zip" and not some other compression tool.
  4. Name the file as your user name + "-proj2.zip"   For example, "washington-proj2.zip"
  5. Submit the zipped project using web turnin.
  6. The project's turnin assignment name is "project2".
Please let us know if you still have problems.