Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to CLIPS (Lecture Note #17)

Similar presentations


Presentation on theme: "Introduction to CLIPS (Lecture Note #17)"— Presentation transcript:

1 Introduction to CLIPS (Lecture Note #17)
인공지능 이복주 단국대학교 컴퓨터공학과

2 Outline Expert Systems: Principles and Programming, Joseph Giarratano & Gary Riley, PWS Publishing Company, 1998 Chapter 7 Introduction to CLIPS Chapter 8 Pattern Matching Introduction to Expert Systems, Peter Jackson Appendix CLIPS Programming

3 Introduction Three types of programming paradigms in CLIPS
Rule-based Object-oriented Procedural Will focus on rule-based Three components: fact list, knowledge base (rules), inference engine

4 CLIPS Support rule-based, object-oriented, and procedural programming
Programming language style is similar to OPS5, but more powerful Support only forward chaining rules Not backward chaining COOL: CLIPS Object-Oriented Language Extension of Common Lisp Object System (CLOS) Syntactically similar to LISP

5 CLIPS CLIPS: C Language Integrated Production System
Designed at NASA Johnson Space Center, mid-80s High portability, low cost, easy integration with external system Original CLIPS supported only rule-based (note: Production System) CLIPS version 5.0 added procedural and OO Due to its portability, installed various computers from PCs to CRAY Runs on UNIX, DOS, Windows, and Macintosh Maintained as public domain software E.g., Downloadable by anonymous ftp e.g.,

6 Notation (example) (example [1]) ; optional (example <integer>)
<> means replacement (example 5) (example –20) <integer>* * means zero or more 1 1 2 1 2 3

7 Notation <integer>+ All | none | some + means one or more
<integer>+ is same as <integer> <integer>* All | none | some | indicates a choice

8 Field Tokens Field: special tokens Numerical fields: Float, integer
Group of characters Some tokens consist of one character: e.g., ‘(‘, ‘)’ Field: special tokens Seven types of field Float, integer, symbol, string, external address, instance name, instance address Numerical fields: Float, integer Float: 1.5, 1.0, 0.7, 9e+1, 3.5e10 Integer: 1, +3, -1, 65 Symbol Starts with printable ASCII character, followed by zero or more characters

9 Field Delimiters ?, $: variable
Any non-printable ASCII characters (spaces, tabs, CRs, LFs) “ (double quote) ( (opening parenthesis) ) (closing parenthesis) ; (semi colon) & (ampersand) | (vertical bar) ~ (tilde) < (less than) ?, $: variable Cannot be placed at the beginning of a symbol

10 Field Examples of valid symbols Case-sensitive Space-Station February
fire Activate_sprinkler_system notify-fire-department !?#$^* 345B Case-sensitive Case-Sensitive CASE-SENSITIVE are different symbols

11 Field String Begin and end with double quotation
Examples of valid strings “Activate the sprinkler system.” “!?#$^” “John Q. Public” Spaces in a string are preserved “spaces” “spaces “ “ spaces” “ spaces “ are different strings “”three-tokens”” “” three-tokens

12 Field “\”single-token\”” “\\single-token\\”
“”single-token””: one string field “\\single-token\\” “\single-token\”: one string field External addresses, instance addresses, instance names Of little interest in rule-based Multi-field value Zero or more fields When calling a function (): zero length multi-field (this that): multi-field containing the symbols this and that

13 Entering and Exiting CLIPS
CLIPS prompt Top level: Commands can be entered directly (exit): exiting command Vs. exit: a symbol Parentheses should be matched and balanced ex<enter-key>it Two tokens: ex and it A command sequence CLIPS> exit ; exit is a symbol exit CLIPS> (+ 3 4) ; a function 7 CLIPS> (exit) ; exit command

14 Facts Facts consists of Example Order of slots are irrelevant
Relation name: a symbolic field Zero or more slots: also symbolic fields Associated values Example (person (name “John Q. Public”) (age 23) (eye-color blue) (hair-color black)) Order of slots are irrelevant (person (hair-color black) (name “John Q. Public”) is the same as above

15 Deftemplate Construct
Groups of facts share the same relation name The common information is described Analogous to a record structure in Pascal and C General format (deftemplate <relation-name> [<optional-comment>] <slot-definition>*) <slot-definition> (slot <slot-name>) | (multislot <slot-name>) Person fact (deftemplate person “An example deftemplate” (slot name) (slot age) (slot eye-color) (slot hair-color))

16 Multi-field Slots Place one or more fields into a given slot
Person deftemplate (deftemplate person “An example deftemplate” (multislot name) (slot age) (slot eye-color) (slot hair-color)) Person fact (person (name John Q. Public) (age 23) (eye-color blue) (hair-color black))

17 Ordered Facts Ordered facts Example Equivalent to
Does not have a corresponding deftemplate Slot name is not required Example (number-list ) Equivalent to (deftemplate number-list (multislot values) (number-list (values ))

18 Adding and Removing Facts
Facts are added and removed from the fact list Assert command: add a fact (assert <fact>+) Example CLIPS> (deftemplate person (slot name) (slot age) (slot eye-color) (slot hair-color)) (assert (person (name “John Q. Public”) (age 23) (eye-color blue) (hair-color black))) <Fact-0> ; assert returns a value

19 Adding and Removing Facts
Facts command (facts) Displays the facts in the fact list 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> f-0: fact identifier 0: fact index

20 Adding and Removing Facts
Duplicate facts are not allowed Adding another facts CLIPS> (assert (person (name “Jane Q. Public”) (age 36) (eye-color green) (hair-color red))) <Fact-1> CLIPS> (facts) f-0 (person (name “John Q. Public”) (age 23) (eye-color blue) (hair-color black)) f-1 (person (name “Jane Q. Public”) (age 34) (hair-color red)) For a total of 2 facts.

21 Adding and Removing Facts
Adding more than one facts (assert (person (name “Jane Q. Public”) (age 36) (eye-color green) (hair-color red)) (person (name “Jane Q. Public”) (age 34) (hair-color red)))

22 Adding and Removing Facts
Viewing a portion of fact list (facts [<start> [<end> [<maximum>]]]) No more than <maximum> facts are displayed Removing a fact The deleted fact identifier will be missing Called retraction (retract <fact-index>+) (retract 0) ; John Q. Public removed (retract 1) ; Jane Q. Public removed Removing non-existent fact CLIPS> (retract 1) [PRNTUTIL1] Unable to find fact f-1. CLIPS> Retract multiple facts (retract 0 1)

23 Modifying and Duplicating Facts
Modify command Slot values of deftemplate facts can be modified (modify <fact-index> <slot-modifier>+) <slot-modifier> (<slot-name> <slot-value>) Example: John Q. Public’s age is increased CLIPS> (modify 0 (age 24)) <Fact-2> CLIPS> (facts) f-2 (person (name “John Q. Public”) ; new index (age 24) (eye-color blue) (hair-color black)) For a total of 1 fact. CLIPS>

24 Modifying and Duplicating Facts
Duplicate command Same as modify except does not retract the original fact Example CLIPS> (duplicate 2 (name “Jack S. Public”)) <Fact-3> CLIPS> (facts) f-2 (person (name “John Q. Public”) (age 24) (eye-color blue) (hair-color black)) f-3 (person (name “Jack S. Public”) For a total of 2 facts. CLIPS>

25 The Watch Command Watch command <Watch-item> Example Unwatch
For debugging (watch <watch-item>) <Watch-item> One of the symbols: facts, rules, activations, statistics, compilations, focus, all 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-3 (person (name “Jack S. Public”) (age 24) (eye-color blue) (hair-color black)) ==> f-4 (person (name “Jack S. Public”) (age 25) <Fact-4> CLIPS> Unwatch (unwatch <watch-item)

26 Deffacts Construct Assert a set of facts example
(deffacts <deffacts name> [<optional comments>] <facts>*) 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) (person (name “Jane Q. Public”) (age 36) (eye-color green) (hair-color red))) Assert the deffatcs statement (reset)

27 Deffacts Construct Example CLIPS> (unwatch facts) CLIPS> (reset)
CLIPS> (facts) f-0 (initial-fact) ; new fact by reset command f-1 (person (name “John Q. Public”) (age 24) (eye-color blue) (hair-color black)) f-2 (person (name “Jack S. Public”) (age 24) f-3 (person (name “Jane Q. Public”) (age 36) (eye-color green) (hair-color red)) For a total of 4 facts. CLIPS>

28 The Components of a Rule
A rule example In an industrial plant monitoring expert system IF the emergency is a fire THEN the response is to activate the sprinkler system Define template for the emergency and response (deftemplate emergency (slot type)) type could be fire, flood, power outage (deftemplate response (slot action)) Define rule (defrule fire-emergency “An example rule” (emergency (type fire)) => (assert (response (action activate-sprinkler-system)))) General format (defrule <rule name> [<comment>] <pattern>* ; LHS of the rule <actions>*) ; RHS of the rule

29 The Agenda and Execution
The collection of activated rules Salience The priority of a rule in integer Run command (run <limit>) <limit>: maximum number of rules to be fired Displaying the agenda (agenda) Example CLIPS> (reset) CLIPS> (assert (emergency (type fire))) <Fact-1> CLIPS> (agenda) fire-emergency: f-1 ; salience, rule, fact For a total of 1 activation. CLIPS>

30 Rules and Refraction Run command refraction (clear) CLIPS> (run)
CLIPS> (facts) f (initial-fact) f (emergency (type fire)) f (response (action activate-sprinkler-system)) For a total of 3 facts. CLIPS> refraction Rules are not fired more than once for a specific set of facts (clear) removes all constructs and all facts Vs. (reset) asserts the deffacts statement

31 The Printout Command Printout command Example Using multiple rules
(printout <logical-name> <print-items>*) Example (defrule fire-emergency (emergency (type fire)) => (printout t “Activate the sprinkler system” crlf)) ; t: terminal, destination name Using multiple rules (defrule flood-emergency (emergency (type flood)) (printout t “Shut down electrical equipment” crlf))

32 Using Multiple Patterns
Rules with multiple patterns (deftemplate extinguisher-system (slot type) (slot status)) (defrule class-A-fire-emergency (emergency (type class-A-fire)) (extinguisher-system (type water-sprinkler) (status off)) => (printout t “Activate water sprinkler” crlf)) (defrule class-B-fire-emergency (emergency (type class-B-fire)) (extinguisher-system (type carbon-dioxide) (printout t “Use carbon dioxide extinguisher” crlf))

33 Loading and Saving Construct
Loading constructs from a file (load <file-name>) E.g., (load “fire.clp”) Watching compilation CLIPS> (load “fire.clp”) Defining deftemplate: emergency Defining deftemplate: response Defining defrule: fire-emergency TRUE CLIPS> No watch CLIPS> (clear) CLIPS> (unwatch compilations) %%* ; % for defconstruct * for rule

34 Saving Construct to a File
(save <file-name>) E.g., (save “fire.clp”) Saves all the constructs Saving partial constructs Use an text editor

35 Variables Variables Bind Question mark followed by symbol
e.g., ?speed, ?sensor, ?value, ?noun, ?color Bind Assignment of a value to a variable

36 Variables Example CLIPS> (clear) CLIPS> (deftemplate person
(slot name) (slot eyes) (slot hair)) (defrule find-blue-eyes) (person (name ?name) (eyes blue)) => (printout t ?name “ has blue eyes.” crlf)) CLIPS> (deffacts people (person (name Jane) (eyes blue) (hair red)) (person (name Joe) (eyes green) (hair brown)) (person (name Jack) (eyes blue) (hair black)) (person (name Jeff) (eyes green) (hair brown))) CLIPS> (reset) ; Assert the deffatcs CLIPS> (run) Jack has blue eyes. Jane has blue eyes.

37 Blocks World Blocks world initial configuration
Facts about which blocks are on top of others (deftemplate on-top-of (slot upper) (slot lower)) (on-top-of (upper A) (lower B)) (on-top-of (upper B) (lower C)) (on-top-of (upper D) (lower E)) (on-top-of (upper E) (lower F)) (on-top-of (upper nothing) (lower A)) (on-top-of (upper C) (lower floor)) (on-top-of (upper nothing) (lower D)) (on-top-of (upper F) (lower floor)) A D Goal: C on top of E B E C F

38 Blocks World Floor and nothing are not blocks Describe the goal
(block A) (block B) (block C) (block D) (block E) (block F) Describe the goal (deftemplate goal (slot move) (slot on-top-of)) (goal (move C) (on-top-of E)) on-top-of was also a template name in the prev page Initial state (deffatcs initial-state (on-top-of … (goal (move C) (on-top-of E))) A D B E C F

39 Blocks World Move-directly rule (defrule move-directly
?goal <- (goal (move ?block1) (on-top-of ?block2)) (block ?block1) (block ?block2) (on-top-of (upper nothing) (lower ?block1)) ?stack-1 <- (on-top-of (upper ?blocks1) (lower ?block3)) ?stack-2 <- (on-top-of (upper nothing) (lower ?block2)) => (retract ?goal ?stack-1 ?stack-2) (assert (on-top-of (upper ?block1) (lower ?block2)) (on-top-of (upper nothing) (lower ?block3))) (printout t ?block1 “moved on top of “ ?block2 “.” crlf)) block3 block2

40 Blocks World Move-to-floor rule (defrule move-to-floor
?goal <- (goal (move ?block1) (on-top-of floor)) (block ?block1) (on-top-of (upper nothing) (lower ?block1)) ?stack <- (on-top-of (upper ?block1) (lower ?block2)) => (retract ?goal ?stack) (assert (on-top-of (upper ?block1) (lower floor)) (on-top-of (upper nothing) (lower ?block2))) (printout t ?block1 “moved on top of floor.“ crlf)) block2

41 Blocks World Clear-upper-block rule
(defrule clear-upper-block (goal (move ?block1)) ; move is a slot of goal (block ?block1) (on-top-of (upper ?block2) (lower ?block1)) (block ?block2) => (assert (goal (move ?block2) (on-top-of floor)))) Clear-lower-block rule (actually clear the top of block) (defrule clear-lower-block (goal (on-top-of ?block1)) ; on-top-of is a slot of goal block1

42 Blocks World Run CLIPS> (reset) CLIPS> (run)
A moved on top of floor. B moved on top of floor. D moved on top of floor. C moved on top of E. CLIPS> A D B E C F

43 Functions and Expressions
Elementary math functions CLIPS> (+ 2 2) 4 CLIPS> (/ 2 3) CLIPS> ( ) 5.0 CLIPS> ( ) 9 CLIPS> ( ) -5 CLIPS> (+ 2 (* 3 4)) 14

44 Functions and Expressions
Embed the expression within other expressions CLIPS> (clear) CLIPS> (assert (answer (+ 2 3))) <Fact-0> CLIPS (facts) f-0 (answer 4) For a total of 1 fact. CLIPS> Function names are also symbols CLIPS> (assert (expression * 4)) CLIPS> (facts) f-0 (expression * 4)

45 I/O Functions The read function CLIPS> (clear) CLIPS>
(defrule get-first-name => ; no pattern (printout t “What is your first name? “) (bind ?response (read)) (assert (user’s-name ?response))) CLIPS> (reset) CLIPS> (run) What is your first name? Gary CLIPS> (facts) F-0 (initial-fact) F-1 (user’s-name Gary) For a total of 2 facts.

46 I/O Functions Open function Close function Writing to a file
(open <file-name> <file-ID> [,file-access.]) E.g., (open “input.dat” data “r”) Can use “w”, “r+”, “a” also Close function (close [<file-ID>]) E.g., (close data) Writing to a file CLIPS> (open “example.dat” example “w”) TRUE CLIPS> (printout example “green” crlf) CLIPS> (printout example 7 crlf) CLIPS> (close example) CLIPS>

47 I/O Functions Reading from a file
CLIPS> (open “example.dat” example “r”) TRUE CLIPS> (read example) green 7 EOF CLIPS> (close example) CLIPS>

48 I/O Functions The readline function CLIPS> (clear) CLIPS>
Defrule get-name => (printout t “What is your name? “) (bind ?response (readline)) (assert (user’s-name ?response))) CLIPS> (reset) CLIPS> (run) What is your name? Gary Riley CLIPS> (facts) F-0 (initial-fact) F-1 (user’s-name “Gary Riley”) For a total of 2 facts.

49 I/O Functions The readline function with multi-field CLIPS> (clear)
Defrule get-name => (printout t “What is your name? “) (bind ?response (explode$ (readline))) (assert (user’s-name ?response))) CLIPS> (reset) CLIPS> (run) What is your name? Gary Riley CLIPS> (facts) F-0 (initial-fact) F-1 (user’s-name Gary Riley) For a total of 2 facts.

50 Summary Expert Systems: Principles and Programming, Joseph Giarratano & Gary Riley, PWS Publishing Company, 1998 Chapter 7 Introduction to CLIPS Chapter 8 Pattern Matching Introduction to Expert Systems, Peter Jackson Appendix CLIPS Programming


Download ppt "Introduction to CLIPS (Lecture Note #17)"

Similar presentations


Ads by Google