Download presentation
Presentation is loading. Please wait.
Published byCathleen Daniel Modified over 9 years ago
1
Mostly adopted from Jason Morris notes (Morris Technical Solutions)
2
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.
3
Rule Base (knowledge base) Working Memory (fact base) Inference Engine (rule engine)
4
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.
5
Match the facts against the rules. Choose which rules to fire. Execute the actions associated with the rules.
6
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 algorithm to match patterns. Rete network = an interconnected collection of nodes = working memory.
7
WORKING MEMORY RULE BASE EXECUTION ENGINE INFERENCE ENGINE PATTERN MATCHER AGENDA
8
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.
9
(printout t “Hello Class!” crlf) Your very first Jess program!
10
(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:
11
Named containers that hold a single value Untyped Begin with a ? mark Can change types during lifetime Assigned using bind function
12
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!
13
(deffunction get-input() “Get user input from console.” (bind ?s (read)) (return ?s)) Even functions are lists.
14
(deffunction area-sphere (?radius) “Calculate the area of a sphere” (bind ?area (* (* (pi) 2)(* ?radius ?radius))) (return ?area))
15
(printout t "The surface area of a radius = 2 meter sphere is " + (area-sphere 2) + " m^2") How do we use this in Jess?
16
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.
17
Ordered – head only. Ordered – single slot. Unordered – multiple slot, like a database record. Shadow – slots correspond to properties of a JavaBean.
18
Used to define the structure of a fact. (deftemplate pattern “A design pattern.” (slot name) (slot type (default “creation”)) (slot intent) (slot solution))
19
;; Asserting a new “pattern” fact. (printout t “Enter pattern name:” crlf) (bind ?x getInput) (assert (pattern (name ?x))) Facts store the initial conditions.
20
;; 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))
21
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.
22
… 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.
23
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.
24
;; A not very useful error handler (defrule report-error (error-is-present) => (printout t “There is an error” crlf)) Checking working memory state.
25
;; 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.
26
You can interactively access all Java APIs from Jess. This makes exploring Java somewhat easier and immediate.
27
(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)
28
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)
29
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.
30
It is simple. All you really need to do is to make an instance of Rete and call one or more Rete methods. try { Rete engine = new Rete(); engine.executeCommand(“printout t “Hello CS437”); engine.run(); } catch (JessException je {}
31
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/ CLIPS Expert System Shell http://www.ghg.net/clips/CLIPS.html FuzzyJ Website http://www.iit.nrc.ca/IR_public/fuzzy/fuzzyJToolkit2.html
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.