31
© C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

Embed Size (px)

Citation preview

Page 1: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

1

COMP 4200: Expert SystemsCOMP 4200:

Expert Systems

Dr. Christel Kemke

Department of Computer Science

University of Manitoba

Page 2: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

2

CLIPS Introduction 2CLIPS Introduction 2

Review and Introduction 2 CLIPS Programming System Basic CLIPS Constructs and Syntax

Fields and Templates Complex Condition Patterns Input and Output Salience

Page 3: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

3

CLIPS – Programming SystemsCLIPS – Programming SystemsCLIPS Interpreter enter commands, direct modification of fact base ...

CLIPS File-Menu load, save and edit CLIPS program files

CLIPS Edit-Menu Balance (ctrl B), Comment CLIPS Execution-Menu set execution parameters (e.g. reset, run, clear, watch,

constraint checking, halt)

CLIPS Browse-Menu manage and info about constructs

CLIPS Window-Menu current status info, e.g. Facts, Activations, …

Page 4: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

4

Working with Facts Working with Facts Changing fact base Adding facts (assert <facts>) Deleting facts (retract <fact-identifier>) Modifying facts (modify <fact-identifier>

(deftemplate facts) (<slot-name> <slot-value>)) Duplicating facts (duplicate <fact-identifier>

(deftemplate facts) (<slot-name> <slot-value>))

Monitoring program execution Print all facts (facts) Displays changes(watch facts), also for rules ... Dribble record trace into file

Page 5: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

5

CLIPS – Basic ConstructsCLIPS – Basic ConstructsBasic Language Elements:

Fields (basic Data Types; slot fillers)

Facts (used in condition patterns)

Rules (condition-action rules)

Templates (like records; define facts)

Classes (like objects; define facts)

Messagehandlers (like methods defined for classes; used in condition patterns

and actions)

Page 6: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

6

Fields - ExamplesFields - Examples

Fields (data types) 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, ?dayvariables for single field value

$?names variable for multi-field value

Page 7: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

7

Template and Fact with Single Field

Template and Fact with Single Field

Single value in a slot:(person (name "Johnny B. Good" ) (age 42))

Defined based on:(deftemplate person

(slot name)(slot age))

A single field slot stores one single field value, e.g. the string "Johnny B. Good" or the integer / number 42 in the example above.

Page 8: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

8

Multislots and MultifieldsMultislots and Multifields

More than one value in a slot:(person (name Johnny B. Good) (age 42))

Defined based on:(deftemplate person

(multislot name)(slot age))

A multi-slot allows several field values to be stored in one slot, e.g. the 3 field values Johnny, B. and Good in the example above.

Page 9: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

9

Slot RestrictionsSlot RestrictionsDefined Template with Slot-Restrictions

(Constraint-Attributes):

(deftemplate person (slot name (type STRING))(slot age (type INTEGER))(slot gender (allowed-symbols male female))

)

Page 10: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

10

Slot Constraint-AttributesSlot Constraint-Attributes<constraint-attribute> ::= <type-attribute> |

<allowed-constant-attribute> |

<range-attribute> |

<cardinality-attribute>

<default-attribute>

<type-attribute> ::= (type <type-specification> )

<type-specification> ::= <allowed-type>+ | ?VARIABLE

<allowed-type> ::= SYMBOL | STRING | LEXEME |

INTEGER | FLOAT | NUMBER |

INSTANCE-NAME | INSTANCE-ADDRESS |

INSTANCE | FACT-ADDRESS |

EXTERNAL-ADDRESS

Page 11: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

11

Slot Constraint-AttributesSlot Constraint-Attributes

Type + Allowed Values (Enumeration, Collection)

<allowed-constant-attribute>

::= (allowedsymbols <symbol-list>) |

(allowedstrings <string-list>) |

(allowed-lexemes <lexeme-list>) |

(allowedintegers <integer-list>) |

(allowedfloats <float-list>) |

(allowednumbers <number-list>) |

(allowed-instance-names <instance-list>) |

(allowedvalues <value-list>)

Page 12: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

12

Slot Constraint-AttributesSlot Constraint-Attributes

Range of Values (min and max value)

<range-attribute> ::= (range <range-specification> <range-specification>)

<range-specification> ::= <number> | ?VARIABLE

Number of Fillers (min and max)

<cardinality-attribute> ::= (cardinality

<cardinality-specification>

<cardinality-specification>)

<cardinality-specification> ::= <integer> | ?VARIABLE

Page 13: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

13

Variables and WildcardsVariables and Wildcardssingle-field variable binds single value

?<symbol> e.g. ?age, ?x, ?address?fact-variable

multi-field variable accepts multiple values; $?<symbol> can bind multi-field value

single-field wildcard matches any single-field value?

multi-field wildcard matches any multi-field value$?

Page 14: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

14

All Kinds of VariablesAll Kinds of Variables

(defrule birthday “A person’s birthday”

?f1 <- (person (name $?name) (age ?age))

?f2 <- (has-birthday $?name)

=>

(printout t “Happy Birthday,” $?name)

(retract ?f1)

(retract ?f2)

(assert (person (name $?name) (age (+ ?age 1)))))

Q: With which patterns does the Condition match?

A: e.g. (person (name Johnny B. Good) (age 42))

Page 15: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

15

All Kinds of Variables 2All Kinds of Variables 2

(defrule birthday “A person’s birthday”

?f1 <- (person (name ?name $?) (age ?age))

?f2 <- (has-birthday ?name)

=>

(printout t “Happy Birthday,” ?name)

(retract ?f2)

(modify ?f1 (age (+ ?age 1))))

Q1: What is $? matching with?

Q2: What is the rule doing?

Page 16: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

16

Complex Condition Elements

Complex Condition Elements

logical connectives and, or, not to combine patterns

forall and exists – consider all matches/ only one match in further evaluation

logical – connects condition element and asserted fact in action (Truth Maintenance)

use test-condition (test <predicate-expression>)

field-constraints &, |, and &: attached to slot of (deftemplate) condition pattern

Page 17: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

17

Field Constraints (Connected Pattern Constraints)

Field Constraints (Connected Pattern Constraints)

not ~ not this value(name ~Simpson)

(age ~40)

or | could be one of these values(name Simpson|Oswald)

(age 30|40|50)

and & attaches constraint to variable(name ?name&~Simpson)(name ?name&Harvey)

expr. : adds expression as constraint(age ?age&:(> ?age 20))(name ?name&:(eq (sub-string 1 1 ?name)

"S")checks whether the sub-string from 1 to 1 (first letter) of the name is "S"

checks whether the age is above 20

Page 18: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

18

Field ConstraintField Constraint

(defrule you-wish “something with people and age”(person (name ?name) (age ?age&:(> ?age 20))=>(printout t ?name “is over twenty.” crlf)(printout t ?name “is “ ?age “years old.” crlf))

Q1: Which patterns match this Condition?

Q2: What is the rule doing?

Page 19: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

19

Condition Patterns with Logical Connectives

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)notexists to be fulfilled for one matching fact forall to be fulfilled for all facts which match

based on first fact and variable binding

Page 20: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

20

Complex Condition Elements - orComplex 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

Page 21: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

21

Complex Condition Elements – exists

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)

Page 22: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

22

Complex Condition Elements – forallComplex 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.

Page 23: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

23

ExerciseExercise

(defrule special-age “18, 21, 100”(or (person (name ?name) (age 18))

(person (name ?name) (age 21))(person (name ?name) (age 100)))

=>(printout t ?name “ has a special age.”))

Task: Modify the condition pattern so that you use a variable for age, and field constraints for the values, and printout the name and age of any matching person.

Page 24: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

24

(deftemplate person(slot age (type INTEGER))(multislot name (type STRING))(slot gender (allowed-values f m)) )

(deffacts people (person (age 20) (name "Mike" "M." "Moore") (gender m))(person (age 40) (name "James" "J." "James" ) (gender m))(person (age 42) (name "Susan" "D." "More") (gender f))(person (age 28) (name "John" "J." "Jones") (gender m)) )

(defrule what-am-I-doing (or (person (name ?first ?middle ?last&:(eq ?last "Moore"))) (person (name ?first ?middle ?last&:(eq ?last "More"))) )

=>(printout t "Found " ?first " " ?last crlf) )

Q2: Can you simplify the Condition Element? Do it!

Q1: What is the rule doing?

Page 25: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

25

bind-functionbind-functionbind-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

Page 26: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

26

Open, Close FileOpen, Close FileOpen file for read/write:

(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>)

Page 27: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

27

Input – read, readlineInput – read, readlineread – input of single fieldreadline – 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))

Page 28: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

28

Input – read, readline Input – read, readline (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

Page 29: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

29

Output - printoutOutput - 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)

Page 30: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

30

Rules - Runtime EffectsRules - Runtime Effects

refraction each rule fires only once on the same data

agenda rules are activated in sequence and put on agenda; agenda

is like a stack: the last rule fires first

salience sequence of rule firings - in case of a conflicts – is

determined by their set salience factor: the higher the salience, the higher the rule priority

Page 31: © C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba

© C. Kemke CLIPS 1

31

Rules - SalienceRules - Salience

(defrule say-hello (declare (salience 10))(person (name ?name)) =>(printout t “Hello,” ?name))

(defrule say-happy-birthday(declare (salience 100))(person (name ?name)) =>(printout t “Happy Birthday,” ?name))

Rules defined with salience factor:

The higher the salience, the higher the rule priority in conflict situations.