School Routing System                                                     James W. Carter
A Structured Matcher Expert System                                CSCI 222

    The School Routing System (SRS) is an expert system (ES) intended for personal use only. My Problem Solver (PS) system will accept weather parameters as well as a list of things to do and provide clothing, routing and method of travel suggestions in return. I live on the edge of Chapman town, so the routing information is in relation to my home. A main plan is divided into three tasks: choosing clothing, picking a route to take, and choosing a method of transportation. Differing aspects of the input parameters satisfy the subgoals, or steps.

    Daily, people must decide what to wear (unless they live in a nudist colony) and how to get where they need to be for the day (unless they are hermits). Planning what to wear, a route to take, and how to get there can be complicated by secondary duties to be performed, such as walking the dog. I believe that the weather and the daily duties to be performed generally determine an entire days plans.

    The GPS satellite systems plan routes for subscribers. I am not sure if an expert system is involved, but it seems likely. Knowledge based (KBS) planning systems seem to be used mostly in manufacturing. The military is active in this realm, as is the aeronautics industry. I could find no RBS ES personal planners using on-line search engines. I did find some info at http://leav-www.army.mil/nsc/warsim/reason/assess/section3.htm#8 that speaks of AI planning systems. The author defined "AI Planning [as] a computational process of assembling a sequence of acions to accomplish a goal".

 Hierarchy Window

    I used a VisualWorks Specialist (Router1) to set up a plan (School Router) for preparing to go to school.   Tasks called by the plan are; Get dressed, Get route, and Get method.  The Get dressed task requests weather information in order to chose a clothing arrangement.  The Get route task requests information concerning the things which must be accomplished today.  The Get method task chooses a method of travel (eg. drive, walk, etc.) based on things to be accomplished today and certain weather restraints.  The SRS chooses  by use of a structured matcher embedded within each step (below the task on the hierarchy).  The SRS then prints out the recommendations/suggestions for clothing, routing, and method of travel.

    Input parameters, intermediate decisions, and output statements were created from standard data structures provided by VisualWorks.  I could not get a multiple-valued variable to work so I had to create a bunch of yes/no variables for the multivalued TODO variable from project 1.  The output values were created from the same variable pool.

   The algorithm was created with a capacity for expansion. For instance, routes are very general. A typical route may be 'park route', meaning to travel by way of the park. This could be expanded to plan a specific route from among many possible park routes. Clothing could also be made more specific based on a database of clothing choices. Simply adding new specialists for these added features would accomplish the additional requirements without affecting the current system.  Additional specialists could also be added for planning routes on non-school days, such as for work days or weekends.  These additional specialists would be extremely easy to add due to the windows and methods provided by the VisualWave package.

    The program works quite well for the purpose created. It is not general in that another person could not use it unless they had similar circumstances to mine. It could not be used once I move, either, since it is specific to Chapman town, although VisualWorks makes it much easier to modify individual components of a system.  It could be modified relatively easily for a new location as well as for a new user.

    I could not specify the use of a variable that could contain multiple values. I do not know if this is my problem, or the multivalued variable in the system does not mean that it can contain multiple values simultaneously.