intro to jess the java expert system shell l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Intro to Jess The Java Expert System Shell PowerPoint Presentation
Download Presentation
Intro to Jess The Java Expert System Shell

Loading in 2 Seconds...

play fullscreen
1 / 61

Intro to Jess The Java Expert System Shell - PowerPoint PPT Presentation


  • 402 Views
  • Uploaded on

Intro to Jess The Java Expert System Shell. By Jason Morris Morris Technical Solutions. Quotable Quotes. Each problem that I solved became a rule which served afterwards to solve other problems. - Rene Descartes. Quotable Quotes .

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Intro to Jess The Java Expert System Shell' - olympia


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
intro to jess the java expert system shell

Intro to Jess The Java Expert System Shell

By Jason Morris

Morris Technical Solutions

quotable quotes
Quotable Quotes

Each problem that I solved became a rule which served afterwards to solve other problems.- Rene Descartes

quotable quotes3
Quotable Quotes

As a rule we disbelieve all the facts and theories for which we have no use.

- William James

quotable quotes4
Quotable Quotes

Hell, there are no rules here -- we're trying to accomplish something.

- Thomas A. Edison

quotable quotes5
Quotable Quotes

Get your facts first, and then you can distort them as much as you please.

- Mark Twain

quotable quotes6
Quotable Quotes

If the facts don't fit the theory, change the facts.- Albert Einstein

quotable quotes7
Quotable Quotes

There are two rules for success:

1) Never tell everything you know.

- Roger H. Lincoln

quotable quotes8
Quotable Quotes

Facts do not cease to exist just because they are ignored.

- Aldous Huxley

agenda
Agenda
  • What are expert systems?
  • What are rule-based expert systems?
  • Introduction to Jess
  • The Jess Language

5 minute break

agenda10
Agenda
  • Scripting & The Jess API
  • Demo 1 : Design Pattern Expert
  • Demo 2 : Catalog Servlet
  • References and Further Study
  • Q & A
expert systems
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.
types of expert systems
Types Of Expert Systems
  • Neural Networks
  • Blackboard Systems
  • Belief (Bayesian) Networks
  • Case-Based Reasoning
  • Rule-Based Systems
rule based expert systems
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).
when to use rule based systems
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…)
inference process
Inference Process
  • Rules and facts compared using pattern matcher.
  • Matched rules activated into a conflict set.
  • Conflict set resolved into agenda (process called conflict resolution).
  • Rule engine fires on agenda.
  • Engine cycles until all rules are satisfied.
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.
rule based expert system architecture
Rule-Based Expert System Architecture
  • Rule Base (knowledge base)
  • Working Memory (fact base)
  • Inference Engine (rule engine)
inference rule engines
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.
inference process19
Inference Process
  • Match the facts against the rules.
  • Choose which rules to fire.
  • Execute the actions associated with the rules.
how does jess work
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.
jess architecture diagram
Jess Architecture Diagram

WORKING

MEMORY

INFERENCE

ENGINE

EXECUTION

ENGINE

PATTERN

MATCHER

RULE

BASE

AGENDA

procedural programming
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.
declarative programming
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.
wait a minute

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

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

Wait a minute!
thought experiment
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…

intuition and rules
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?
intuitive inferencing
Intuitive Inferencing

(corner_found

(piece_is_corner)

=>

(assert corner-found)

(save_piece))

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

(edge_found

(piece_is_edge)

=>

(assert edge-found)

(save_piece))

… and an edge piece.

what s going on
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.
the jess language
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.
obligatory tradition
Obligatory Tradition

(printout t “Hello PJUG-ers!” crlf)

Your very first Jess program!

lists in jess
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:

jess variables
Jess Variables
  • Named containers that hold a single value.
  • Untyped. Begin with a ? mark.
  • Can change types during lifetime.
  • Assigned using bind function.
jess variables and lists
Jess Variables and Lists

Everything is a list in Jess!

EXAMPLE: Adding two numbers

(bind ?x 2) ; assign x = 2

(bind ?y 3) ; assign y = 3

(bind ?result (+ ?x ?y)) ; find sum

control flow
foreach

if/then/else

while

apply

build

eval

progn

Control Flow

Common

Jess-specific

jess functions
Jess Functions

Even functions are lists.

(deffunction get-input()

“Get user input from console.”

(bind ?s (read))

(return ?s))

jess function example
Jess Function Example

(deffunction area-sphere (?radius)

“Calculate the area of a sphere”

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

(return ?area))

jess function example37
Jess Function Example

How do we use this in Jess?

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

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

working with facts
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.
jess fact types
Jess Fact Types
  • Ordered – head only.
  • Ordered – single slot.
  • Unordered – multiple slot, like a database record.
  • Shadow – slots correspond to properties of a JavaBean.
deftemplate
Deftemplate

Used to define the structure of a fact.

  • (deftemplate
    • pattern “A design pattern.”
    • (slot name)
    • (slot type (default “creation”))
    • (slot intent)
    • (slot solution))
asserting facts
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.

all kinds of facts
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))

shadow facts
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.

jess rules
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.
rule syntax
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.
simple rule example
Simple Rule Example

Checking working memory state.

;; A not very useful error handler

(defrule report-error

(error-is-present)

=>

(printout t “There is an error” crlf))

a more complex rule
A More Complex Rule

Using pattern bindings in rules.

;; A more useful error handler

(defrule report-err

?err <- (is-error (msg ?msg))

=>

(printout t "Error was: " ?msg crlf)

(retract ?err))

more pattern and control tools
More Pattern and Control Tools
  • Literal / variable constraints
  • Logical conditional tests
  • Predicate functions

matching

control and structure

  • Salience
  • Modules
  • Defquery
  • Backward-chaining
break time
Break Time!

Let’s take a quick 5 minute pause…

scripting java from jess
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.
scripting java with jess
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)

swingDemo.bat

demo 1 pat pattern analysis tool
Demo 1: PAT (Pattern Analysis Tool)
  • PAT is a simple decision-tree for choosing a Java design-pattern.
  • Uses an initial interview to establish problem space.
  • Recommends a GoF Java design-pattern to fit the available facts.

examples/pattern.clp

the jess api
The Jess API
  • jess - inference engine “guts”.
  • jess.awt – GUI wrappers.
  • jess.factory - Allows extensions that “get into the guts of Jess”.

Organized into 3 packages, 64 classes (not hard to learn)

the rete ree tee object
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.
using the jess api
Using the Jess API…

try {

Rete engine = new Rete();

engine.executeCommand(

“printout t “Hello PJUG”);

engine.run();

}

catch (JessException je {}

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

demo 2 catalog servlet
Demo 2: Catalog Servlet

import jess.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

publicabstractclass BaseServlet extends HttpServlet {

publicvoid doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

doGet(request, response);

}

}...

Here is an example of a Jess application running as a Java servlet…

pattern references
Pattern References
  • Shalloway, A., Design Patterns Explained, Addison-Wesley, 2002
  • Gamma, E. et. al., Design Patterns: Elements of Reusable Object-Orient Software, Addison-Wesley, 1995
expert systems references
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
links
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/

for further study
For Further Study
  • CLIPS Expert System Shell

http://www.ghg.net/clips/CLIPS.html

  • FuzzyJ Website

http://www.iit.nrc.ca/

IR_public/fuzzy/

fuzzyJToolkit2.html

slide61
Q & A

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