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

Reply via email to