Você está na página 1de 30

Artificial Intelligence

CLIPS Language Tutorial

Michael Scherger
Department of Computer
Science
Kent State University
November 2, 2004 AI: CLIPS Language Tutori 1
al
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 Tutori 2
al
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 Tutori 3


al
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 Tutori 4


al
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 Tutori 5


al
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 Tutori 6
al
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 Tutori 7


al
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 Tutori 8


al
Rules
Syntax
(defrule r-name comment
pattern-1

pattern-n
=>
action-1

action-m)

November 2, 2004 AI: CLIPS Language Tutori 9


al
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 Tutori 10


al
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 Tutori 11
al
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 Tutori 12


al
Variables
Variables start with a ?
E.g. ?age
Bindings are valid within a rule only

November 2, 2004 AI: CLIPS Language Tutori 13


al
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 Tutori 14


al
Fact Base Updates
Example What facts are
(defrule become-adult retracted?
?child <- (child harry) What facts are kept?
(birthday harry August-15)
?age <- (age harry 17) What facts are
(date today August-15) generated?
=>
(assert (adult harry)) Changing harry to ?
(retract ?child) person and August-15
(retract ?age)
to ?date will
(assert (age harry 18))
generalize this rule
(printout t harry is now an
adult crlf))

November 2, 2004 AI: CLIPS Language Tutori 15


al
Firing Rules

November 2, 2004 AI: CLIPS Language Tutori 16


al
Firing Rules

November 2, 2004 AI: CLIPS Language Tutori 17


al
Firing Rules (Matching)

November 2, 2004 AI: CLIPS Language Tutori 18


al
Firing Rules (Matching)

November 2, 2004 AI: CLIPS Language Tutori 19


al
Wildcard Matching
?
matches one

$?
matches any number

$?name
match and bind
November 2, 2004 AI: CLIPS Language Tutori 20
al
Variables, Variables,
Variables
Variables start with a ?

Examples
?x ?sensor ?color
?location ?room ?size

November 2, 2004 AI: CLIPS Language Tutori 21


al
Variables, Variables,
Variables

November 2, 2004 AI: CLIPS Language Tutori 22


al
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 Tutori 23


al
Wildcard Matching

November 2, 2004 AI: CLIPS Language Tutori 24


al
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 Tutori 25


al
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 Tutori 26


al
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 Tutori 27


al
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 Tutori 28


al
Systematic Manner

November 2, 2004 AI: CLIPS Language Tutori 29


al
Templates

November 2, 2004 AI: CLIPS Language Tutori 30


al

Você também pode gostar