intro to jess the java expert system shell

49
Intro to Jess The Java Expert System Shell By Jason Morris Morris Technical Solutions

Upload: roland

Post on 12-Jan-2016

49 views

Category:

Documents


3 download

DESCRIPTION

Intro to Jess The Java Expert System Shell. By Jason Morris Morris Technical Solutions. Agenda. What are expert systems? What are rule-based expert systems? Introduction to Jess The Jess Language. Agenda. Scripting & The Jess API Demo 1 : Design Pattern Expert Demo 2 : Catalog Servlet - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Intro to Jess  The Java Expert System Shell

Intro to Jess The Java Expert System

Shell

By Jason MorrisMorris Technical Solutions

Page 2: Intro to Jess  The Java Expert System Shell

Agenda

• What are expert systems?• What are rule-based expert

systems?• Introduction to Jess• The Jess Language

Page 3: Intro to Jess  The Java Expert System Shell

Agenda

• Scripting & The Jess API• Demo 1 : Design Pattern Expert• Demo 2 : Catalog Servlet• References and Further Study• Q & A

Page 4: Intro to Jess  The Java Expert System Shell

Expert Systems…

• Are a branch of artificial intelligence.

• Simulate human reasoning in some domain.

• “Reason” by heuristic or approximate methods.

• Explain and justify solutions in user-friendly terms.

Page 5: Intro to Jess  The Java Expert System Shell

Types Of Expert Systems

• Case-Based Reasoning• Rule-Based Systems

Page 6: Intro to Jess  The Java Expert System Shell

Rule-Based Expert Systems

• Originated from AI research in the 70s and 80s.

• Problem data stored as facts.• “Reason” using IF…THEN…ELSE

rules.• Can “reason” deductively (forward-

chaining) or inductively (backward-chaining).

Page 7: Intro to Jess  The Java Expert System Shell

When to Use Rule-Based Systems

• Problem Domain = narrow, well-understood domain theory

• Knowledge Representation = facts and rules

• Output = recommendation• Explanation = rule firing trace• Learning Ability = generally no

(but…)

Page 8: Intro to Jess  The Java Expert System Shell

Inference Process

1. Rules and facts compared using pattern matcher.

2. Matched rules activated into a conflict set.

3. Conflict set resolved into agenda (process called conflict resolution).

4. Rule engine fires on agenda.5. Engine cycles until all rules are

satisfied.

Page 9: Intro to Jess  The Java Expert System Shell

The Java Expert System Shell

• Developed at Sandia National Laboratories in late 1990s.

• Created by Dr. Ernest J. Friedman-Hill.

• Inspired by the AI production rule language CLIPS.

• Fully developed Java API for creating rule-based expert systems.

Page 10: Intro to Jess  The Java Expert System Shell

Rule-Based Expert System Architecture

• Rule Base (knowledge base)• Working Memory (fact base)• Inference Engine (rule engine)

Page 11: Intro to Jess  The Java Expert System Shell

Inference (Rule) Engines

• Pattern Matcher – decides what rules to fire and when.

• Agenda – schedules the order in which activated rules will fire.

• Execution Engine – responsible for firing rules and executing other code.

Page 12: Intro to Jess  The Java Expert System Shell

Inference Process

• Match the facts against the rules.• Choose which rules to fire.• Execute the actions associated

with the rules.

Page 13: Intro to Jess  The Java Expert System Shell

How Does Jess Work?

• Jess matches facts in the fact base to rules in the rule base.

• The rules contain function calls that manipulate the fact base and/or other Java code.

• Jess uses the Rete (ree-tee) algorithm to match patterns.

• Rete network = an interconnected collection of nodes = working memory.

Page 14: Intro to Jess  The Java Expert System Shell

Jess Architecture Diagram

WORKINGMEMORY

RULE BASE

EXECUTIONENGINE

INFERENCEENGINE

PATTERNMATCHER

AGENDA

Page 15: Intro to Jess  The Java Expert System Shell

Procedural Programming

• Traditional programming (BASIC, C, FORTRAN, Pascal, etc.).

• Largely based on functions.• Programmer controls logic.• Sequential and deterministic.• Object-oriented programming is

procedural within object methods.

Page 16: Intro to Jess  The Java Expert System Shell

Declarative Programming

• New programming paradigm - rules.

• Programmer does not really control code logic.

• Rule engine finds most efficient “path” of code execution.

• Replaces (hard to maintain) nested IF…THEN…ELSE coding.

Page 17: Intro to Jess  The Java Expert System Shell

Wait a minute!

Well…yes and no…but don’t worry, Calvin!

What? I…I can’t control my code??

Page 18: Intro to Jess  The Java Expert System Shell

Thought Experiment…

• Imagine writing a procedural/OOP algorithm to solve a jigsaw puzzle.

• 500+ pieces, different shapes and colors.

• Polymorphism runs amok!

Yet we manage to solve the puzzle…

Page 19: Intro to Jess  The Java Expert System Shell

Intuition and Rules

• Dump the puzzle pieces on a card table in no particular order.

• Your brain instinctively begins to apply rules to solve the puzzle!

• What might this look like in code?

Page 20: Intro to Jess  The Java Expert System Shell

Intuitive Inferencing

(corner_found(piece_is_corner)=>(assert corner-found)(save_piece))

(corner_found(piece_is_corner)=>(assert corner-found)(save_piece))

(edge_found(piece_is_edge)=>(assert edge-found)(save_piece))

(edge_found(piece_is_edge)=>(assert edge-found)(save_piece))

Your brain “knows” what to do with a corner piece …

… and an edge piece.

Page 21: Intro to Jess  The Java Expert System Shell

What’s Going On…

• Your brain recalls rules or heuristics to solve the problem.

• Your brain pattern-matches, prioritizes, and applies rules according to the facts in memory.

• A particular solution algorithm emerges as rules “fire” on facts.

Page 22: Intro to Jess  The Java Expert System Shell

The Jess Language

• Architecturally inspired by CLIPS• LISP-like syntax.• Basic data structure is the list.• Can be used to script Java API.• Can be used to access JavaBeans.• Easy to learn and use.

Page 23: Intro to Jess  The Java Expert System Shell

Obligatory Tradition

(printout t “Hello World!” crlf)(printout t “Hello World!” crlf)

Your very first Jess program!

Page 24: Intro to Jess  The Java Expert System Shell

Lists in Jess

• (a b c) ; list of tokens• (1 2 3) ; list of integers• (+ 2 3) ; an expression• (“Hello world!”) ; a string• (foo ?x ?y) ; a function call

Here are some valid lists in Jess:

Page 25: Intro to Jess  The Java Expert System Shell

Jess Variables

• Named containers that hold a single value.

• Untyped. Begin with a ? mark.• Can change types during lifetime.• Assigned using bind function.

Page 26: Intro to Jess  The Java Expert System Shell

Jess Variables and Lists

EXAMPLE: Adding two numbers

(bind ?x 2) ; assign x = 2(bind ?y 3) ; assign y = 3(bind ?result (+ ?x ?y)) ; find sum

Everything is a list in Jess!

Page 27: Intro to Jess  The Java Expert System Shell

Control Flow

• foreach• if/then/else• while

• apply• build• eval• progn

Common Jess-specific

Page 28: Intro to Jess  The Java Expert System Shell

Jess Functions

(deffunction get-input()“Get user input from console.”(bind ?s (read))(return ?s))

Even functions are lists.

Page 29: Intro to Jess  The Java Expert System Shell

Jess Function Example

(deffunction area-sphere (?radius)

“Calculate the area of a sphere”

(bind ?area (* (* (pi) 2)(* ?radius ?radius)))

(return ?area))

Page 30: Intro to Jess  The Java Expert System Shell

Jess Function Example

(printout t "The surface area of a radius = 2 meter sphere is " +

(area-sphere 2) + " m^2")

How do we use this in Jess?

Page 31: Intro to Jess  The Java Expert System Shell

Working With Facts

• Facts have a head and one or more slots.

• Slots hold data (can be typed).• Multislots can hold lists. • You can modify slot values at

runtime.• Facts are constructed from

templates.

Page 32: Intro to Jess  The Java Expert System Shell

Jess Fact Types

• Ordered – head only• Ordered – single slot.• Unordered – multiple slot, like a

database record.• Shadow – slots correspond to

properties of a JavaBean.

Page 33: Intro to Jess  The Java Expert System Shell

Deftemplate

Used to define the structure of a fact.

(deftemplate pattern “A design pattern.” ;optional

(slot name)(slot type (default “creation”))(slot intent)(slot solution))

Page 34: Intro to Jess  The Java Expert System Shell

Asserting Facts

;; Asserting a new “pattern” fact.(printout t “Enter pattern name:” crlf)(bind ?x getInput)(assert pattern (name ?x))

Facts store the initial conditions.

Page 35: Intro to Jess  The Java Expert System Shell

All Kinds of Facts

;; An ordered fact with no slots – a placeholder that indicates state.

(assert(answer-is-valid))

;; A ordered fact of one slot

(assert(weightfactor 0.75))

Page 36: Intro to Jess  The Java Expert System Shell

Shadow Facts

• defclass – creates a deftemplate from a bean.

• definstance – adds bean to working memory.

Shadow facts are unordered facts whose slots correspond to the properties of a JavaBean.

Page 37: Intro to Jess  The Java Expert System Shell

Jess Rules…

• … are the knowledge-base of the system.

• … fire only once on a given set of facts.

• … use pattern constraints to match facts.

• … are much faster than IF-THEN statements.

Page 38: Intro to Jess  The Java Expert System Shell

Rule Syntax

• Rules have a “left-hand” side (LHS) and a “right-hand” side (RHS).

• The LHS contains facts fitting certain patterns.

• The RHS contains function calls.

Page 39: Intro to Jess  The Java Expert System Shell

Simple Rule Example

;; A not very useful error handler(defrule report-error

(error-is-present)=>(printout t “There is an error” crlf))

Checking working memory state.

Page 40: Intro to Jess  The Java Expert System Shell

A More Complex Rule

;; A more useful error handler(defrule report-err?err <- (is-error (msg ?msg))=>(printout t "Error was: " ?msg crlf)(retract ?err))

Using pattern bindings in rules.

Page 41: Intro to Jess  The Java Expert System Shell

More Pattern and Control Tools

• Literal / variable constraints

• Logical conditional tests

• Predicate functions

• Salience• Modules• Defquery• Backward-

chaining

matching control and structure

Page 42: Intro to Jess  The Java Expert System Shell

Scripting Java from Jess

• You can interactively access all Java APIs from Jess.

• This makes exploring Java somewhat easier and immediate.

• No code, compile, debug cycle.

Page 43: Intro to Jess  The Java Expert System Shell

Scripting Java with Jess

(import javax.swing.*)

(import java.awt.*)

(import java.awt.event.*)

(set-reset-globals FALSE)

(defglobal ?*frame* = (new JFrame "Hello PJUG"))

(defglobal ?*button* = (new JButton "Click my PJUG"))

(?*frame* setSize 500 300)

((?*frame* getContentPane) add ?*button*)

(?*frame* setVisible TRUE)

Page 44: Intro to Jess  The Java Expert System Shell

The Rete (ree-tee) Object

• The reasoning engine and the central class in the Jess library.

• Executes the built Rete network, and coordinates many other activities.

• Rete is essentially a facade for the Jess API.

Page 45: Intro to Jess  The Java Expert System Shell

Using the Jess API…

…is simple…all you really do need to do is call one or more Rete methods …

try {

Rete engine = new Rete();

engine.executeCommand(

“printout t “Hello PJUG”);

engine.run();

}

catch (JessException je {}

Page 46: Intro to Jess  The Java Expert System Shell

Expert Systems References

• Friedman-Hill, E. J., Jess In Action, Manning Press, 2003

• Jackson, P., Introduction to Expert Systems – 3rd Ed., Addison-Wesley, 1999

• Giarratano, J., Expert Systems: Principals and Programming, PSW-Kent, 1989

Page 47: Intro to Jess  The Java Expert System Shell

Links

• Download Jess at: http://herzberg.ca.sandia.gov/jess/index.shtml

• Join the Jess user community at:http://herzberg.ca.sandia.gov/jess/mailing_list.shtml

• See Dr. Friedman-Hill’s Jess in Action at:

http://www.manning.com/friedman-hill/

Page 48: Intro to Jess  The Java Expert System Shell

For Further Study

• CLIPS Expert System Shellhttp://www.ghg.net/clips/CLIPS.html

Page 49: Intro to Jess  The Java Expert System Shell

Q & A

Thanks for your attention, and I hope that you try Jess!