Ernest Friedman-Hill schreef:
On Nov 17, 2006, at 11:59 AM, Mitchell Christensen wrote:
Hey,
Can someone enlighten me as to what the ‘compiled sequential’ rule
evaluation method provided by Blaze Advisor is all about? It is
advertised as a performance optimization over Rete. I could pose the
question to the Fair Isaac folks but I’d like a somewhat more
objective opinion (if that is possible).
What is sacrificed to achieve the performance gain? Is something
similar possible using Jess? Does it represent an alternative to
Rete, or is it simply an optimization of Rete based on the assumption
of a FIFO conflict resolution?
There are a couple of alternatives to Rete that were proposed back in
the early days: two of these are TREAT and LEAPS. LEAPS is a very
clever algorithm that involves compiling a Rete-like network in such a
way that the agenda automatically is ordered the right way, and on
some agenda-intensive benchmarks (like the "Manners" benchmark) LEAPS
can seem very fast. The thing is, of course, that the conflict
resolution is rarely the rate-limiting step in real Rete applications,
especially in business rules.
I cannot say I agree entirely here. Of course conflict resolution is
rarely the bottleneck in RETE applications. I think you agree making
numerous joins is the rate-limiting step. And LEAPS makes far, far less
unnecessary joins. That is why LEAPS IS (not seems) so much faster then
RETE in most cases.
What you sacrifice is some expressiveness (the semantics of "not" are
different and a bit limited), the ability to add and remove rules on
the fly (can't do this in LEAPS, as the whole network has to be
assembled together) and sometimes you're required to provide "training
data" upfront to do the rule compilation.
True, you sacrifice some expressiveness, mostly in conflict resolution.
But practice shows this is not a problem. You can do "not" decently
enough I think. Removing rules of course is trivial. Adding rules is a
bit of a challenge, but I would not immediately say it is impossible.
So anyway, this "compiled sequential mode" as well as ILOG's
"optimized' mode are basically some variant of LEAPS. Jess can't do
this right now, but we're looking at it for Jess 8.
"Compiled sequential mode" is just a fancy word for a trivial, naive
evaluation algorithm on first sight: quoting
http://www.dmreview.com/edm/advisor_how.pdf :
"... simply evaluate each ruleÂ’s conditions in a fixed sequence. Each
rule is
evaluated to be true (in which case a corresponding action is triggered)
or false, in which case it
is skipped and the next rule is checked. The results of a ruleÂ’s actions
will not trigger a
previously evaluated rule to be reconsidered."
Correct me if I'm wrong, 'cause I certainly am no Blaze Advisor
specialist. This is by no means LEAPS, this is just trying each rule in
turn, which is basically the most naive algorithm you can come up with.
The fact that this can even be considered faster then RETE, is in my
opinion a clear indication something is very wrong with RETE. LEAPS,
just like this naive algorithm, avoids combinatorial explosion in the
joins generated, but is far more clever.
Just because the entire business world believes RETE is the absolute
end, we should not all assume this is true. It is our scientific duty to
question this. Just to end with a quote from Daniel P. Miranker
(http://www.cs.utexas.edu/~miranker/treator.htm):
"TREAT or RETE, neither, LEAPS is best"
Cheers,
Peter
begin:vcard
fn:Peter Van Weert
n:Van Weert;Peter
org:K.U.Leuven;Department of Computer Science
adr:room 01.05;;Celestijnenlaan 200A;Heverlee;;3001;Belgium
email;internet:[EMAIL PROTECTED]
title:DTAI (Declarative Languages and Artificial Intelligence)
tel;work:+32 16 327665
url:http://www.cs.kuleuven.be/~petervw/
version:2.1
end:vcard