Introduction to CLIPS (Lecture Note #17)

Slides:



Advertisements
Similar presentations
Expert systems CLIPS Seyed Hashem Davarpanah
Advertisements

Introduction to CLIPS COMP 474/674 FALL 2003 Michelle Khalifé.
The CLIPS Programming Tool History of CLIPS –Influenced by OPS5 and ART –Implemented in C for efficiency and portability –Developed by NASA, distributed.
CLIPS 1 Expert Systems Dr. Samy Abu Nasser. CLIPS 2 Course Overview u Introduction u CLIPS Overview u Concepts, Notation, Usage u Knowledge Representation.
November 2, 2004AI: CLIPS Language Tutorial1 CLIPS Michael Scherger Department of Computer Science Kent State University.
The Web Warrior Guide to Web Design Technologies
Expert System Shells - Examples
Samad Paydar Ferdowsi University of Mashhad.  C Language Integrated Production System (CLIPS)  A tool for building expert systems  An expert system.
1 01/12/2011Knowledge-Based Systems, Paula Matuszek Intro to CLIPS Paula Matuszek CSC 9010, Spring, 2011.
Over view on Clips By: Mohsen Faghihi. Clips view.
November 2, 2004AI: CLIPS Language Tutorial1 Artificial Intelligence CLIPS Language Tutorial Michael Scherger Department of Computer Science Kent State.
Chapter 8 Pattern Matching
© C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
Chapter 7: Introduction to CLIPS
CLIPS C Language Integrated Production System Note: Some slides and/or pictures are adapted from Lecture slides / Books of Dr Zafar Alvi.
Artificial Intelligence Lecture No. 18 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
2440: 211 Interactive Web Programming JavaScript Fundamentals.
Chapter 12: Expert Systems Design Examples
Introduction to CLIPS (Chapter 7) Fact List (contains data) Knowledge Base (contains rules) Inference Engine (controls execution)
© Franz J. Kurfess CLIPS 1 CPE/CSC 481: Knowledge-Based Systems Dr. Franz J. Kurfess Computer Science Department Cal Poly.
© C. Kemke CLIPS 1 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
1 Chapter 4 The Fundamentals of VBA, Macros, and Command Bars.
© C. Kemke Control 1 COMP 4200: Expert Systems Dr. Christel Kemke Department of Computer Science University of Manitoba.
Chapter 8: Advanced Pattern Matching Expert Systems: Principles and Programming, Fourth Edition.
Chapter 9: Modular Design, Execution Control, and Rule Efficiency Expert Systems: Principles and Programming, Fourth Edition.
Introduction to Jess.
Jess Presentation by Chun Ping Wang. What is Jess? Jess is an expert system shell made for java. Rete pattern algorithm. Purpose. –Jess is best use for.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Guide To UNIX Using Linux Third Edition
CS 561, Session 25 1 Introduction to CLIPS Overview of CLIPS Facts Rules Rule firing Control techniques Example.
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
1 01/12/2011Knowledge-Based Systems, Paula Matuszek More Intro to CLIPS Paula Matuszek CSC 9010, Spring, 2011.
Chapter 9: Modular Design, Execution Control, and Rule Efficiency Expert Systems: Principles and Programming, Fourth Edition.
Expert System Topic 2.
1 Programming a Knowledge Based Application. 2 Overview.
General Computer Science for Engineers CISC 106 Lecture 02 Dr. John Cavazos Computer and Information Sciences 09/03/2010.
Chapter 7: Introduction to CLIPS Expert Systems: Principles and Programming, Fourth Edition.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
Artificial Intelligence Lecture No. 17 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Chapter 10: Procedural Programming Expert Systems: Principles and Programming, Fourth Edition.
Input, Output, and Processing
Expert Systems An Introduction to Expert Systems and CLIPS by Charles Weddle.
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
Jess: A Rule-Based Programming Environment Reporter: Yu Lun Kuo Date: April 10, 2006 Expert System.
Chapter 7: Introduction to CLIPS Presented By: Farnaz Ronaghi.
IMSS013 CLIPS. 2 Background CLIPS is an expert system tool developed by the Software Technology Branch (STB), NASA/Lyndon B. Johnson Space Center. First.
Recognizing PL/SQL Lexical Units. 2 home back first prev next last What Will I Learn? List and define the different types of lexical units available in.
Expert Systems Chapter 7 Introduction to CLIPS Entering and Exiting CLIPS A> CLIPS  CLIPS (V6.5 09/01/97) CLIPS> exit exit CLIPS> (+ 3 4)  7 CLIPS>
Advanced Pattern Matching. Field constraints Used to restrict the values of a field on LHS of a rule Used to restrict the values of a field on LHS of.
Artificial Intelligence Lecture No. 26 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
Artificial Intelligence Lecture No. 24 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Introduction to CLIPS. Expert Systems: Principles and Programming, Fourth Edition2 What is CLIPS? CLIPS is a multiparadigm programming language that provides.
1 Knowledge Based Systems (CM0377) Lecture 10 (Last modified 19th March 2001)
Artificial Intelligence Lecture No. 19 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Artificial Intelligence Lecture No. 23 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
Mostly adopted from Jason Morris notes (Morris Technical Solutions)
Artificial Intelligence Lecture No. 22 Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science, COMSATS Institute of Information Technology.
The CLIPS Expert System Shell Dr Nicholas Gibbins
Summary for final exam Agent System..
Introduction to CLIPS 2 Session 13 Course: T0273 – EXPERT SYSTEMS Year: 2014.
Jörg Kewisch, June 10, 2013, LILUG Meeting CLIPS C Language Integrated Production System Developed at the Software Development Branch, NASA Lyndon B. Johnson.
Intelligent Systems JESS constructs.
Chapter 7: Introduction to CLIPS
Chapter 8: Advanced Pattern Matching
بسم الله الرحمن الرحیم آموزش نرم افزار CLIPS
Chapter 11: Classes, Instances, and Message-Handlers
JESS (Java Expert System Shall)
CPE/CSC 481: Knowledge-Based Systems
Computer Based Tutoring
Presentation transcript:

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

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

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

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

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., http://www.cosmic.uga.edu Downloadable by anonymous ftp e.g., http://www-cgi.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/expert/systems/clips

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

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

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

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

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

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

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

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

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

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))

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))

Ordered Facts Ordered facts Example Equivalent to Does not have a corresponding deftemplate Slot name is not required Example (number-list 7 9 3 4 20) Equivalent to (deftemplate number-list (multislot values) (number-list (values 7 9 3 4 20))

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

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

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.

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)))

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)

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>

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>

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)

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)

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>

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

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) 0 fire-emergency: f-1 ; salience, rule, fact For a total of 1 activation. CLIPS>

Rules and Refraction Run command refraction (clear) CLIPS> (run) CLIPS> (facts) f-0 (initial-fact) f-1 (emergency (type fire)) f-2 (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

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))

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))

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

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

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

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.

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

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

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

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

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

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

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

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 2 + 3 * 4)) CLIPS> (facts) f-0 (expression 2 + 3 * 4)

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.

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>

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

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.

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.

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