It is true that the Rete algorithm (on which Jess is based) is built on the 
assumption that only a small fraction (usually quoted as 5-10%) of the 
knowledge base will change on each evaluation cycle. Populating the network 
from scratch is expensive and constantly resetting it does degrade performance 
quite seriously.

On the other hand, if the whole knowledge base must be constantly reevaluated, 
than no other algorithm will necessarily be any better. Rather than searching 
for other tools, you might put some work into figuring out how to preserve 
those parts of the KB that don't change as frequently, rather than constantly 
resetting. Presumably there are stationary objects and information about 
ownership and properties that don't change often.

From: [] On 
Behalf Of Sam Sarjant
Sent: Sunday, October 09, 2011 5:49 PM
To: jess-users
Subject: JESS: Using JESS for representing game states

  I have been using JESS for some time as a rule-system for representing states 
in a game (relational reinforcement learning), such that the state of the game 
can be represented in terms of objects. An agent uses these states and a 
decision making process (in this case defqueries to resolve rules in conditions 
-> action form). Because games are very dynamic environments, the state is 
constantly changing. I am currently handling this by resetting the state and 
reasserting the facts of the state (then running to generate any further facts 
that rules generate).

My question is: is JESS the best rule-system to use for this task? I know JESS 
has the property of only generating facts once, but if the state is constantly 
being reset, perhaps some other system would be more effective. JESS certainly 
gets the job done, and I haven't really tested anything else, but I am 
concerned with the speed of execution, but perhaps this is simply due to the 
fact that I am using this relational representation.

- Thanks, Sam Sarjant<>

Reply via email to