Introduction to CLIPS - PowerPoint PPT Presentation

About This Presentation
Title:

Introduction to CLIPS

Description:

CLIPS supports only forward-chaining rules. The OOP capabilities of CLIPS are ... Symbols begin with printable ASCII characters followed by zero or more ... – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 82
Provided by: mirellam
Learn more at: http://www2.cs.siu.edu
Category:

less

Transcript and Presenter's Notes

Title: Introduction to CLIPS


1
Introduction to CLIPS
2
What is CLIPS?
  • CLIPS is a multiparadigm programming language
    that provides support for
  • Rule-based
  • Object-oriented
  • Procedural programming
  • Syntactically, CLIPS resembles
  • Eclipse
  • CLIPS/R2
  • JESS

3
Other CLIPS Characteristics
  • CLIPS supports only forward-chaining rules.
  • The OOP capabilities of CLIPS are referred to as
    CLIPS Object-Oriented Language (COOL).
  • The procedural language capabilities of CLIPS are
    similar to languages such as
  • C
  • Ada
  • Pascal
  • Lisp

4
CLIPS Characteristics
  • CLIPS is an acronym for C Language Integrated
    Production System.
  • CLIPS was designed using the C language at the
    NASA/Johnson Space Center.
  • CLIPS is portable PC ? CRAY.

5
CLIPS Notation
  • Symbols other than those delimited by lt gt, ,
    or should be typed exactly as shown.
  • mean the contents are optional and lt gt mean
    that a replacement is to be made.
  • following a description means that the
    description can be replaced by zero or more
    occurrences of the specified value.

6
CLIPS Notation
  • Descriptions followed by mean that one or more
    values specified by description should be used in
    place of the syntax description.
  • A vertical bar indicates a choice among one or
    more of the items separated by the bars.

7
Fields
  • To build a knowledge base, CLIPS must read input
    from keyboard / files to execute commands and
    load programs.
  • During the execution process, CLIPS groups
    symbols together into tokens groups of
    characters that have the same meaning.
  • A field is a special type of token of which there
    are 8 types.

8
Numeric Fields
  • The floats and integers make up the numeric
    fields simply numbers.
  • Integers have only a sign and digits.
  • Floats have a decimal and possibly e for
    scientific notation.

9
Symbol Fields
  • Symbols begin with printable ASCII characters
    followed by zero or more characters, followed by
    a delimiter.
  • CLIPS is case sensitive.

10
String Fields
  • Strings must begin and end with double quotation
    marks.
  • Spaces w/in the string are significant.
  • The actual delimiter symbols can be included in a
    string by preceding the character with a
    backslash.

11
Address Fields
  • External addresses represent the address of an
    external data structure returned by a
    user-defined function.
  • Fact address fields are used to refer to a
    specific fact.
  • Instance Name / Address field instances are
    similar to facts addresses but refer to the
    instance rather than a fact.

12
Entering / Exiting CLIPS
  • The CLIPS prompt is CLIPSgt
  • This is the type-level mode where commands can be
    entered.
  • To exit CLIPS, one types CLIPSgt (exit) ?
  • CLIPS will accept input from the user / evaluate
    it / return an appropriate response
  • CLIPSgt ( 3 4) ? ? value 7 would be returned.

13
Facts and CLIPS
  • To solve a problem, CLIPS must have data or
    information with which to reason.
  • Each chunk of information is called a fact.
  • Facts consist of
  • Relation name (symbolic field)
  • Zero or more slots w/associated values

14
Example Fact in CLIPS
15
Deftemplate
  • Before facts can be constructed, CLIPS must be
    informed of the list of valid slots for a given
    relation name.
  • A deftemplate is used to describe groups of facts
    sharing the same relation name and contain common
    information.

16
Deftemplate General Format
17
Deftemplate vs. Ordered Facts
  • Facts with a relation name defined using
    deftemplate are called deftemplate facts.
  • Facts with a relation name that does not have a
    corresponding deftemplate are called ordered
    facts have a single implied multifield slot for
    storing all the values of the relation name.

18
Adding Facts
  • CLIPS store all facts known to it in a fact list.
  • To add a fact to the list, we use the assert
    command.

19
Displaying Facts
  • CLIPSgt (facts) ?

20
Removing Facts
  • Just as facts can be added, they can also be
    removed.
  • Removing facts results in gaps in the fact
    identifier list.
  • To remove a fact
  • CLIPSgt (retract 2) ?

21
Modifying Facts
  • Slot values of deftemplate facts can be modified
    using the modify command

22
Results of Modification
  • A new fact index is generated because when a fact
    is modified
  • The original fact is retracted
  • The modified fact is asserted
  • The duplicate command is similar to the modify
    command, except it does not retract the original
    fact.

23
Watch Command
  • The watch command is useful for debugging
    purposes.
  • If facts are watched, CLIPS will automatically
    print a message indicating an update has been
    made to the fact list whenever either of the
    following has been made
  • Assertion
  • Retraction

24
Deffacts Construct
  • The deffacts construct can be used to assert a
    group of facts.
  • Groups of facts representing knowledge can be
    defined as follows
  • (deffacts ltdeffacts namegt ltoptional comment
  • ltfactsgt )
  • The reset command is used to assert the facts in
    a deffacts statement.

25
The Components of a Rule
  • To accomplish work, an expert system must have
    rules as well as facts.
  • Rules can be typed into CLIPS (or loaded from a
    file).
  • Consider the pseudocode for a possible rule
  • IF the emergency is a fire
  • THEN the response is to activate the sprinkler
    system

26
Rule Components
  • First, we need to create the deftemplate for the
    types of facts
  • (deftemplate emergency (slot type))
  • -- type would be fire, flood, etc.
  • Similarly, we must create the deftemplate for the
    types of responses
  • (deftemplate response (slot action))
  • -- action would be activate the sprinkler

27
Rule Components
  • The rule would be shown as follows
  • (defrule fire-emergency An example rule
  • (emergency (type fire))
  • gt
  • (assert (response
  • (action activate-sprinkler-system))))

28
Analysis of the Rule
  • The header of the rule consists of three parts
  • Keyword defrule
  • Name of the rule fire-emergency
  • Optional comment string An example rule

29
Analysis of Rule
  • If all the patterns of a rule match facts, the
    rule is activated and put on the agenda.
  • The agenda is a collection of activated rules.
  • The arrow gt represents the beginning of the THEN
    part of the IF-THEN rule.
  • The last part of the rule is the list of actions
    that will execute when the rule fires.

30
The Agenda and Execution
  • To run the CLIPS program, use the run command
  • CLIPSgt (run ltlimitgt)?
  • -- the optional argument ltlimitgt is the maximum
    number of rules to be fired if omitted, rules
    will fire until the agenda is empty.

31
Execution
  • When the program runs, the rule with the highest
    salience on the agenda is fired.
  • Rules become activated whenever all the patterns
    of the rule are matched by facts.
  • The reset command is the key method for starting
    or restarting .
  • Facts asserted by a reset satisfy the patterns of
    one or more rules and place activation of these
    rules on the agenda.

32
What is on the Agenda?
  • To display the rules on the agenda, use the
    agenda command
  • CLIPSgt (agenda) ?
  • Refraction is the property that rules will not
    fire more than once for a specific set of facts.
  • The refresh command can be used to make a rule
    fire again by placing all activations that have
    already fired for a rule back on the agenda.

33
Command for Manipulating Constructs
  • The list-defrules command is used to display the
    current list of rules maintained by CLIPS.
  • The list-deftemplates displays the current list
    of deftemplates.
  • The list-deffacts command displays the current
    list of deffacts.
  • The ppdefrule, ppdeftemplate and ppdeffacts
    commands display the text representations of a
    defrule, deftemplate, and a deffact, respectively.

34
Commands
  • The undefrule, undeftemplate, and undeffacts
    commands are used to delete a defrule, a
    deftemplate, and a deffact, respectively.
  • The clear command clears the CLIPS environment
    and adds the initialfact-defacts to the CLIPS
    environment.
  • The printout command can also be used to print
    information.

35
Other Commands
  • Load allows loading of rules from an external
    file.
  • Save opposite of load, allows saving of
    constructs to disk

36
Commenting and Variables
  • Comments provide a good way to document
    programs to explain what constructs are doing.
  • Variables store values, syntax requires
    preceding with a question mark (i.e ?example)

37
Fact Addresses, Single-Field Wildcards, and
Multifield Variables
  • A variable can be bound to a fact address of a
    fact matching a particular pattern on the LHS of
    a rule by using the pattern binding operator
    lt-.
  • Single-field wildcards can be used in place of
    variables when the field to be matched against
    can be anything and its value is not needed later
    in the LHS or RHS of the rule (?).
  • Multifield variables and wildcards allow matching
    against more than one field in a pattern (?)

38
Field Constraints
  • In addition to pattern matching capabilities and
    variable bindings, CLIPS has more powerful
    pattern matching operators.
  • Consider writing a rule for all people who do not
    have brown hair
  • We could write a rule for every type of hair
    color that is not brown.
  • This involves testing the condition in a
    roundabout manner tedious, but effective.

39
Field Constraints
  • The technique for writing a rule for all
    non-brown hair colors implies that we have the
    ability to supply all hair colors virtually
    impossible.
  • An alternative is to use a field constraint to
    restrict the values a field may have on the LHS
    the THEN part of the rule.

40
Connective Constraints
  • Connective constraints are used to connect
    variables and other constraints.
  • Not connective the acts on the one constraint
    or variable that immediately follows it.
  • Or constraint the symbol is used to allow one
    or more possible values to match a field or a
    pattern.
  • And constraint the symbol is useful with
    binding instances of variables and on conjunction
    with the not constraint.

41
Combining Field Constraints
  • Field constraints can be used together with
    variables and other literals to provide powerful
    pattern matching capabilities.
  • Example 1 ?eyes1bluegreen
  • This constraint binds the persons eye color to
    the variable, ?eyes1 if the eye color of the fact
    being matched is either blue or green.
  • Example 2 ?hair1black
  • This constraint binds the variable ?hair1 if the
    hair color of the fact being matched is not
    black.

42
Functions and Expressions
  • CLIPS has the capability to perform calculations.
  • The math functions in CLIPS are primarily used
    for modifying numbers that are used to make
    inferences by the application program.

43
Numeric Expressions in CLIPS
  • Numeric expressions are written in CLIPS in
    LISP-style using prefix form the operator
    symbol goes before the operands to which it
    pertains.
  • Example 1
  • 5 8 (infix form) ? 5 8 (prefix form)
  • Example 2
  • (infix) (y2 y1) / (x2 x1) gt 0
  • (prefix) (gt ( / ( - y2 y1 ) (- x2 x1 ) )
    0)

44
Return Values
  • Most functions (addition) have a return value
    that can be an integer, float, symbol, string, or
    multivalued value.
  • Some functions (facts, agenda commands) have no
    return values just side effects.
  • Division results are usually rounded off.
  • Return values for , -, and will be integer if
    all arguments are integer, but if at least one
    value is floating point, the value returned will
    be float.

45
Variable Numbers of Arguments
  • Many CLIPS functions accept variable numbers of
    arguments.
  • Example
  • CLIPSgt (- 3 5 7) ? returns 3 - 5 -2 - 7 -9
  • There is no built-in arithmetic precedence in
    CLIPS everything is evaluated from left to
    right.
  • To compensate for this, precedence must be
    explicitly written.

46
Embedding Expressions
  • Expressions may be freely embedded within other
    expressions

47
Summing Values Using Rules
  • Suppose you wanted to sum the areas of a group of
    rectangles.
  • The heights and widths of the rectangles can be
    specified using the deftemplate
  • (deftemplate rectangle (slot height) (slot
    width))
  • The sum of the rectangle areas could be specified
    using an ordered fact such as
  • (sum 20)

48
Summing Values
  • A deffacts containing sample information is
  • (deffacts initial-information
  • (rectangle (height 10) (width 6))
  • (rectangle (height 7) (width 5)
  • (rectangle (height 6) (width 8))
  • (rectangle (height 2) (width 5))
  • (sum 0))

49
Summing Values
50
The Bind Function
  • Sometimes it is advantageous to store a value in
    a temporary variable to avoid recalculation.
  • The bind function can be used to bind the value
    of a variable to the value of an expression using
    the following syntax
  • (bind ltvariablegt ltvaluegt)

51
I/O Functions
  • When a CLIPS program requires input from the user
    of a program, a read function can be used to
    provide input from the keyboard

52
Read Function from Keyboard
  • The read function can only input a single field
    at a time.
  • Characters entered after the first field up to
    the ? are discarded.
  • To input, say a first and last name, they must be
    delimited with quotes, xxx xxx.
  • Data must be followed by a carriage return to be
    read.

53
I/O from/to Files
  • Input can also come from external files.
  • Output can be directed to external files.
  • Before a file can be accessed, it must be opened
    using the open function
  • Example
  • (open mydata.dat data r)
  • mydata.dat is the name of the file (path can
    also be provided)

54
I/O from/to Files
  • data is the logical name that CLIPS associates
    with the file
  • r represents the mode how the file will be
    used here read access
  • The open function acts as a predicate function
  • Returns true if the file was successfully opened
  • Returns false otherwise

55
Table 8.2 File Access Modes
56
Close Function
  • Once access to the file is no longer needed, it
    should be closed.
  • Failure to close a file may result in loss of
    information.
  • General format of the close function
  • (close ltfile-IDgt)
  • (close data) ? example

57
Reading / Writing to a File
  • Which logical name used, depends on where
    information will be written logical name t
    refers to the terminal (standard output device).

58
Predicate Functions
  • A predicate function is defined to be any
    function that returns
  • TRUE
  • FALSE
  • Any value other than FALSE is considered TRUE.
  • We say the predicate function returns a Boolean
    value.

59
The Test Conditional Element
  • Processing of information often requires a loop.
  • Sometimes a loop needs to terminate automatically
    as the result of an arbitrary expression.
  • The test condition provides a powerful way to
    evaluate expressions on the LHS of a rule.
  • Rather than pattern matching against a fact in a
    fact list, the test CE evaluates an expression
    outermost function must be a predicate function.

60
Test Condition
  • A rule will be triggered only if all its test CEs
    are satisfied along with other patterns.
  • (test ltpredicate-functiongt)
  • Example
  • (test (gt ?value 1))

61
Predicate Field Constraint
  • The predicate field constraint allows for
    performing predicate tests directly within
    patterns.
  • The predicate field constraint is more efficient
    than using the test CE.
  • It can be used just like a literal field
    constraint by itself or part of a complex
    field.
  • The predicate field constraint is always followed
    by a function for evaluation (predicate function).

62
Return Value Constraint
  • The return value constraint allows the return
    value of a function to be used for comparison
    inside a pattern.
  • The return value constraint must be followed by a
    function (not necessarily a predicate function).
  • The function must have a single-field return
    value.

63
The OR Conditional Element
  • Consider the two rules

64
OR Conditional Element
  • These two rules can be combined into one rule
    or CE requires only one CE be satisfied

65
The And Conditional Element
  • The and CE is opposite in concept to the or CE
    requiring all the CEs be satisfied

66
Not Conditional Element
  • When it is advantageous to activate a rule based
    on the absence of a particular fact in the list,
    CLIPS allows the specification of the absence of
    the fact in the LHS of a rule using the not
    conditional element

67
Not Conditional
  • We can implement this as follows

68
Deftemplate Attributes
  • CLIPS provides slot attributes which can be
    specified when deftemplate slots are defined.
  • Slot attributes provide strong typing and
    constraint checking.
  • One can define the allowed types that can be
    stored in a slot, range of numeric values.
  • Multislots can specify min / max numbers of
    fields they can contain.
  • Default attributes can be provided for slots not
    specified in an assert command.

69
Type Attribute
  • Defines the data types can be placed in a slot
  • Example
  • (deftemplate person
  • (multislot name (type SYMBOL))
  • (SLOT AGE (TYPE integer)))
  • Once defined, CLIPS will enforce these
    restrictions on the slot attributes
  • name must store symbols
  • age must store integers

70
Allowed Value Attributes
  • CLIPS allows one to specify a list of allowed
    values for a specific type 8 are provided

Symbols Strings
Lexemes Integers
Floats Numbers
Instance-names Values
71
Range Attributes
  • This attribute allows the specification of
    minimum and maximum numeric values.
  • Example
  • (deftemplate person
  • (multislot name (type SYMBOL))
  • (slot age (type INTEGER)
  • (range 0 ?VARIABLE)))

72
Salience
  • CLIPS provides two explicit techniques for
    controlling the execution of rules
  • Salience
  • Modules
  • Salience allows the priority of rules to be
    explicitly specified.
  • The agenda acts like a stack (LIFO) most recent
    activation placed on the agenda being first to
    fire.

73
Salience
  • Salience allows more important rules to stay at
    the top of the agenda, regardless of when they
    were added.
  • Lower salience rules are pushed lower on the
    agenda higher salience rules are higher.
  • Salience is set using numeric values in the range
    -10,000 ? 10,000 zero is intermediate
    priority.
  • Salience can be used to force rules to fire in a
    sequential fashion.

74
Salience
  • Rules of equal salience, activated by different
    patterns are prioritized based on the stack order
    of facts.
  • If 2 rules with same salience are activated by
    the same fact, no guarantee about the order in
    which they will be place on the agenda.

75
Phases and Control Facts
76
Figure 9.2 Assignment of Salience for Different
Phases
77
Implementation of System
  • Approaches
  • Embed the control knowledge directly into the
    rules.
  • Example
  • Detection rules would include rules indicating
    when the isolation phase should be entered. Each
    group of rules would be given a pattern
    indicating in which phase it would be applicable.

78
Implementation
  1. Use salience to organize the rules.
  2. Separate the control knowledge from the domain
    knowledge. Each rule is given a control pattern
    that indicates its applicable phase. Control
    rules are then written to transfer control
    between the different phases.

79
Salience Hierarchy
  • Salience hierarchy is a description of the
    salience values used by an expert system.
  • Each level corresponds to a specific set of rules
    whose members are all given the same salience.
  • When rules for detection / isolation / recovery
    are zero, salience hierarchy is

80
Misuse of Salience
  • Because salience is such a powerful tool,
    allowing explicit control over execution, there
    is potential for misuse.
  • Well-designed rule-based programs should allow
    inference engine to control firings in an optimal
    manner.
  • Salience should be used to determine the order
    when rules fire, not for selecting a single rule
    from a group of rules when patterns can control
    criteria for selection.

81
Rule of Thumb
  • No more than seven salience values should ever be
    required for coding an expert system bested
    limited to 3 4.
  • For large expert systems, programmers should use
    modules to control the flow of execution
    limited to 2 3 salience values.
Write a Comment
User Comments (0)
About PowerShow.com