Download - Ai Clips Tutorial
November 2, 2004 AI: CLIPS Language Tutorial 1
Artificial IntelligenceCLIPS Language Tutorial
Michael SchergerDepartment of Computer
ScienceKent State University
November 2, 2004 AI: CLIPS Language Tutorial 2
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.html
November 2, 2004 AI: CLIPS Language Tutorial 3
Introduction
• CLIPS was designed to facilitate the development of software to model human knowledge– Facts– Rules– Deffunctions and generic functions– Object oriented programming
November 2, 2004 AI: CLIPS Language Tutorial 4
Starting / Exiting CLIPS
• To start CLIPS (Windows)…just double click the CLIPSWin.exe icon
• To exit CLIPS type (exit) at the CLIPS> prompt.
November 2, 2004 AI: CLIPS Language Tutorial 5
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
November 2, 2004 AI: CLIPS Language Tutorial 6
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
November 2, 2004 AI: CLIPS Language Tutorial 7
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)
November 2, 2004 AI: CLIPS Language Tutorial 8
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)
November 2, 2004 AI: CLIPS Language Tutorial 9
Rules
• Syntax(defrule r-name “comment”
pattern-1…pattern-n
=>action-1…action-m)
November 2, 2004 AI: CLIPS Language Tutorial 10
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
November 2, 2004 AI: CLIPS Language Tutorial 11
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 -10000 to 10000– 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
November 2, 2004 AI: CLIPS Language Tutorial 12
Rules
• (pprule r-name) will pretty print out the rule
• (excise r-name) will remove a rule from the system
November 2, 2004 AI: CLIPS Language Tutorial 13
Variables
• Variables start with a ?– E.g. ?age– Bindings are valid within a rule only
November 2, 2004 AI: CLIPS Language Tutorial 14
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
November 2, 2004 AI: CLIPS Language Tutorial 15
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
November 2, 2004 AI: CLIPS Language Tutorial 16
Firing Rules
November 2, 2004 AI: CLIPS Language Tutorial 17
Firing Rules
November 2, 2004 AI: CLIPS Language Tutorial 18
Firing Rules (Matching)
November 2, 2004 AI: CLIPS Language Tutorial 19
Firing Rules (Matching)
November 2, 2004 AI: CLIPS Language Tutorial 20
Wildcard Matching
• ? – matches one
• $? – matches any number
• $?name– match and bind
November 2, 2004 AI: CLIPS Language Tutorial 21
Variables, Variables, Variables
• Variables start with a ?
• Examples?x ?sensor ?color?location ?room ?size
November 2, 2004 AI: CLIPS Language Tutorial 22
Variables, Variables, Variables
November 2, 2004 AI: CLIPS Language Tutorial 23
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
November 2, 2004 AI: CLIPS Language Tutorial 24
Wildcard Matching
November 2, 2004 AI: CLIPS Language Tutorial 25
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))
November 2, 2004 AI: CLIPS Language Tutorial 26
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))
November 2, 2004 AI: CLIPS Language Tutorial 27
Field Constraints
• AND &• (temperature water ?temp&hot|boil)
– will match either of the following facts• (temperature water hot)• (temperature water boil)
November 2, 2004 AI: CLIPS Language Tutorial 28
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
November 2, 2004 AI: CLIPS Language Tutorial 29
Systematic Manner
November 2, 2004 AI: CLIPS Language Tutorial 30
Templates