Presentation is loading. Please wait.

Presentation is loading. Please wait.

November 2, 2004AI: CLIPS Language Tutorial1 CLIPS Michael Scherger Department of Computer Science Kent State University.

Similar presentations


Presentation on theme: "November 2, 2004AI: CLIPS Language Tutorial1 CLIPS Michael Scherger Department of Computer Science Kent State University."— Presentation transcript:

1 November 2, 2004AI: CLIPS Language Tutorial1 CLIPS Michael Scherger Department of Computer Science Kent State University

2 November 2, 2004AI: CLIPS Language Tutorial2 Introduction CLIPS is a tool for building expert systems –Originally developed by the Software Technology Branch (STB) at NASA Johnson Space Center –First release in 1986 Web location –http://www.ghg.net/clips/CLIPS.htmlhttp://www.ghg.net/clips/CLIPS.html

3 November 2, 2004AI: CLIPS Language Tutorial3 Introduction CLIPS was designed to facilitate the development of software to model human knowledge –Facts –Rules –Deffunctions and generic functions –Object oriented programming

4 November 2, 2004AI: CLIPS Language Tutorial4 Starting / Exiting CLIPS To start CLIPS (Windows)…just double click the CLIPSWin.exe icon To exit CLIPS type (exit) at the CLIPS> prompt.

5 November 2, 2004AI: CLIPS Language Tutorial5 Facts Fact Assertion –(assert (play Ivan tennis)) –(assert (duck)) –(assert (chair red)) As facts are entered into the KB, they are assigned a Fact Index –(retract 1) Removes fact 1 from the KB –(clear) Removes all facts from the fact base and KB

6 November 2, 2004AI: CLIPS Language Tutorial6 Facts Fact Assertion –(facts) Dump the “fact base” Fact identifier – “time tag” –f-0 –f-1 –Special fact (initial-fact) Is always F0 and is used to match the first/start rules

7 November 2, 2004AI: CLIPS Language Tutorial7 Facts deffacts is a way of initializing the fact base (group of facts) Example: (deffacts tennis-players “people who play tennis” (athelete Ivan very-good) (play Ivan tennis) (athelete Martina very-good) (play Martina tennis)) Will cause the fact base to be initialized with the facts + (initial-fact)

8 November 2, 2004AI: CLIPS Language Tutorial8 Facts When (reset) is entered, the result is… f-0(initial-fact) f-1(athelete Ivan very-good) f-2(play Ivan tennis) f-3(athelete Martina very-good) f-4(play Martina tennis)

9 November 2, 2004AI: CLIPS Language Tutorial9 Rules Syntax (defruler-name“comment” pattern-1 … pattern-n => action-1 … action-m)

10 November 2, 2004AI: CLIPS Language Tutorial10 Rules r-name is the rule name comment must be surrounded by quotes pattern-i is the antecedent pattern action-j is the consequent pattern

11 November 2, 2004AI: CLIPS Language Tutorial11 Rules The agenda is the list of rules that have been matched and are waiting execution (agenda) will print out the rules The agenda is prioritized by salience value –Salience is specified by the programmer and is from to –Default is 0 if (declare (salience 25)) is not in rule e.g. –Rules are selected for firing by salience –Two rules of same salience use LIFO to fire

12 November 2, 2004AI: CLIPS Language Tutorial12 Rules (pprule r-name) will pretty print out the rule (excise r-name) will remove a rule from the system

13 November 2, 2004AI: CLIPS Language Tutorial13 Variables Variables start with a ? –E.g. ?age –Bindings are valid within a rule only

14 November 2, 2004AI: CLIPS Language Tutorial14 Fact Base Updates (retract fact-id) –requires “fact” to be the index number which is sometime difficult to determine –Therefore use variable with <- notation which binds the fact index number to the variable

15 November 2, 2004AI: CLIPS Language Tutorial15 Fact Base Updates Example (defrule become-adult ?child <- (child harry) (birthday harry August-15) ?age <- (age harry 17) (date today August-15) => (assert (adult harry)) (retract ?child) (retract ?age) (assert (age harry 18)) (printout t “harry is now an adult” crlf)) What facts are retracted? What facts are kept? What facts are generated? Changing harry to ?person and August-15 to ?date will generalize this rule

16 November 2, 2004AI: CLIPS Language Tutorial16 Firing Rules

17 November 2, 2004AI: CLIPS Language Tutorial17 Firing Rules

18 November 2, 2004AI: CLIPS Language Tutorial18 Firing Rules (Matching)

19 November 2, 2004AI: CLIPS Language Tutorial19 Firing Rules (Matching)

20 November 2, 2004AI: CLIPS Language Tutorial20 Wildcard Matching ? –matches one $? –matches any number $?name –match and bind

21 November 2, 2004AI: CLIPS Language Tutorial21 Variables, Variables, Variables Variables start with a ? Examples ?x?sensor?color ?location?room?size

22 November 2, 2004AI: CLIPS Language Tutorial22 Variables, Variables, Variables

23 November 2, 2004AI: CLIPS Language Tutorial23 Wildcard Matching Example (name ? ?Kennedy) –will match (name John Fitzgerald Kennedy) (name ? $? SMITH) –will match (name John SMITH) (name Suzie Jane SMITH) (name John James Jones SMITH) –but would not match (name SMITH) (name John Jones SMITH Rogers) $?name is the same as the previous but the matches are bound to $?name

24 November 2, 2004AI: CLIPS Language Tutorial24 Wildcard Matching

25 November 2, 2004AI: CLIPS Language Tutorial25 Field Constraints Negation ~ (defrule apply-heat (temperature water ~boil) => (adjust heat maximum); a function call (printout t “Turn the heat to the maximum setting” crlf))

26 November 2, 2004AI: CLIPS Language Tutorial26 Field Constraints OR | (defrule apply-heat (temperature water cold|cool|warm) => (adjust heat maximum); a function call (printout t “Turn the heat to a medium setting” crlf))

27 November 2, 2004AI: CLIPS Language Tutorial27 Field Constraints AND & (temperature water ?temp&hot|boil) –will match either of the following facts (temperature water hot) (temperature water boil)

28 November 2, 2004AI: CLIPS Language Tutorial28 Mathematical Operators Uses prefix notation as in Lisp (+ 3 4) (+ (* 3 4) (* 5 6)) Use = as assignment for fact assertion on left hand side (assert (answer = ( * 3 4 ) ) ) –put (answer 12) –in the fact list

29 November 2, 2004AI: CLIPS Language Tutorial29 Systematic Manner

30 November 2, 2004AI: CLIPS Language Tutorial30 Templates

31 November 2, 2004AI: CLIPS Language Tutorial31 CLIPS (Review) 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, also under UNIX and VAX VMS CLIPS provides mechanisms for expert systems –A top-level interpreter –Production rule interpreter –Object oriented programming language –LISP-like procedural language

32 November 2, 2004AI: CLIPS Language Tutorial32 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 –Can define classes –Can create different sets of instances –Special forms allow you to interface rules and objects

33 November 2, 2004AI: CLIPS Language Tutorial33 Defining Facts Facts can be asserted CLIPS> (assert (today is sunday)) Facts can be listed CLIPS> (facts) f-0 (today is sunday) Facts can be retracted CLIPS> (retract 0) CLIPS> (facts)

34 November 2, 2004AI: CLIPS Language Tutorial34 Managing Facts Clearing all facts CLIPS> (clear) CLIPS> (facts) Grouping facts - typically in a file (“today.clp”) (deffacts today; can be cleared with (undeffacts today) (today is sunday) (weather is warm) ) After loading facts, assert with (reset)

35 November 2, 2004AI: CLIPS Language Tutorial35 Defining Rules Rules have the following structure (defrule rule-name optional-comment optional-declaration condition... condition => action... action )

36 November 2, 2004AI: CLIPS Language Tutorial36 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)) ) So, if fact list contains conditions, add assertions

37 November 2, 2004AI: CLIPS Language Tutorial37 Getting the Rules Started The reset command creates a special fact CLIPS> (load “today.clp”) CLIPS> (facts) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact)... (defrule start (initial-fact) => (printout t “hello”) )

38 November 2, 2004AI: CLIPS Language Tutorial38 Tracing & Recording Things Watch command can watch facts (and rules) CLIPS> (watch facts) CLIPS> (reset) ==> f-0 (initial-fact) CLIPS> (retract 0) <== f-0 (initial-fact) Contents of dialog window can be sent to file CLIPS> (dribble-on “dribble.clp”); any file name will do... CLIPS> (dribble-off “dribble.clp”)

39 November 2, 2004AI: CLIPS Language Tutorial39 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

40 November 2, 2004AI: CLIPS Language Tutorial40 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) ) We must assign a variable to item for retraction

41 November 2, 2004AI: CLIPS Language Tutorial41 Pattern Matching Details One-to-one matching (do ?job on ?day) (do washing on monday) Use of wild cards (do ? ? monday) (do ? on ?) (do ? ? ?day) (do $?) (do $? monday) (do ?chore $?when)

42 November 2, 2004AI: CLIPS Language Tutorial42 Using Templates (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) )

43 November 2, 2004AI: CLIPS Language Tutorial43 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)))

44 November 2, 2004AI: CLIPS Language Tutorial44 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))

45 November 2, 2004AI: CLIPS Language Tutorial45 Concrete & Abstract Classes Some classes only exist for inheritance purposes Person ManWoman JackJill

46 November 2, 2004AI: CLIPS Language Tutorial46 Managing Instances Commands to display instances CLIPS> (instances) [corvette] of car CLIPS> (send [corvette] print) [corvette] of car (made-by chevrolet) Command to group instances (in a file) (definstances (corvette of car (made-by chevrolet)) (thunderbird of car (made-by ford)))

47 November 2, 2004AI: CLIPS Language Tutorial47 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

48 November 2, 2004AI: CLIPS Language Tutorial48 Message Passing The SEND function (send [instance] message arg... arg) Converting from symbols to names CLIPS> (symbol-to-instance-name corvette) [corvette] This is useful when SENDing from inside a rule

49 November 2, 2004AI: CLIPS Language Tutorial49 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

50 November 2, 2004AI: CLIPS Language Tutorial50 Alternatives to CLIPS Eclipse –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 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


Download ppt "November 2, 2004AI: CLIPS Language Tutorial1 CLIPS Michael Scherger Department of Computer Science Kent State University."

Similar presentations


Ads by Google