Expert Systems Chapter 7 Introduction to CLIPS Entering and Exiting CLIPS A> CLIPS  CLIPS (V6.5...

download 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>

of 50

  • date post

    14-Dec-2015
  • Category

    Documents

  • view

    220
  • download

    5

Embed Size (px)

Transcript of Expert Systems Chapter 7 Introduction to CLIPS Entering and Exiting CLIPS A> CLIPS  CLIPS (V6.5...

  • Slide 1

Slide 2 Expert Systems Chapter 7 Introduction to CLIPS Slide 3 Entering and Exiting CLIPS A> CLIPS CLIPS (V6.5 09/01/97) CLIPS> exit exit CLIPS> (+ 3 4) 7 CLIPS> (exit) A> 7.5 Slide 4 Facts A chunk of information in CLIPS is called a fact. Facts consists of a relation name followed by zero or more slots and their associated values. (person (name John Q. Public) (age 23) (eye-color blue) (hair-color black)) The order in which slots are specified is irrelevant. 7.6 Slide 5 Deftemplate Construct Defining the list of valid slots for a given relation name. Analogous to a record structure in Pascal. Format: (deftemplate [ ] *) : (slot | ( multislot ) Slide 6 Defining person fact (deftemplate person An example deftemplate (slot name) (slot age) (slot eye-color) (slot hair-color)) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color black)) The person template The fact following the format of person template Slide 7 Multifield Slots Slots of a fact that have been specified with the slot keyword in their deftemplates are allowed to contain only one value. Which specified with multislot keyword are allowed to contain zero or more values. Slide 8 Defining person fact with multislot (deftemplate person An example deftemplate (multislot name) (slot age) (slot eye-color) (slot hair-color)) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color brown)) Multislot Specifying multislot Slide 9 Ordered Facts Facts with a relation name that has a corresponding deftemplate are called deftemplate facts. Facts with a relation name that does not have a corresponding deftemplate are called ordered facts. Whenever CLIPS encounters an ordered fact it automatically creates an implied deftemplate for that fact (as opposed to an explicit deftemplate, created using the deftemplate construct). Slide 10 Example: (number-list 7 9 3 4 20) is equivalent to defining (deftemplate number-list (multislot values)) and then defining the fact as (number-list (values 7 9 3 4 20)) Slide 11 Cases where Ordered Facts are useful Case 1: Facts consisting of just a relation name are useful as flags and look identical regardless of whether a deftemplate has been defined. (all-orders-processed) Case 2: For facts containing a single slot, the slot name is usually synonymous with the relation name. (time (value 8:45)) can be changed to (time 8:45) Slide 12 CONSTRUCT DEFTEMPLATE IMPLIED DEFTEMPLATE EXPLICIT DEFTEMPLATE FACT ORDERED FACT DEFTEMPLATE FACT (number-list 7 9 3 4 20) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color brown)) (deftemplate person (multislot name) (slot age) (slot eye-color) (slot hair-color)) Is-a IS-A Creates Is-a Creates Is-a Slide 13 CONSTRUCT DEFTEMPLATE IMPLIED DEFTEMPLATE EXPLICIT DEFTEMPLATE FACT ORDERED FACT DEFTEMPLATE FACT (number-list 7 9 3 4 20) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color brown)) (deftemplate person (multislot name) (slot age) (slot eye-color) (slot hair-color)) Is-a IS-A Creates Is-a Creates Is-a Relation Name Slide 14 CONSTRUCT DEFTEMPLATE IMPLIED DEFTEMPLATE EXPLICIT DEFTEMPLATE FACT ORDERED FACT DEFTEMPLATE FACT (number-list 7 9 3 4 20) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color brown)) (deftemplate person (multislot name) (slot age) (slot eye-color) (slot hair-color)) Is-a IS-A Creates Is-a Creates Is-a Fields Slide 15 CONSTRUCT DEFTEMPLATE IMPLIED DEFTEMPLATE EXPLICIT DEFTEMPLATE FACT ORDERED FACT DEFTEMPLATE FACT (number-list 7 9 3 4 20) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color brown)) (deftemplate person (multislot name) (slot age) (slot eye-color) (slot hair-color)) Is-a IS-A Creates Is-a Creates Is-a Slots Slot Name Slot Value (a field) Slide 16 CONSTRUCT DEFTEMPLATE IMPLIED DEFTEMPLATE EXPLICIT DEFTEMPLATE FACT ORDERED FACT DEFTEMPLATE FACT (number-list 7 9 3 4 20) (person (name John Q. Public) (age 23) (eye-color blue) (hair-color brown)) (deftemplate person (multislot name) (slot age) (slot eye-color) (slot hair-color)) Is-a IS-A Creates Is-a Creates Is-a Multifield Slot Single-field Slot Slide 17 Adding Facts Syntax: (assert +) Example: CLIPS> (deftemplate person (slot name) (slot age) (slot eye-color) (slot hair-color)) CLIPS> (assert (person (name John Q. Public) (age 23) (eye-color blue) (hair-color black))) CLIPS> 7.7 Slide 18 Display the facts Syntax: (facts) Example: CLIPS> (facts) f-0 (person (name John Q. Public) (age 23) (eye-color blue) (hair-color black)) For a total of 1 fact. CLIPS> Fact identifier, 0: fact index Slide 19 Asserting multiple facts with single assert (assert (person (name John Q. Public) (age 23) (eye-color blue) (hair-color black)) (person (name Jane Q. Public) (age 26) (eye-color green) (hair-color red))) Slide 20 Removing Facts Syntax: (retract +) Example: John Q. Public can be removed from the fact list with the command (retract 0) and Jane can be removed by (retract 1) Attempting to retract a nonexistent fact will produce an error. Slide 21 Modifying Facts Syntax: (modify +) Example: CLIPS> (modify 0 (age 24)) CLIPS> (facts) f-2(person (name John Q. Public) (age 24) (eye-color blue) (hair-color black)) For a total of 1 fact. CLIPS> A new fact index is generated for a modified fact. 7.8 Slide 22 Duplicating Facts Works the same with modify but not retracting the original fact. Syntax: (duplicate +) Slide 23 Example: CLIPS> (duplicate 2 (name Jack S. Public)) CLIPS> (facts) f-2(person (name John Q. Public) (age 24) (eye-color blue) (hair-color black)) f-3 (person (name Jack S. Public) (age 24) (eye-color blue) (hair-color black)) For a total of 2 facts. CLIPS> Slide 24 Debugging Syntax: (watch ) The is one of the symbols facts, rules, activations, statistics, compilations, focus, or all. By default, when CLIPS is first started, compilations are watched and the remaining watch items are not watched. 7.9 Slide 25 Example: CLIPS> (facts 3 3) f-3 (person (name Jack S. Public) (age 24) (eye-color blue) (hair-color black)) For a total of 1 fact. CLIPS> (watch facts) CLIPS> (modify 3 (age 25)) f-4 (person (name Jack S. Public) (age 25) (eye-color blue) (hair-color black)) CLIPS> Indicating that the fact is being retracted. Indicating that the fact is being asserted. Slide 26 Defining Initial Knowledge It is convenient to be able to automatically assert a set of facts instead of typing in the same assertions from the top level. Initial knowledge: facts that are known to be true before running a program. Groups of facts that represent initial knowledge can be defined using the deffacts construct. 7.10 Slide 27 Deffacts Construct Syntax: (deffacts [ ] *) Example: (deffacts people Some people we know (person (name John Q. Public) (age 24) (eye-color blue) (hair-color black)) (person (name Jack S. Public) (age 24) (eye-color blue) (hair-color black)) (person (name Jane Q. Public) (age 36) (eye-color green) (hair-color red))) Slide 28 Reset The reset command removes all facts from the fact list and then asserts the facts from existing deffacts statement. CLIPS> (unwatch facts) CLIPS> (reset) CLIPS> (facts) f-0(initial-fact) f-1 (person (name John Q. Public) (age 24) (eye-color blue) (hair-color black)) f-2 (person (name Jack S. Public) (age 24) (eye-color blue) (hair-color black)) f-3 (person (name Jane Q. Public) (age 36) (eye-color green) (hair-color red)) For a total of 4 facts. CLIPS> Slide 29 Initial Fact A new fact generated by the reset command called initial-fact. Upon startup, CLIPS automatically defines the following two constructs: (deftemplate initial-fact) (deffacts initial-fact (initial-fact)) Even if no any deffacts statements defined, a reset will assert the fact (initial-fact). Slide 30 Rules Rules can be typed directly into CLIPS or loaded in from a file of rules created by an editor. Example: pseudocode of plant monitoring IF the emergency is a fire THEN the response is to activate the sprinkler system Representing emergency: (deftemplate emergency (slot type)) Representing response: (deftemplate response (slot action)) 7.11 Slide 31 Rule Representation General format of a rule: (defrule [ ] * ;Left-hand side (LHS) => *) ;Right-hand side (RHS) Representing the rule: (defrule fire-emergency An example rule (emergency (type fire)) => (assert (response (action activate-sprinkler-system)))) Slide 32 Conditional Elements After the rule header are zero or more conditional elements (CEs). The simplest type of CE is a pattern CE or simply pattern. Each pattern consists of one or more constraints intended to match the fields of a deftemplate fact. Slide 33 Example (defrule fire-emergency An example rule (emergency (type fire)) (emergency (type flood)) => (assert (response (action activate-sprinkler-system)))) pattern Conditional Elements Slide 34 Rule without Pattern If a rule has no patterns, the special pattern (initial-fact) will be added as a pattern for the rule. Since the initial-fact deffacts is automatically defined, any rules with no patterns on their LHSs will be activated when a reset command is performed since the (initial-fact) fact will automatically be asserted. Thus any rule without LHS patterns will be placed on the agenda when a reset is performed Slide 35 Program Execution Syntax: (run [ ]) limit: maximum number of rules to be fired The facts asserted by a reset satisfy the patterns of one or more rules and place activations of these rules on the agenda. Issuing the run command then begins execution of the program. 7.12 Slide 36 Displaying the Agenda Syntax: (agenda) Example: CLIPS> (reset) CLIPS> (assert (emergency (type fire))) CLIPS> (agenda) 0fire-emergency: f-1 For a total of 1 activation. CLIPS> Slide 37 Run (Example continue) CLIPS> (run) CLIPS> (facts) f-0(initial-fact) f-1(emergency (type fire)) f-2(response action activate-sprinkler-s