artificial intelligence lecture no. 17

Post on 24-Feb-2016

51 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Artificial Intelligence Lecture No. 17 . Dr. Asad Ali Safi ​ Assistant Professor, Department of Computer Science,  COMSATS Institute of Information Technology (CIIT) Islamabad, Pakistan. Summary of Previous Lecture. Types of inference engines Forward chaining and backward chaining - PowerPoint PPT Presentation

TRANSCRIPT

Artificial IntelligenceLecture No. 17

Dr. Asad Ali Safi

Assistant Professor,Department of Computer Science,

COMSATS Institute of Information Technology (CIIT) Islamabad, Pakistan.

Summary of Previous Lecture

• Types of inference engines• Forward chaining and backward chaining• Conflict resolution• Advantages/disadvantages of rule-based expert

systems

Today’s Lecture

• What is CLIPS?• CLIPS difference• Interacting with clips

CLIPS

• CLIPS is a public domain software tool for building expert systems.

• The name is an acronym for "C Language Integrated Production System."

• The first versions of CLIPS were developed starting in 1985 at NASA-Johnson Space Center, until the mid-1990s when the development group's responsibilities ceased to focus on expert system technology.

• The original name of the project was NASA's AI Language (NAIL).

CLIPS

• Source • Installation• GUI

CLIPS

• CLIPS is a type of computer language designed for writing applications called expert systems.

• CLIPS is called an expert system tool because it is a complete environment for developing expert systems which includes features such as an integrated editor and a debugging tool.

What is CLIPS?

CLIPS is a multiparadigm programming language that provides support for:Rule-basedObject-orientedProcedural programming

Syntactically, CLIPS resembles:EclipseCLIPS/R2JESS

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:CC++PascalLisp

Fact List(contains data)

KnowledgeBase

(contains rules)

InferenceEngine

(controls execution)

Program

• A program written in CLIPS may consist of rules, facts, and objects. The inference engine decides which rules should be executed and when.

• A rule-based expert system written in CLIPS is a data-driven program

• Where the facts, and objects if desired, are the data that stimulate execution via the inference engine.

CLIPS difference

• This is one example of how CLIPS differs from procedural languages such as Java, BASIC, FORTRAN, and C.

• In procedural languages, execution can proceed without data. That is, the statements are sufficient in those languages to cause execution. – For example, a statement such as PRINT 2 + 2 could be

immediately executed in BASIC. This is a complete statement that does not require any additional data to cause its execution.

– However, in CLIPS, data are required to cause the execution of rules.

Interacting with clips

• CLIPS expert systems may be executed in three ways: – interactively using a simple, text-oriented,

command prompt interface; – interactively using a window/menu/mouse

interface on certain machines;– or as embedded expert systems in which the user

provides a main program and controls execution of the expert system.

• The generic CLIPS interface is a simple, interactive, text-oriented, command prompt interface for high portability.

• The standard usage is to create or edit a knowledge base using any standard text editor, save the knowledge base as one or more text files, exit the editor and execute CLIPS, then load the knowledge base into CLIPS.

• The interface provides commands for viewing the current state of the system, tracing execution, adding or removing information, and clearing CLIPS.

Top Level Commands• When the “CLIPS>” prompt is printed, a command may be

entered for evaluation. Commands may be function calls, constructs, local or global variables, or constants.

• If a function call is entered, that function is evaluated and its return value is printed.

• Function calls in CLIPS use a prefix notation—the operands to a function always appear after the function name. Entering a construct definition at the CLIPS prompt creates a new construct of the appropriate type.

• CLIPS> (+ 3 4)• 7

• CLIPS> (bind ?a 5)• 5• CLIPS> (+ ?a 3)• 8• CLIPS> (reset)• CLIPS> ?a• [EVALUATN1] Variable a is unbound• FALSE• CLIPS>

Data Types• CLIPS provides eight primitive data types for

representing information. These types are float, integer, symbol, string, external-address, fact-address, instance-name and instance-address.

• Numeric information can be represented using floats and integers. Symbolic information can be represented using symbols and strings. A number consists only of digits (0-9), a decimal point (.), a sign (+ or -), and, optionally, an (e) for exponential notation with its corresponding sign.

• A number is either stored as a float or an integer. Any number consisting of an optional sign followed by only digits is stored as an integer (represented internally by CLIPS as a C long integer). All other numbers are stored as floats (represented internally by CLIPS as a C double-precision float).

• Some examples of integers are• 237 15 +12 -32• Some examples of floats are• 237e3 15.09 +12.0 -32.3e-7

Symbol • A symbol in CLIPS is any sequence of characters that starts

with any printable ASCII character and is followed by zero or more printable ASCII characters. When a delimiter is found, the symbol is ended. The following characters act as delimiters: any non-printable ASCII character (including spaces, tabs, carriage returns, and line feeds), a double quote, opening and closing parentheses “(” and “)”, an ampersand “&”, a vertical bar “|”, a less than “<”, and a tilde “~”.

• A semicolon “;” starts a CLIPS comment and also acts as a delimiter.

• Delimiters may not be included in symbols with the exception of the “<“ character which may be the first character in a symbol. In addition, a symbol may not begin with either the “?” character or the “$?” sequence of characters (although a symbol may contain these characters). These characters are reserved for variables

• CLIPS is case sensitive (i.e. uppercase letters will match only uppercase letters). Note that numbers are a special case of symbols

• Some simple examples of symbols are• foo Hello B76-HI bad_value• 127A 456-93-039 @+=-% 2each

String • A string is a set of characters that starts with a double quote (")

and is followed by zero or more printable characters.• A string ends with double quotes. Double quotes may be

embedded within a string by placing a backslash (\) in front of the character.

• A backslash may be embedded by placing two consecutive backslash characters in the string.

• Some examples are– "foo" "a and b" "1 number" "a\"quote"

• Note that the string “abcd" is not the same as the symbol abcd. They both contain the same characters, but are of different types.

Fact

• A fact is a list of atomic values that are either referenced positionally (ordered facts) or by name (non-ordered or template facts).

• Facts are referred to by index or address; • The printed format of a fact-address is:• <Fact-XXX>• where XXX is the fact-index.

Instance • An instance is an object that is an instantiation or specific

example of a class. Objects in CLIPS are defined to be floats, integers, symbols, strings, multifield values, external-addresses, fact-addresses or instances of a user-defined class.

• A user-defined class is created using the defclass construct. • An instance of a user-defined class is created with the make-

instance function, and such an instance can be referred to uniquely by address or uniquely referred to by name.

• An instance-name is formed by enclosing a symbol within left and right brackets. Thus, pure symbols may not be surrounded by brackets.

• Some examples of instance-names are:– [pump-1] [foo] [+++] [123-890]

• Note that the brackets are not part of the name of the instance; they merely indicate that the enclosed symbol is an instance-name.

• An instance-address can only be obtained by binding the• return value of a function called instance-address or by binding a

variable to an instance matching an object pattern on the LHS of a rule

• A reference to an instance of a user-defined class can either be by name or address; instance-addresses should only be used when speed is critical.

• Within CLIPS, the printed representation of an instance-address is <Instance-XXX>

• where XXX is the name of the instance.

Function

• A function in CLIPS is a piece of executable code identified by a specific name which returns a useful value or performs a useful side effect (such as displaying information).

• There are several types of functions. User defined functions and system defined functions

• System defined functions are those functions that have been defined internally by the CLIPS environment. User defined functions are functions that have been defined externally of the CLIPS environment.

• Function calls in CLIPS use a prefix notation – the arguments to a function always appear after the function name.

• Function calls begin with a left parenthesis, followed by the name of the function, then the arguments to the function follow (each argument separated by one or more spaces).

• Arguments to a function can be primitive data types, variables, or another function call. The function call is then closed with a right parenthesis.

• Some examples of function calls using the addition (+) and multiplication (*) functions are shown following.

– (+ 3 4 5)– (* 5 6.0 2)– (+ 3 (* 8 9) 4)– (* 8 (+ 3 (* 2 3 4) 9) (* 3 4))– CLIPS> (+ 2 3(- 10 5))– 10– CLIPS> (+ 2 3(- 5 10))– 0– CLIPS> (+ 2 3(- 5 15))– ?

Facts

• Facts are one of the basic high-level forms for representing information in a CLIPS system. Each fact represents a piece of information which has been placed in the current list of facts, called the fact-list.

• Facts are the fundamental unit of data used by rules

• Facts may be added to the fact-list (using the assert command), removed from the fact-list (using the retract command), modified (using the modify command), or duplicated (using the duplicate command) through explicit user interaction or as a CLIPS program executes.

• The number of facts in the fact-list and the amount of information that can be stored in a fact is limited only by the amount of memory in the computer.

• If a fact is asserted into the fact-list that exactly matches an already existing fact, the new assertion will be ignored (however, this behavior can be changed,

• Some commands, such as the retract, modify, and duplicate commands, require a fact to be specified.

• A fact can be specified either by fact-index or fact-address. Whenever a fact is added (or modified) it is given a unique integer index called a fact-index.

• Fact-indices start at zero and are incremented by one for each new or changed fact. Whenever a reset or clear command is given, the fact-indices restart at zero.

• A fact may also be specified through the use of a fact-address.

Summery of Today’s Lecture• What is CLIPS?• CLIPS difference• Interacting with clips

top related