As usual, I'm a few days late on responding to this email.  However,
here are just a few quotes from Dr. Forgy's 1979 thesis on the Rete
Match Algorithm that might pertain to this subject.  If you don't
have a copy of his thesis, I'm sure that any major university nearby
has one on file.  I do have permission from Dr. Forgy to scan the
thesis and put it on my web site.  I'll probably do that later on
this month as time permits.

[ Moderator's note: I'm not really sure what these quotes have to do
with the OP's question, other than as general comments on Rete; there
is similar material in the Jess manual and in "Jess in Action."

Furthermore, be careful, because any algorithmic analysis performed on
OPS or any of its immediate follow-ons are not going to be valid for
Jess. Jess's implementation of Rete is quite highly modified, and
doesn't generally behave as these early analyses of Rete would
indicate. ]

Chapter Two:

Page 25: (P 2.1.1) "Moreover, any production that becomes
instantiated was probably close to being instantiated on the previous
cycles -- perhaps having instantiations for all but one of its
condition elements.  The match routine can take advantage of this by
saving from one cycle to the next an indication of which productions
are instantiated and which condition elements of the other
productions a re instantiated, incrementally updating the information
to reflect the changed state of working memory.  If it does so, the
effort required to perform the match will depend more on the small
number of elements changed than on the much larger total number of
elements in working memory."

Page 27: (P 2.1.4) "Perhaps the most unusual feature of a match
routine based on the Rete Match Algorithm is that it never examines
working memory.  Instead, it monitors the changes made to working
memory and maintains internally information which is equivalent to
that in working memory."

Page 49: (P 2.4.2) "The Rete Match Algorithm takes advantage of
structural similarity by sharing nodes between productions."

Page 60: (P 2.6) There is a fundamental restriction on the kinds of
data elements that can be processed by the algorithm, but the
restriction is not that they must be OPS2-style lists.  The
restriction is that they must contain only constants.  Variables and
match functions cannot be handled without revising the nodes and the
network interpreter."

Chapter Three deals with the OPS2 Interpreter.  Dr. Forgy has said
that the three most important chapters in the thesis is Two, Three
and Four but that understanding Three was maybe the most important. 
In Chapter Three he takes quite a bit of time explaining the problems
of using NOT condition elements.

Chapter Four deals extensive with optimizations and effects of
working memory, production memory, number of objects, comparisons,
etc., etc.  It's kind of a slow read but fairly important to someone
wanting to understand how to optimize a rulebase using the Rete Match
Algorithm.

SDG
jco
 
- -----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Noah Zimmerman
Sent: Tuesday, August 12, 2003 12:53 PM
To: [EMAIL PROTECTED]
Subject: JESS: Benchmarking


Hello!

I would like to run some tests with my existing rule base to check
the performance under different conditions.  My understanding of the
Rete algorithm is that its efficiency is inversely proportional to
the number of changes in the knowledge base.  With this in mind, I
would like to see the degradation of performance as an increasing
number of facts are modified/retracted/asserted.  I was wondering
what the best practice was for doing these kind of speed benchmarks. 
This code will be embedded in a Java application which is responsible
for altering the knowledge base. I would like to see the time for
each iteration of the loop, as well as the overall elapsed time.  Is
there a way isolate just the JESS performance to separate it from the
Java execution?  Forgive me naivety, I have never tried to do speed
testing before!  ( When I tried to do something like: ( bind
?last-time ?time )  DO OTHER THINGS ( bind ?time ( time ) ) ( bind
?eTime ( - ?time ?last-time ) ) I only got values of 0 and 1 ) Thanks
in advance!

--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to