May 28, 1993
by
Joseph C. Giarratano, Ph.D.
In this chapter you'll learn how to pattern match on instances. One way is with rules. Also, CLIPS has a number of query functions to match instances. In addition, control facts and slot daemons can be used for pattern matching.
Object Lessons
One of the new features of Version 6.0 is the ability of rules to pattern match on objects. In order to use this feature you must first specify whether a class is reactive to pattern matching on the LHS of rules using the pattern-match role. If the pattern-match is reactive, the class may be pattern matched. If the class is nonreactive, it is not. The default is non-reactive.
You can also specify whether a slot facet reactive or non-reactive using the slot facet pattern-match reactive or pattern-match non-reactive. The following example shows how the value of the slot sound is pattern matched by a rule.
CLIPS> (clear)
CLIPS>
(defclass DUCK (is-a USER)(role concrete)(pattern-match reactive)
(multislot sound (create-accessor read-write)
(default quack quack)))
CLIPS> (make-instance [Dorky_Duck] of DUCK)
[Dorky_Duck]
CLIPS> (make-instance [Dinky_Duck] of DUCK)
[Dinky_Duck]
CLIPS> (defrule find-sound
?duck <- (object (is-a DUCK)(sound $?find))
=>
(printout t "Duck " (instance-name ?duck) " says " ?find crlf))
CLIPS> (run)
Duck [Dinky_Duck] says (quack quack)
Duck [Dorky_Duck] says (quack quack)
CLIPS>
The object-pattern conditional element object is followed by the classes and slots to be matched against. Following the is-a and the slot-name can be constraint expressions involving ?, $?, &, and |.
In addition, instance names can be specified for pattern matching. The following example shows how only one instance of the DUCK class is matched using the name constraint, name, of instances. Note that name is a reserved word and cannot be used as a slot name.
CLIPS> (defrule find-sound
?duck <- (object (is-a DUCK)(sound $?find)(name [Dorky_Duck]))
=>
(printout t "Duck " (instance-name ?duck) " says " ?find crlf))
CLIPS> (run)
Duck [Dorky_Duck] says (quack quack)
CLIPS>
Objects in the Database
Consider the following general type of problem. Given some instances, how many satisfy a specified condition? For example, shown following are the defclasses and definstances of Joe's Home showing the various types of sensors and the appliances connected to them. Notice that an abstract class DEVICE is defined since both SENSOR and APPLIANCE inherit common slots type and location.
(clear)
(defclass DEVICE (is-a USER)(role abstract)
(slot type (create-accessor read-write)(access initialize-only));Sensor type
(slot loc (create-accessor read-write)(access initialize-only)));Location
(defclass SENSOR (is-a DEVICE)(role concrete)
(slot reading (create-accessor read-write))
(slot min (create-accessor read-write)(access initialize-only)) ;Min reading
(slot max (create-accessor read-write)(access initialize-only)) ;Max reading
(slot app (create-accessor read-write)(access initialize-only)));SEN. APP.
(defclass APPLIANCE (is-a DEVICE)(role concrete)
(slot setting (create-accessor read-write)) ; Depends on appliance
(slot status (create-accessor read-write))) ; off or on
(definstances ENVIRONMENT_OBJECTS
(T1 of SENSOR (type temperature)
(loc kitchen)
(reading 110) ; Too hot
(min 20)
(max 100)
(app FR))
(T2 of SENSOR (type temperature)
(loc bedroom)
(reading 10) ; Too cold
(min 20)
(max 100)
(app FR))
(S1 of SENSOR (type smoke)
(loc bedroom)
(reading nil) ; Bad sensor nil reading
(min 1000)
(max 5000)
(app SA))
(W1 of SENSOR (type water)
(loc basement)
(reading 0) ; OK
(min 0)
(max 0)
(app WP))
(FR of APPLIANCE (type furnace)
(loc basement)
(setting low) ; low or high
(status on))
(WP of APPLIANCE (type water_pump)
(loc basement)
(setting fixed)
(status off))
(SA of APPLIANCE (type smoke_alarm)
(loc basement)
(setting fixed)
(status off)))
Suppose the following questions or queries are asked. What are all the objects in the database? How are all the objects arranged? What are the relationships between objects? What are all the devices? What are all the sensors? What are all the appliances? Which sensor is connected to which appliance? Are there any sensors whose type is temperature? What sensors of type temperature have a reading between min and the max? An even more basic query is whether or not there are any sensors present.
The query system of COOL is a set of six functions that may be used for pattern matching an instance-set and performing actions. An instance-set is a set of instances, such as the instances of SENSOR. The instances in the instance-set may come from multiple classes that do not have to be related. In other words, the classes do not have to be from the same inheritance path.
The following table from the CLIPS Reference Manual, summarizes the predefined query functions that may be used for instance-set access.
Function Purpose any-instancep Determines if one or more instance- sets satisfy a query find-instance Returns the first instance- set that satisfies a query find-all-instances Groups and returns all instance- sets which satisfy a query do-for-instance Performs an action for the first instance- set which satisfies a query do-for-all-instances Performs an action for every instance- set which satisfies a query as they are found delayed- do- for- all- instances Groups all instance- sets which satisfy a query and then iterates an action over this groupInstance-set Query Functions
I'll Take Any
The any-instancep function is a predicate function that returns TRUE if there is an instance matching the pattern and FALSE otherwise. Shown following is an example of this query function used with the SENSOR and APPLIANCE classes and instances. The query function determines if there is any instance in the SENSOR class.
CLIPS> (reset)
CLIPS> (instances)
[initial-object] of INITIAL-OBJECT
[T1] of SENSOR
[T2] of SENSOR
[S1] of SENSOR
[W1] of SENSOR
[FR] of APPLIANCE
[WP] of APPLIANCE
[SA] of APPLIANCE
For a total of 8 instances.
CLIPS> (any-instancep ((?ins SENSOR)) TRUE)
TRUE ;Function returns TRUE because there is a SENSOR instance
CLIPS> (any-instancep ((?ins DUCK)) TRUE) ; Evaluation error--Bad!
[PRNTUTIL1] Unable to find class DUCK. ; No DUCK class
CLIPS>
The basic format of a query function involves an instance-set-template to specifies the instances and their classes, an instance-set-query as the boolean condition that the instances must satisfy, and an action to specifies the single action to be taken. Multiple actions can be included by grouping them with the progn function.The predicate function class-existp returns TRUE if the class exists and FALSE otherwise.
The combination of instance name followed by the one or more class restrictions is called an instancesetmembertemplate. The query functions may generally be used like any other function in CLIPS. Shown following are the Rules of Scope which describe the restrictions on the use of variables in a query function. The term scope means the section of code where a variable is visible or known. The term reference means the name or address by which a variable is accessed. In other words, the scope of a variable means where the variable can be referenced, e.g., bound or printed. Anything which is not prohibited by these rules is allowed, such as nesting. Also, the term query refers to the query portion of the query function, not the query function itself.
There are two steps involved in trying to satisfy a query. First, CLIPS generates all the possible instance-sets that match the instance-set-template. Second, the boolean instance-set-query is applied to all the instance-sets to see which ones, if any, satisfy the query. Instance-sets are generated by a simple permutation of the members in a template, where the rightmost members are varied first. Note that a permutation is not the same as a combination because order matters in a permutation but not in a combination.
The function find-all-instances returns a multifield value of all instances which satisfy the query, or an empty multifield value for none. The do-for-instance query function is similar to find-instance except that it performs a single distributed action when the query is satisfied. The do-for-all-instances function is similar to the do-for-instance except that it performs an action for every instance-set that satisfies the query.
Design Decisions
In contrast to rules which are only activated when their patterns are satisfied, deffunctions are explicitly called and then executed. Just because a rule is activated does not mean it will be executed. Deffunctions are completely procedural in nature because once called by name, their code is executed in a procedural manner, statement by statement. Also, no pattern matching involving constraints is used in a deffunction to decide if its actions should be executed. Instead, any arguments that match the number expected by the deffunction argument list will satisfy the deffunction and cause its actions to be executed.
The basic idea of deffunctions as named procedural code is carried to a much greater degree with defgenerics and the defmethods that describe their implementation. A defgeneric is like a deffunction but much more powerful because it can do different tasks depending on its argument constraints and types. The ability of a generic function to perform different actions depending on the classes of its arguments is called overloading the function name.
By proper use of operator overloading, it's possible to write code that is more readable and reusable. For example, a defgeneric for the "+" function can be defined with different defmethods. The expression,
(+ ?a ?b)
could add two real numbers represented by ?a and ?b, or two complex numbers, or two matrices, or concatenate two strings, and so forth depending if there is a defmethod defined for the argument classes. CLIPS does this by first recognizing the type of the arguments and then calling the appropriate defmethod defined for those types. A separate overloaded defmethod for "+" would be defined for each set of argument types except for the predefined system types such as real numbers. Once the defgeneric is defined, it's easy to reuse in other programs.
Any named function that is system defined or external can be overloaded using a generic function. Notice that a deffunction cannot be overloaded. An appropriate use of a generic function is to overload a named function. If overloading is not required, you should define a deffunction or an external function.
The syntax of defgenerics is very simple, consisting of just the legal CLIPS symbol name and an optional comment.
(defgeneric <name> [<comment>])
As a simple example of generic functions, consider the following attempt in CLIPS to compare two strings using the ">" function.
CLIPS> (clear)
CLIPS> (> "duck2" "duck1")
[ARGACCES5] Function > expected argument #1 to be of type integer or float
CLIPS>
It's not possible to do this comparison with the ">" function because it expects NUMBER types as arguments.
However, it's easy to define a (defgeneric) which will overload the ">" to accept STRING types as well as NUMBER types. For example, if the arguments of ">" are of type STRING, the defgeneric will do a string comparison, letter by letter starting from the left until the ASCII codes differ. In contrast, if the arguments of ">" are of type NUMBER, the system compares the sign and magnitude of the numbers. The user- defined ">" for STRING types is an explicit method, while a system-defined or user-defined external function such as ">" for NUMBER type is an implicit method.
The technique of overloading a function name so that the method which implements it is not known until run-time is another example of dynamic binding. Any object reference of name or address may be bound at run-time in CLIPS to functions through dynamic binding also.
Some languages such as Ada have a more restrictive type of overloading in which the function name must be known at compile time rather than at run-time. The run-time dynamic binding is the least restrictive since methods can be created during execution by the (build) statement. However, you should be careful in using (build) since dynamically creating constructs is often hard to debug. Also, the resulting code may be difficult to verify and validate since you'll have to stop execution to examine the code. Dynamic binding is a characteristics of a true object- oriented programming language.
Following is an example of a defgeneric, ">", for STRING types and its method.
CLIPS> (defgeneric >) ; Header declaraction. Actually unnecessary
CLIPS> (defmethod > ((?a STRING) (?b STRING))
(> (str-compare ?a ?b) 0))
CLIPS> (> "duck2" "duck1") ; The overload ">" works correctly
TRUE ; in all three cases.
CLIPS> (> "duck1" "duck1")
FALSE
CLIPS> (> "duck1" "duck2")
FALSE
CLIPS>
The (defgeneric) acts as a header declaration to declare the type of function being overloaded. It's not actually necessary to use a defgeneric in this case because CLIPS implicitly deduces the function name from the defmethod name, which is the first symbol following "defmethod". The header is a forward declaration that is necessary if the (defgeneric) methods have not yet been defined, but other code such as defrules, defmessage-handlers, and so forth refers to the (defgeneric) name.
Other Features
Compared to deffunctions, a method has an optional method index. If you don't supply this index, CLIPS will provide a unique index number among the methods for that generic function, that can be viewed by the listdefmethods command. The method body can be printed using the ppdefmethod command. A method can be removed with an undefmethod function call.
The ranking of methods determines the method precedence of a generic function. It is the method precedence which determines the methods order of listing. Higher precedence methods are listed before lower precedence methods. The highest precedence method will also be tried first by CLIPS.
A shadowed method is one in which one method must be called by another. The process by which CLIPS picks the method with highest precedence is called the generic dispatch. For more information, see the CLIPS Reference Manual.
G. Riley, "Benchmarking Expert System Tools," Proceedings of ROBEX '86, NASA/Johnson Space Center, Houston, TX, June 1986.
G. Riley, "Implementation of an Expert System Shell on a Parallel Computer," Proceedings of The Third Annual Artificial Intelligence & Advanced Computer Technology Conference, Long Beach Convention Center, Long Beach, CA, April 1987.
G. Riley, "Implementing CLIPS on a Parallel Computer," Proceedings of The First Annual Workshop on Space Operations Automation and Robotics (SOAR `87), NASA/Johnson Space Center, Houston, TX, August 1987.
C. Culbert, G. Riley, and R. Savely, "Approaches to the Verification of Rule-Based Expert Systems," Proceedings of The First Annual Workshop on Space Operations Automation and Robotics (SOAR `87), NASA/Johnson Space Center, Houston, TX, August 1987.
G. Riley, C. Culbert, R. Savely, and F. Lopez, "CLIPS: An Expert System Tool for Delivery and Training," Proceedings of the Third Conference on Artificial Intelligence for Space Applications, Huntsville, AL, November 1987.
C. Culbert, G. Riley, and R. Savely, "Verification Issues for Rule-Based Expert Systems," Proceedings of the Third Conference on Artificial Intelligence for Space Applications, Huntsville, AL, November 1987.
C. Culbert, G. Riley, R. Savely, and J. Giarratano, "A Solution to the Expert System Delivery Problem," Proceedings of the ISA/88, Houston, TX, October 1988.
G. Riley, C. Culbert, and R. Savely, "CLIPS: An Expert System Tool for Training, Development, and Delivery," Intelligent Systems Review, Volume 1, Number 1, Fall 1988.
Joseph C. Giarratano, Chris Culbert, and Robert T. Savely, "The State of the Art for Current and Future Expert System Tools," ISA Transactions, Vol. 29, No. 1, pp. 17-25, Jan. 1990
G. Riley and B. Donnell, "Advanced CLIPS Capabilities," Proceedings of The Fourth Annual Workshop on Space Operations Applications and Research (SOAR `90), NASA/Johnson Space Center, Albuquerque, NM, June 1990.
G. Riley, "CLIPS: A Tool for the Development and Delivery of Expert Systems," Proceedings of the Technology 2000 Conference, Washington, DC, November 1990.
G. Riley, "CLIPS: An Expert System Building Tool," Proceedings of the Technology 2001Conference, San Jose, CA, December 1991.
Joseph C. Giarratano and Gary Riley, Expert Systems Principles and Programming, PWS Pub. Co.
Aug. 13-15, 1990
NASA/Johnson Space Center, Gilruth Center
NASA Conference Publication 10049
A1.1-W. J. Parkinson, G.F. Luger, R.E. Bretz
Three CLIPS-Based Expert Systems for Solving Engineering Problems
A1.2-Ken Porter
Building Engineering Expert Systems in CLIPS
B1 SESSION: Intelligent Tutors and Training
B1.1-Randall W. Hill, Jr., Brad Pickering
Intelligent Tutoring Using HyperCLIPS
B1.2-Grace Hua
Developing An Intelligent Computer-Aided Trainer
B1.3-Stephen J. Mueller
Incorporating CLIPS into a Personal-Computer-Based Intelligent Tutoring System
A2 SESSION: Intelligent Software Engineering
A2.1-Barry W. Cameron
Hardware Independence Checkout Software
A2.2-Keith Morris
Automating Symbolic Analysis with CLIPS
B2 SESSION: Automated Knowledge Acquisition I
B2.1-Dr. Vishweshwar V. Dixit
EDNA: Expert Fault Digraph Analysis Using CLIPS
B2.2 Janice A. Jordan, Min-Jin Lin, Richard J. Mayer, Mark E. Sterle
A Middle Man Approach To Knowledge Acquisition in Expert Systems
A3 SESSION: Network Applications
A3.1-Roger F. Hansen
JESNET Expert Assistant
A3.2-Albert Leigh
The Network Management Expert System Prototype for Sun Workstations
A3.3-Tom Wannemacher
Using CLIPS in A Distributed System - The Network Control Center (NCC) Expert System
B3 SESSION: Automated Knowledge Acquisition II
B3.1-Larry Mason
From Data Rich to Information Wealthy-A CASE for CLIPS
B3.2-Tim Saito
Supplemental Knowledge Acquisition through External Product Interface for CLIPS
B3.3-Gary B. Young
Rule Induction Techniques
A4 ESSION: Verification and Validation
A4.1-Ravi M. Rangan
Enforcing Compatibility and Constraint Conditions and Information Retrieval at the Design Action
A4.2-J. B. Coombs, C Chang, R. a> Stachowitz
Validation of Knowledge-based Systems
B4 SESSION: Enhancements to CLIPS-General I
B4.1-James L. Rogers
Decomposing a Complex Design Problem Using CLIPS
B4.2-Jaye Hicks
Fault-Tolerant, Embedded CLIPS Applications
B4.3-Wesley A. White
CLIPS/Ada-An Ada-Based Tool for Building Expert Systems
A5 SESSION: Space Shuttle Quality Control/Diagnosis
A5.1-Luis M. Flores, Roger F. Hansen
System Control Module Diagnostic Expert Assistant
A5.2-George D. Lardas
Prototype Automated Post-MECO Ascent I-Load Verification Data Table
A5.3-Amy Y. Murphey
An Expert System to Manage the Operation of the Space Shuttle's Cryogenic Fuel Tank Cryogenic Reactant Tanks
B5 SESSION: Enhancements to CLIPS-General II
B5.1-Mala Mehrota, Sally C. Johnson
Rule Groupings in Expert Systems
B5.2-James R. Geissman
Automatically Structuring and Translating CLIPS
A6 SESSION: Space Shuttle and Real-time Applications
A6.1-Donald Culp
Interpretation of Space Shuttle Telemetry
A6.2-Arthur N. Rasmussen
The INCO Expert System Project-CLIPS in Shuttle Mission Control
A6.3-R. J. Frainier, N. Groleau, R. Bhatnagar. C. Lam, M. Compton, S. Colombano, S. Lai, P. Szolovits, M. Manahan, I. Statler, L. Young
A Comparison of CLIPS and LISP-Based Approaches to the Development of a Real-time Expert System
A6.4-Joseph D. Mainardi, Dr. Gerry Szatkowski
Knowledge Base Rule Partitioning Design for CLIPS
A6.5-Scott A. Dudek, Matthew R. Barry
Space Shuttle Systems Monitoring: Real-Time Telemetry Processing Using CLIPS
B6 SESSION: Medical, Biological and Agricultural Applications
B6.1-Sarjeev Batra, Bradley University
GENEX: A Knowledge-based Expert Assistant for Genbank Data Analysis
B6.2-Robert H. Fritz
Knowledge Assisted Diagnosis of Mood Disorders Using DSM-III
B6.3-Dr. Gary C. Salzman
A CLIPS Expert System for Clinical Flow Cytometry Data Analysis
B6.4-Dr. Bernard A. Engel, D.D. Jones, R.L. Rhykerd, L.M. Rhykerd, C.L. Rhykerd, Jr.
A CLIPS Expert System for Maximizing Alfalfa (Medicago Sativa L.) Production
B6.5-Dr. Chi N. Thai, J.N. Pease, R.L. Shewfelt
A Decision Support System for Delivering Optimal Quality Peach and Tomato
A7 SESSION: Quality Control Applications
A7.1-Cpt. John F. Mack
The Table of Distribution and Allowances (TDA) System Analyzer
A7.2-Richard O'Donnell
MOM-A Meteorological Data Checking Expert System in CLIPS
A7.3-Mark Tischendorf
Automated Decision Stations
B7 SESSION: Intelligent Databases, and Networks
B7.1-Lynn Fischer, Judson D. Cary
ISLE: Intelligent Selection of Loop Electronics-A CLIPS/C++/INGRES Integrated Application
B7.2-James Snyder, Dr. Laurian Chirica
An SQL Query Generator for CLIPS
B7.3-Bernard P. Wess
_CLIPSE = Presentation Management + NASA CLIPS + SQL
A8 SESSION: Space Station Freedom Applications
A8.1-Christopher Marsh
A PC Based Fault Diagnosis Expert System
B8 SESSION: User Interface I
B8.1-Dr. Bernard A. Engel, C.C. Rewerts, R. Srinivasan, J.B. Rogers, Dr. D.D. Jones
CLIPS Interface Development Tools and Their Application
B8.2-Charles R. Patton
CLIPS-A Proposal for Improved Usability
B8.3-Brad Pickering, Randall W. Hill, Jr.
HyperCLIPS-A HyperCard Interface to CLIPS
A9 SESSION: Space Shuttle and Satellite Applications
A9.1-Thomas P. Gathmann
A Dynamic Satellite Simulation Testbed Based on CLIPS and CLIPS-Derived Tools
A9.2-Dr. Christopher Landauer
Analysis of MMU FDIR Expert System
A9.3-Barbara Pauls
Satellite Simulations Utilizing CLIPS
B9 SESSION: User Interface II
B9.1-Dr. Thomas J. Nagy
Improving the Human Factors of Software with CLIPS
B9.2-Mark Sterle, Richard J. Mayer, Janice A. Jordan, Howard N. Brodale, Min-Jin Lin
A Memory Efficient User Interface for CLIPS Micro-computer Applications
B9.3-Ross C. Miller, Chuck Kosta, Matt Vesty
Prototyping User Displays Using CLIPS
A10 SESSION: Artificial Neural Systems and Fuzzy Logic
A10.1-Elizabeth Charnock, Norman Eng
CLIPS on the NeXT Computer
A10.2-Dr. Cathy H. Wu, Pamela A. Taylor, George M. Whitson, Cathy Smith
CLIPS-A Tool for Corn Disease Diagnostic System and an Aid to Neural Network for Automated Knowledge Acquisition
A10.3-Brenda McGee, Himanshu Bhatnagar
A Neural Network Simulation Package in CLIPS
B10 SESSION: Enhancements to CLIPS: Reasoning/Representation
B10.1-Hisham Assal, Dr. Leonard Myers
Implementation of a Frame-Based Representation in CLIPS
B10.2-Aurora C. Diaz, Robert A. Orchard
BB_CLIPS-Blackboard Extensions to CLIPS
A11 SESSION: Parallel and Distributed Processing I
A11.1-Steve Geyer
CLIPS Meets the Connection Machine or How to Create a Parallel Production System
A11.2-David Goldstein
PRAIS-Distributed, Real-time Knowledge-Based Systems Made Easy
B11 SESSION: Enhancements to CLIPS-Object Oriented
B11.1-Mark Auburn
Integrating an Object System into CLIPS-Language Design and Implementation Issues
B11.2-M. Aldrobi, S. Anastasiadis, B. Khalife, M. Galler, K. Kontogiannis, Prof. Renato De Mori
CLIPS Enhanced with Objects, Backward Chaining, and Explanation Facilities
B11.3-David S. Logie, H. Kamil
Integration of Object-Oriented Knowledge Representation with the CLIPS Rule-Based System
B11.4-Clifford Sobkowicz
An Object-Oriented Extension to CLIPS
A12 SESSION: Parallel and Distributed Processing II
A12.1-Dr. Leonard Myers, Coe Johnson, Dean Johnson
MARBLE - A System for Executing Expert Systems in Parallel
A12.2-Dr. Roger Schultz, Iain Stobie
Building Distributed Rule-Based Systems Using the AI Bus
A12.3-James Taylor, Dr. Leonard Myers
Executing CLIPS Expert Systems in a Distributed Environment
B12 SESSION: Enhancements to CLIPS:Graphics/X-Windows
B12.1-Andres C. Callegari
Integrating Commercial off-the-shelf (COTS) Graphics and Extended Memory Packages with CLIPS
B12.2-Ben M. Faul
Constructing Complex Graphics Applications with CLIPS and the X-Window System
b13.3-Dr. Terry Feagin
A Graphical Interface to CLIPS Using SunView
A13 SESSION: Aerospace Applications
A13.1-Matthew R. Barry
On a Production System Using Default Reasoning for Pattern Classification
A13.2-Tim Conway
Embedding CLIPS in a Data-base-Oriented Diagnostic System
A13.3-Dr. Pamela K. Fink, David T. Lincoln
UFC Advisor-An AI-Based System for the Automatic Test Environment
B13 SESSION: Advisory Systems I
B13.1-Chet Lund
Expert System for Scheduling Simulation Lab Sessions
B13.2-Dave Lavery, William D. Brooks
MacDoctor-The Macintosh Diagnoser
B13.3-S. Al-Mutawa, V. Srinivas, Dr. Young B. Moon
Development of an Instructional Expert System for Hole Drilling Processes
A14 SESSION: Simulation and Defense
A14.1-Dr. Linfu Cheng, John D. McKendrick, Jeff Liu, Elcee Computek, Inc.
Knowledge/Geometry-Based Mobile Autonomous Robot Simulator KMARS
A14.2-Brett Gossage
Embedded CLIPS for SDI BM/C3 Simulation and Analysis
A14.3-Patrick McConagha, Joseph Reynolds
Embedding CLIPS-Based Expert Systems in a Real-time Object-Oriented Simulation
B14 SESSION: Advisory Systems and Tutors
B14.1-Dr. David R. Read
SPILC-An Expert Student Advisor
B14.2-David J. Swanson
Prediction of Shipboard Electromagnetic Interference (EMI) Problems Using Artificial Intelligence (AI) Technology
B14.3-Andrew Warinner
Building an Intelligent Tutoring System for Procedural Domains
B14.4-Dr. Patrick Krolak, Mark Miller, Brenda McGee, Stanley J. Barr
Integrating PCLIPS into ULowell's Lincoln Logs Factory of the Future
A15 SESSION: Intelligent Control
A15.1-Cody R. Nivins
A Object-Oriented Generic Controller Using CLIPS
A15.2-A.A. Rabeau, K.D. Jamison, A. Bensaoula, C. Horton, A. Ignatiev, J.G. Glover
Applying CLIPS to Control of Molecular Beam Epitaxy Processing
NASA/Johnson Space Center, Gilruth Center
NASA Conference Publication 10085
AGENDA 3
SESSION 1
Rule Groupings: An Approach Towards Verification of Expert Systems 21
Enhanced Use of CLIPS at the Los Alamos National Laboratory 25
SESSION 2A.
Using a CLIPS Expert System to Automatically Manage TCP/IP
Networks and Their Components 41
NMESys: An Expert System for Network Fault Detection 52
A Mission Executor for an Autonomous Underwater Vehicle 58
SESSION 2B
The Automated Army ROTC Questionnaire (ARQ) 71
Decision Blocks: A Tool for Automating Decision Making in CLIPS 76
Automated Predictive Diagnosis (APD): A Three Tiered
Shell for Building Expert Systems for Automated Prediction and Decision Making 89
ICADS: A Cooperative Decision Making Model With CLIPS Experts 102
SESSION 3A
A CLlPS/-Window Interface 151
Application of Machine Learning and Expert Systems to
Statistical Process Control (SPC) Chart Interpretation 123
Application of Software Technology to Automatic Test Data Analysis 139
SESSION 3B
Acquisition, Representation and Rule Generation for Procedural Knowledge 149
Projects in an Expert System Class 162
Using CLIPS as the Cornerstone of a Graduate Expert Systems Course 166
SESSION 4A
CRN5EXP - Expert System for Statistical Quality Control 173
Distributed Semantic Networks and CLIPS 177
Object-Oriented Knowledge Representation for Expert Systems 186
SESSION 4B
Linkfinder: An Expert System that Constructs Phylogenic Trees 199
Generating Target System Specifications from a Domain Model Using CLIPS 209
The Management and Security Expert (MASE) 227
Adding Run History to CLIPS 237
CLIPS Application User Interface for the PC 253
Expert Networks in CLIPS 267
ECLIPS: An Extended CLIPS for Backward Chaining and Goal-Directed Reasoning 273
SESSION 5B
Extensions to the Parallel Real-Time Artificial Intelligence
System (PRAIS) for Fault-Tolerant Heterogeneous Cycle-Stealing Reasoning 287
PCLIPS- Parallel CLIPS 294
Separating Domain and Control Knowledge Using Agenda 307
Integrating CLIPS Applications into Heterogeneous Distributed Systems 308
SESSION 6A
Data-Driven Backward Chaining 325
Automated Information Retrieval Using CLIPS 332
Proposal for a CLIPS Software Library 344
SESSION 6B
Improving NAVFAC's Total Quality Management of
Construction Drawings with CLIPS 357
Validation of an Expert System Intended for Research in
Distributed Artificial Intelligence 365
Testing Validation Tools on CLlPS-Based Expert Systems 382
SESSION 7A
Design Concepts for Integrating the IMKA Technology with CLIPS 395
A CLlPS-Based Tool for Aircraft Pilot-Vehicle Interface Design 407
On the Generation of Graphical Objects and Images from within CLIPS Using XView 417
SESSION 7B
Passive Acquisition of CLIPS Rules 423
YUCSA: A CLIPS Expert Database System to Monitor Academic Performance 436
A CLIPS Based Personal Computer Hardware Diagnostic System 445
SESSION 8A
PVEX - An Expert System for ProducibilityNalue
Engineering 455
Rule Groupings in Expert Systems Using Nearest Neighbour
Decision Rules and Convex Hulls 464
Debugging Expert Systems Using a Dynamically Created Hypertext Network 475
SESSION 8B
Implementing a Frame Representation in CLIPS/COOL 497
Application of a Rule-Based Knowledge System Using CLIPS
for the Taxonomy of Selected Opuntia Species 505
The Nutrition Advisor Expert System 511
To obtain updated and detailed information on all software tools developed by the Software Technology Branch (STB), you may log onto the STB Bulletin Board. You will find software release information, abstracts, information make-files, ordering information, bug reports, work arounds, and much more. An option is also available to communicate with NASA technical staff via email options. Anyone can use the BBS whether they are a government user or not. Simply call up the BBS 24 hours a day, and create yourself an individual account.
STB BULLETIN BOARD
Logon: (713) 286-5375, OR (713) 286-7252
300, 1200, 2400 Baud, No Parity, 8 Data bits, 1 Stop Bit
Internet Mail Address (NOT THE STB BULLETIN BOARD): stbprod@fdr.jsc.nasa.gov
STB Help Desk (Voice): (713) 286-8919
STB Help Desk (FAX): (713) 286-4479
CLIPS: A productive development and delivery expert system tool which provides a complete environment for the construction of rule and/or object based expert systems. CLIPS is the first language to provide a verification/validation utility for the development of expert systems. The key features of CLIPS are knowledge representation, portability, integration/extensibility, interactive development, and objects.
NETS: A software tool which provides an environment for the development and evaluation of neural networks. With NETS you can create and execute arbitrary configurations of neural networks which use the back propagation learning technique. NETS is portable and will run on a variety of machines from mainframes to personal computers.
COSTMODL: A software tool which automates the process of developing estimates of the effort and schedule required for the development of a software product. With COSTMODL, you can estimate development costs for a wide range of software products including incrementally developed programs and programs written in Ada.
Splicer: A genetic algorithm tool which can be used to solve search and optimization problems. Genetic algorithms are adaptive search procedures based loosely on the processes of natural selection and Darwinian "survival of the fittest." Splicer provides the underlying framework and structure for building a genetic algorithm application.
TARGET: A graphical interface tool that captures procedural knowledge and produces a task hierarchy report. The initial design of TARGET was based on a knowledge tool developed by the Naval Systems Training Center, called VISTA. Target is currently written in C and is available for the Microsoft Windows platform, with future platform ports to Macintosh and X-Windows.
warfare engagements 205
B
C
D
E
F
G
H
I
K
L
M
N
O
P
Q
R
S
SYMBOL
| constraint, 60
T
U
V
W