[AI] Java Rules engines - especially Rete-based

[quote]Hi,

we are trying to use Drools in our product.

There is one big problem with it: - it’s performance is completely unpredictable. If you run the engine, it can sometimes take 10 seconds, and sometimes 10 minutes to finish - for exactly some data.
[/quote]
If you’ve got a sample of that you should send it to the developers. We haven’t had any issue with the evaluation of rules taking different amount of times outside of the first run when janino is compiling our java semantic code into bytecode. After that, performance is constant if we send the same data through over and over and over agaain.

That’s already done in the CVS head as best I can tell. Are you using the version from CVS or the beta-17 binary distro?

There is an extensive list of rules engines at:
http://www.javarules.org

(Look under the Web Links section).

As a point of reference ILOG JRules also JITs rules to bytecode. I believe this is also the case of Blaze Advisor, for example.

JRules also includes the sequential algorithm for cases where RETE is not required. In these cases sequential mode will run much faster than RETE.

What are you trying to do with a rule engine?

Sincerely,

Dan

[quote]There is an extensive list of rules engines at:
http://www.javarules.org

(Look under the Web Links section).
[/quote]
Thanks. The site looks pretty and I suspect may have lots of useful info, but it has a very badly designed UI, it’s a complete PITA to find anything there or even to really work out what’s on the site :(.

Indeed. And it looks like things have changed a fair bit since I was previously researching this.

Aggressive stuff with very complex game logic. Logic so complex it’s unmaintainable by human programmers. Logic so complex it needs to be implemented using basic rules. Logic that is used so frequently those rules need to be compiled so that the 10% of rules that are used 99% of the time have been compiled into things that are quick to fire (or, at least, quick to recognise).

Anyone still interested in performance characteristics of the RETE2 (and now RETE3) algorithms?

Oh, and if you’re interested in logic that’s incomprehensible to humans and can only be handled by an inference engine, you may want to check out my project, REAT. (Rete Evolution of Augmenting Topologies) There’s not much there at the moment, but in a few months I hope to have an alpha version out. Basically it’ll be a method of generating RETE networks through evolution using the techniques of Ken Stanley’s NEAT, (NeuroEvolution of Augmenting Topologies) which is currently used to evolve neural networks.

Oops. Link. :slight_smile: