Expert systems CLIPS Seyed Hashem Davarpanah

Slides:



Advertisements
Similar presentations
© C. Kemke XPS Implementation 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
Advertisements

The CLIPS Programming Tool History of CLIPS –Influenced by OPS5 and ART –Implemented in C for efficiency and portability –Developed by NASA, distributed.
CLIPS 1 Expert Systems Dr. Samy Abu Nasser. CLIPS 2 Course Overview u Introduction u CLIPS Overview u Concepts, Notation, Usage u Knowledge Representation.
November 2, 2004AI: CLIPS Language Tutorial1 CLIPS Michael Scherger Department of Computer Science Kent State University.
The Web Warrior Guide to Web Design Technologies
Expert System Shells - Examples
Samad Paydar Ferdowsi University of Mashhad.  C Language Integrated Production System (CLIPS)  A tool for building expert systems  An expert system.
1 01/12/2011Knowledge-Based Systems, Paula Matuszek Intro to CLIPS Paula Matuszek CSC 9010, Spring, 2011.
November 2, 2004AI: CLIPS Language Tutorial1 Artificial Intelligence CLIPS Language Tutorial Michael Scherger Department of Computer Science Kent State.
Chapter 8 Pattern Matching
© C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
Introduction to CLIPS (Lecture Note #17)
Chapter 7: Introduction to CLIPS
CLIPS C Language Integrated Production System Note: Some slides and/or pictures are adapted from Lecture slides / Books of Dr Zafar Alvi.
Artificial Intelligence Lecture No. 18 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Rule Based Systems Michael J. Watts
Chapter 12: Expert Systems Design Examples
Expert System Human expert level performance Limited application area Large component of task specific knowledge Knowledge based system Task specific knowledge.
Introduction to CLIPS (Chapter 7) Fact List (contains data) Knowledge Base (contains rules) Inference Engine (controls execution)
CS Lecture 03 Outline Sed and awk from previous lecture Writing simple bash script Assignment 1 discussion 1CS 311 Operating SystemsLecture 03.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Introduction to Scripting.
© Franz J. Kurfess CLIPS 1 CPE/CSC 481: Knowledge-Based Systems Dr. Franz J. Kurfess Computer Science Department Cal Poly.
© C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
© C. Kemke Control 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
Chapter 8: Advanced Pattern Matching Expert Systems: Principles and Programming, Fourth Edition.
Chapter 9: Modular Design, Execution Control, and Rule Efficiency Expert Systems: Principles and Programming, Fourth Edition.
Introduction to Jess.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
JavaScript, Third Edition
Guide To UNIX Using Linux Third Edition
Introduction to Unix (CA263) Introduction to Shell Script Programming By Tariq Ibn Aziz.
CS 561, Session 25 1 Introduction to CLIPS Overview of CLIPS Facts Rules Rule firing Control techniques Example.
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
Fundamentals of Python: From First Programs Through Data Structures
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
1 01/12/2011Knowledge-Based Systems, Paula Matuszek More Intro to CLIPS Paula Matuszek CSC 9010, Spring, 2011.
Fundamentals of Python: First Programs
Chapter 9: Modular Design, Execution Control, and Rule Efficiency Expert Systems: Principles and Programming, Fourth Edition.
Chapter 7: Introduction to CLIPS Expert Systems: Principles and Programming, Fourth Edition.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
Artificial Intelligence Lecture No. 17 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Chapter 10: Procedural Programming Expert Systems: Principles and Programming, Fourth Edition.
Input, Output, and Processing
Shell Script Programming. 2 Using UNIX Shell Scripts Unlike high-level language programs, shell scripts do not have to be converted into machine language.
Linux+ Guide to Linux Certification, Third Edition
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
Introduction to Programming with RAPTOR
Chapter 7: Introduction to CLIPS Presented By: Farnaz Ronaghi.
Expert Systems Chapter 7 Introduction to CLIPS Entering and Exiting CLIPS A> CLIPS  CLIPS (V6.5 09/01/97) CLIPS> exit exit CLIPS> (+ 3 4)  7 CLIPS>
Advanced Pattern Matching. Field constraints Used to restrict the values of a field on LHS of a rule Used to restrict the values of a field on LHS of.
Artificial Intelligence Lecture No. 26 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
Artificial Intelligence Lecture No. 24 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Introduction to CLIPS. Expert Systems: Principles and Programming, Fourth Edition2 What is CLIPS? CLIPS is a multiparadigm programming language that provides.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Introduction to Scripting.
Artificial Intelligence Lecture No. 19 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
By Mr. Muhammad Pervez Akhtar
Mostly adopted from Jason Morris notes (Morris Technical Solutions)
Artificial Intelligence Lecture No. 22 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
The CLIPS Expert System Shell Dr Nicholas Gibbins
Summary for final exam Agent System..
Introduction to CLIPS 2 Session 13 Course: T0273 – EXPERT SYSTEMS Year: 2014.
Jörg Kewisch, June 10, 2013, LILUG Meeting CLIPS C Language Integrated Production System Developed at the Software Development Branch, NASA Lyndon B. Johnson.
Intelligent Systems JESS constructs.
Chapter 7: Introduction to CLIPS
Chapter 8: Advanced Pattern Matching
بسم الله الرحمن الرحیم آموزش نرم افزار CLIPS
Chapter 11: Classes, Instances, and Message-Handlers
CPE/CSC 481: Knowledge-Based Systems
Presentation transcript:

Expert systems CLIPS Seyed Hashem Davarpanah Davarpanah@usc.ac.ir University of Science and Culture

Motivation CLIPS is a decent example of an expert system shell rule-based, forward-chaining system it illustrates many of the concepts and methods used in other XPS shells it allows the representation of knowledge, and its use for solving suitable problems

Introduction CLIPS stands for forward-chaining pattern-matching C Language Implementation Production System forward-chaining starting from the facts, a solution is developed pattern-matching Rete matching algorithm: find ``fitting'' rules and facts knowledge-based system shell empty tool, to be filled with knowledge multi-paradigm programming language rule-based, object-oriented (Cool) and procedural

Rete Matching Algorithm An expert system might check each rule against the known facts in the knowledge base, firing that rule if necessary, then moving on to the next rule. For even moderate sized rules and facts knowledge-bases, this approach performs far too slowly. The Rete algorithm provides the basis for a more efficient implementation. A Rete-based expert system builds a network of nodes, where each node (except the root) corresponds to a pattern occurring in the left-hand-side (the condition part) of a rule. The path from the root node to a leaf node defines a complete rule left-hand-side. Each node has a memory of facts which satisfy that pattern. As new facts are asserted or modified, they propagate along the network, causing nodes to be annotated when that fact matches that pattern. When a fact or combination of facts causes all of the patterns for a given rule to be satisfied, a leaf node is reached and the corresponding rule is triggered.

The CLIPS Programming Tool history of CLIPS influenced by OPS5 and ART implemented in C for efficiency and portability developed by NASA, distributed & supported by COSMIC runs on PC, Mac, UNIX, VAX VMS CLIPS provides mechanisms for expert systems a top-level interpreter production rule interpreter object oriented programming language LISP-like procedural language

Components of CLIPS rule-based language can create a fact list can create a rule set an inference engine matches facts against rules object-oriented language (COOL) can define classes can create different sets of instances special forms allow you to interface rules and objects [Jackson 1999]

Notation symbols, characters, keywords square brackets [...] entered exactly as shown: (example) square brackets [...] contents are optional: (example [test]) pointed brackets (less than / greater than signs) < ... > replace contents by an instance of that type (example <char>) star * replace with zero or more instances of the type <char>* plus + replace with one or more instances of the type <char>+ (is equivalent to <char> <char>* ) vertical bar | choice among a set of items: true | false

Invoke / Exit CLIPS entering CLIPS exiting CLIPS double-click on icon, or type program name (CLIPS) system prompt appears: CLIPS> exiting CLIPS at the system prompt type (exit) Note: enclosing parentheses are important; they indicate a command to be executed, not just a symbol

Fields - Examples Fields (data types) Variables float 4.00, 2.0e+2, 2e-2 integer 4, 2, 22 symbol Alpha24*, !?@*$ string “Johnny B. Good” instance name [titanic], [PPK] Variables ?var, ?x, ?day variables for single field value $?names variable for multi-field value

CLIPS –Facts Facts (today is Thursday) a relation-name, an ordered sequence of values (ordered facts), or a set of (slot-name slot-value)-pairs (i.e. deftemplate-facts) examples: (today is Thursday) (person (name “Johnny B. Good”) (age 25))

Ordered Facts Ordered facts are facts defined without (explicit) template; the field-values are ordered. Examples: (number-list 1 2 55 6 7 42) (today is Sunday)

Deftemplate Facts Deftemplate-facts are facts defined based on a template; slots can be arranged arbitrarily, there is no specific order. Define a template for describing a set of facts using deftemplate (record structure) . Use deffacts to create a list of facts based on a template.

Examples of Facts ordered fact deftemplate fact (person-name Franz J. Kurfess) deftemplate fact (deftemplate person "deftemplate example” (slot name) (slot age) (slot eye-color) (slot hair-color))

Defining Facts Facts can be asserted Facts can be listed CLIPS> (assert (today is sunday)) <Fact-0> Facts can be listed CLIPS> (facts) f-0 (today is sunday) Facts can be retracted CLIPS> (retract 0) [Jackson 1999]

Instances an instance of a fact is created by (assert (person (name "Franz J. Kurfess") (age 46) (eye-color brown) (hair-color brown)) )

Initial Facts (deffacts kurfesses "some members of the Kurfess family" (person (name "Franz J. Kurfess") (age 46) (eye-color brown) (hair-color brown)) (person (name "Hubert Kurfess") (age 44) (eye-color blue) (hair-color blond)) (person (name "Bernhard Kurfess") (age 41) (person (name "Heinrich Kurfess") (age 38) (eye-color brown) (hair-color blond)) (person (name "Irmgard Kurfess") (age 37) (eye-color green) (hair-color blond)) )

Usage of Facts adding facts deleting facts modifying facts (assert <fact>+) deleting facts (retract <fact-index>+) modifying facts (modify <fact-index> (<slot-name> <slot-value>)+ ) retracts the original fact and asserts a new, modified fact duplicating facts (duplicate <fact-index> (<slot-name> <slot-value>)+ ) adds a new, possibly modified fact inspection of facts (facts) prints the list of facts (watch facts) automatically displays changes to the fact list

Rules general format (defrule <rule name> ["comment"] <patterns>* ; left-hand side (LHS) ; or antecedent of the rule => <actions>*) ; right-hand side (RHS) ; or consequent of the rule

Rule Components rule header rule antecedent (LHS) rule arrow defrule keyword, name of the rule, optional comment string rule antecedent (LHS) patterns to be matched against facts rule arrow separates antecedent and consequent rule consequent (RHS) actions to be performed when the rule fires

Rule - Example (defrule birthday “A person’s birthday” comment rule name (defrule birthday “A person’s birthday” (person (name ?name) (age ?age)) (has-birthday ?name ?age) => (printout t “Happy Birthday, ” ?name)) template fact ordered fact variables function terminal text variable

Examples of Rules simple rule (defrule birthday-FJK (person (name "Franz J. Kurfess") (age 46) (eye-color brown) (hair-color brown)) (date-today April-13-02) => (printout t "Happy birthday, Franz!") (modify 1 (age 47)) )

Wildcards question mark ? multi-field wildcard $? matches any single field within a fact multi-field wildcard $? matches zero or more fields in a fact

Salience We can use salience measures to prioritize rules. CLIPS provides a built-in method for prioritizing rules: (declare (salience value)) Salience values can range from -10000 to +10000. Default is 0. We can thus force the execution of one rule over another. We can implement sequencing of rules.

Rule Prioritization in Clips for example, consider the following rules... (forced order of execution)

Two Nifty Rules (defrule fire-first (declare (salience 30)) (priority first) => (printout t "Print First" crlf) ) (defrule fire-second (declare (salience 20)) (priority second) (printout t "Print Second" crlf) )

Field Constraints not constraint ~ or constraint | and constraint & the field can take any value except the one specified or constraint | specifies alternative values, one of which must match and constraint & the value of the field must match all specified values mostly used to place constraints on the binding of a variable

Mathematical Operators basic operators (+,-,*,/) and many functions (trigonometric, logarithmic, exponential) are supported prefix notation no built-in precedence, only left-to-right and parentheses test feature evaluates an expression in the LHS instead of matching a pattern against a fact pattern connectives multiple patterns in the LHS are implicitly AND-connected patterns can also be explicitly connected via AND, OR, NOT user-defined functions external functions written in C or other languages can be integrated Jess is tightly integrated with Java

Examples of Rules more complex rule (defrule find-blue-eyes (person (name ?name) (eye-color blue)) => (printout t ?name " has blue eyes." crlf))

Example Rule with Field Constraints (defrule silly-eye-hair-match (person (name ?name1) (eye-color ?eyes1&blue|green) (hair-color ?hair1&~black)) (person (name ?name2&~?name1) (eye-color ?eyes2&~?eyes1) (hair-color ?hair2&red|?hair1)) => (printout t ?name1 " has "?eyes1 " eyes and " ?hair1 " hair." crlf) (printout t ?name2 " has "?eyes2 " eyes and " ?hair2 " hair." crlf))

Using Templates (slot name (type STRING)) (deftemplate student “a student record” (slot name (type STRING)) (slot age (type NUMBER) (default 18))) CLIPS> (assert (student (name fred))) (defrule print-a-student (student (name ?name) (age ?age)) => (printout t ?name “ is “ ?age) ) [Jackson 1999]

An Example CLIPS Rule (defrule sunday “Things to do on Sunday” (salience 0) ; salience in the interval [-10000, 10000] (today is Sunday) (weather is sunny) => (assert (chore wash car)) (assert (chore chop wood)) ) [Jackson 1999]

Variables & Pattern Matching Variables make rules more applicable (defrule pick-a-chore (today is ?day) (chore is ?job) => (assert (do ?job on ?day)) ) if conditions are matched, then bindings are used [Jackson 1999]

Retracting Facts from a Rule (defrule do-a-chore (today is ?day) ; ?day must have a consistent binding ?chore <- (do ?job on ?day) => (printout t ?job “ done”) (retract ?chore) ) a variable must be assigned to the item for retraction [Jackson 1999]

Procedural Control in Actions Procedural Control Elements can appear on the RHS of a rule or in message-handlers of classes. (if <predicate-expression> then <expression>+ [else <expression>+ ]) ;;else-part optional (while <predicate-expression> [do] <expression>* ]) ;;‘do’ not mandatory

Example – if-then-else (defrule special-age “18, 21, 100” (or (person (name ?name) (age ?age&18)) (person (name ?name) (age ?age&21)) (person (name ?name) (age ?age&100))) => (if (= ?age 18) then (printout t ?name “ can buy beer in Canada.”) else (if (= ?age 21) then (printout t ?name “ can buy beer in the USA.”) (if (= ?age 100) then (printout t “The major will visit ” ?name ))...)

Condition Patterns with Logical Connectives Complex Conditions with logical connectives: (or (pattern1) (pattern2)) Rule becomes active if one of the patterns matches. example: (or (birthday) (anniversary)) matches fact base with facts (birthday) or (anniversary) Equivalent for: and (is default) not exists to be fulfilled for one matching fact forall to be fulfilled for all facts which match based on first fact and variable binding

Complex Condition Elements - or (defrule report-emergency (or (emergency (emergency-type fire) (location ?building)) (emergency (emergency-type bomb) (location ?building)) ) => (printout t “evacuate “ ?building) reports a building if there is a fire or bomb emergency in this building

Complex Condition Elements – exists (defrule emergency-report (exists (or (emergency (emergency-type fire)) (emergency (emergency-type bomb))) ) => (printout t “There is an emergency.“ crlf ) prints one emergency-message if there is a fire or bomb emergency. (no further matching, firing, or printout)

Complex Condition Elements – forall (defrule evacuated-all-buildings (forall (emergency (emergency-type fire | bomb) (location ?building) ) (evacuated (building ?building))) => (printout t “All buildings with emergency are evacuated “ crlf)) prints evacuated-message if for all buildings, which have a fire or bomb emergency, the building is evacuated.

Salience We can use salience measures to prioritize rules. CLIPS provides a built-in method for prioritizing rules: (declare (salience value)) Salience values can range from -10000 to +10000. Default is 0. We can thus force the execution of one rule over another. We can implement sequencing of rules.

Rule Prioritization in Clips for example, consider the following rules... (forced order of execution)

Two Nifty Rules (defrule fire-first (declare (salience 30)) (priority first) => (printout t "Print First" crlf) ) (defrule fire-second (declare (salience 20)) (priority second) (printout t "Print Second" crlf) )

Manipulation of Constructs show list of constructs (list-defrules), (list-deftemplates), (list-deffacts) prints a list of the respective constructs show text of constructs (ppdefrule <defrule-name>), (ppdeftemplate <deftemplate-name>), (ppdeffacts <deffacts-name>) displays the text of the construct (``pretty print'') deleting constructs (undefrule <defrule-name>), (undeftemplate <deftemplate-name>), (undeffacts <deffacts-name>) deletes the construct (if it is not in use) clearing the CLIPS environment (clear) removes all constructs and adds the initial facts to the CLIPS environment

bind-function bind-function – explicitly binds value to variable (bind ?age (read)) stores value of single field which is read into single-field variable ?age (bind ?name (readline)) stores line which is read as STRING into single-field STRING-variable ?address (bind ?address (explode$ (readline))) explode$ splits line which is read as STRING into multifield-value which is stored in multislot-variable ?address

Open, Close File Open file for read/write: Close file: (open “<file-name>” <logical-name> “r”) <file-name> is physical file-name (path) <logical-name> is name used in program “r” indicates read-access (“w”, “r+”) example: (open “example.dat” my-file “r”) (read my-file) Close file: (close <logical-name>)

Input – read, readline read – input of single field readline – input of complete (line as string) general: (read <logical name>) <logical name> refers to file-name in program (read) keyboard is default read with bind-function to bind input to variable: (bind ?input (read)) (bind $?input (readline))

Input – read, readline default is keyboard/terminal (read / readline <logical name>) default is keyboard/terminal file has to be opened using (open “<file-name>” <logical-name> “r”) <file-name> is physical file-name (can include path) <logical-name> is name used in read command “r” indicates read-access example: (open “example.dat” example “r”) (read example) use with bind-function to bind input to variable

Output - printout (printout <logical-name> ... ) t terminal is standard otherwise <logical-name> refers to a file-name file has to be opened using (open “<file-name>” <logical-name> “w” ) <file-name> is physical file-name (can include path) <logical-name> is name used in printout command “w” indicates write-access example: (open “example.dat” my-output “w” ) (printout my-output ?name crlf)

Program Execution agenda salience refraction if all patterns of a rule match with facts, it is put on the agenda (agenda) displays all activated rules salience indicates priority of rules refraction rules fire only once for a specific set of facts prevents infinite loops (refresh <rule-name>) reactivates rules

Execution of a Program (reset) prepares (re)start of a program: all previous facts are deleted initial facts are asserted rules matching these facts are put on the agenda (run [<limit>]) starts the execution breakpoints (set-break [<rule-name>]) stops the execution before the rule fires, continue with (run) (remove-break [<rule-name>]) (show-breaks)

Watching watching the execution (watch <watch-item>) prints messages about activities concerning a <watch-item> (facts, rules, activations, statistics, compilation, focus, all) (unwatch <watch-item>) turns the messages off

Watching Facts, Rules and Activations assertions (add) and retractions (delete) of facts rules message for each rule that is fired activations activated rules: matching antecedents these rules are on the agenda

More Watching ... statistics compilation (default) focus information about the program execution (number of rules fired, run time, ... ) compilation (default) shows information for constructs loaded by (load) Defining deftemplate: ... Defining defrule: ... +j=j +j, =j indicates the internal structure of the compiled rules +j join added =j join shared important for the efficiency of the Rete pattern matching network focus used with modules indicates which module is currently active

Defining Functions in CLIPS Uses a LISP or Scheme-like syntax (deffunction function-name (arg ... arg) action ... action) (deffunction hypotenuse (?a ?b) (sqrt (+ (* ?a ?a) (* ?b ?b)))) (deffunction initialize () (clear) (assert (today is sunday))) [Jackson 1999]

Defining Classes & Instances defining the class CAR (defclass car (is-a user) (name) (made-by)) defining an instance of CAR (make-instance corvette of car (made-by chevrolet)) [Jackson 1999]

Managing Instances Commands to display instances CLIPS> (instances) [corvette] of car CLIPS> (send [corvette] print) (made-by chevrolet) Command to group instances (in a file) (definstances (corvette of car (made-by chevrolet)) (thunderbird of car (made-by ford))) [Jackson 1999]

Clearing & Resetting Instances deleting an instance CLIPS> (send [corvette] delete) deleting all instances CLIPS> (unmake-instance *) resetting creates an initial object CLIPS> (reset) CLIPS> (instances) [initial-object] of INITIAL-OBJECT [Jackson 1999]

Limitations of CLIPS single level rule sets in LOOPS, you could arrange rule sets in a hierarchy, embedding one rule set inside another, etc loose coupling of rules and objects rules can communicate with objects via message passing rules cannot easily be embedded in objects, as in Centaur CLIPS has no explicit agenda mechanism the basic control flow is forward chaining to implement other kinds of reasoning you have to manipulate tokens in working memory [Jackson 1999]

Alternatives to CLIPS JESS Eclipse NEXPERT OBJECT see below enhanced, commercial variant of CLIPS has same syntax as CLIPS (both are based on ART) supports goal-driven (i.e., backwards) reasoning has a truth maintenance facility for checking consistency can be integrated with C++ and dBase new extension RETE++ can generate C++ header files not related to the (newer) IBM Eclipse environment NEXPERT OBJECT another rule- and object-based system has facilities for designing graphical interfaces has a ‘script language’ for designing user front-end written in C, runs on many platforms, highly portable [Jackson 1999]

JESS JESS stands for Java Expert System Shell it uses the same syntax and a large majority of the features of CLIPS tight integration with Java can be invoked easily from Java programs can utilize object-oriented aspects of Java some incompatibilities with CLIPS COOL replaced by Java classes a few missing constructs more and more added as new versions of JESS are released

CLIPS Summary notation facts rules variables, operators, functions similar to Lisp, regular expressions facts (deftemplate), (deffacts), assert / retract rules (defrule ...), agenda variables, operators, functions advanced pattern matching input/output (printout ...), (read ...), (load ...) program execution (reset), (run), breakpoints user interface command line or GUI

Important Concepts and Terms agenda antecedent assert backward chaining consequent CLIPS expert system shell fact field forward chaining function inference inference mechanism instance If-Then rules JESS knowledge base knowledge representation pattern matching refraction retract rule rule header salience template variable wild card