360 likes | 834 Vues
Artificial Intelligence CLIPS Language Tutorial. Michael Scherger Department of Computer Science Kent State University. 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
E N D
Artificial IntelligenceCLIPS Language Tutorial Michael Scherger Department of Computer Science Kent State University AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
Introduction • CLIPS was designed to facilitate the development of software to model human knowledge • Facts • Rules • Deffunctions and generic functions • Object oriented programming AI: CLIPS Language Tutorial
Starting / Exiting CLIPS • To start CLIPS (Windows)…just double click the CLIPSWin.exe icon • To exit CLIPS type (exit) at the CLIPS> prompt. AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
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) AI: CLIPS Language Tutorial
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) AI: CLIPS Language Tutorial
Rules • Syntax (defrule r-name “comment” pattern-1 … pattern-n => action-1 … action-m) AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
Rules • (pprule r-name) will pretty print out the rule • (excise r-name) will remove a rule from the system AI: CLIPS Language Tutorial
Variables • Variables start with a ? • E.g. ?age • Bindings are valid within a rule only AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
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 Fact Base Updates AI: CLIPS Language Tutorial
Firing Rules AI: CLIPS Language Tutorial
Firing Rules AI: CLIPS Language Tutorial
Firing Rules (Matching) AI: CLIPS Language Tutorial
Firing Rules (Matching) AI: CLIPS Language Tutorial
Wildcard Matching • ? • matches one • $? • matches any number • $?name • match and bind AI: CLIPS Language Tutorial
Variables, Variables, Variables • Variables start with a ? • Examples ?x ?sensor ?color ?location ?room ?size AI: CLIPS Language Tutorial
Variables, Variables, Variables AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
Wildcard Matching AI: CLIPS Language Tutorial
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)) AI: CLIPS Language Tutorial
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)) AI: CLIPS Language Tutorial
Field Constraints • AND & • (temperature water ?temp&hot|boil) • will match either of the following facts • (temperature water hot) • (temperature water boil) AI: CLIPS Language Tutorial
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 AI: CLIPS Language Tutorial
Systematic Manner AI: CLIPS Language Tutorial
Templates AI: CLIPS Language Tutorial