what about implementing the approach Paul Haley used in ART for
backward chaining?


http://haleyai.com/wordpress/2008/03/11/goals-and-backward-chaining-using-the-rete-algorithm/

paul recently posted his old paper on his blog.

peter

On Tue, Aug 26, 2008 at 12:40 PM, Ernest Friedman-Hill
<[EMAIL PROTECTED]> wrote:
> On Aug 26, 2008, at 11:55 AM, Marcin Krol wrote:
>>
>> I have to say that daisy-chained backward-chaining rules are  decidedly
>> non-trivial (and therefore harder to write and debug), while
>> forward-chaining rules are very easy to understand (at least for me).
>>
>> I'm writing about Jess in my thesis on AI techniques, and so I wanted to
>> ask you a few questions - is backward-chaining is really valuable in
>> practice, outside of subjects like calling queries to databases (like in
>> the example you give in "Jess in Action")?
>>
>> If so, where do you think it is most useful? Are there any problems that
>> are awkward to code using forward-chaining while they are more natural
>> to code using backward-chaining rules?
>
>
> I think the most important applications have been the query-like ones. There
> are certainly
> plenty of techniques that work well with classical backward-chaining rules,
> but really can't be
> implemented using Jess's restricted form of backward chaining
> .
>>
>> How do you think backward-chaining adds to the expressive power of Jess
>> understood as language? Is it worth the effort, both for rule engine
>> developer and for the rule engine user?
>
> I think it *could* add tremendously to the expressiveness of the language if
> it were carried
> further. There are a lot of problems that can be expressed elegantly with
> backtracking, for example.
> There have been some user-modified versions of Jess that implement
> backtracking concepts, but none of them
> in an elegant way, AFAIK. Right now I think the truth is that beyond the
> query-like applications (which are
> equivalent in many ways to "finders" in JRules), Jess's backward chaining
> hasn't seen widespread use.
>
>>
>>
>> I have sort of stumbled on one limitation of backward-chaining in Jess:
>> constraints on slots, I found I couldn't call a function on slot:
>>
>> Jess> Jess reported an error in routine ReteCompiler.addRule.
>>  Message: Can't use funcalls in backchained patterns __data.
>>
>> Is there a way around that? Or am I misunderstanding the problem,
>> because one perhaps doesn't want to constrain slots in backward-chained
>> rules as finding their values is the goal of this part of rule engine
>> operation (as constraints would simply prevent firing one of b-c rules
>> in the chain of reasoning in some cases, like it happened in my
>> uncorrected example)?
>
>
> There's no way around it in the current version of Jess. As you know, goals
> are represented
> as regular facts, and stored in regular working memory. For anything other
> than literal constraints to
> be usable in goals, there would need to be a way of representing the
> constraint in the fact itself, and
> storing that representation in working memory. While not impossible to
> implement, this would impact many parts
> of the Jess codebase.
>
> Another approach would be to store goals not in working memory, but in a
> different
> structure altogether, one designed from the beginning to accommodate their
> requirements.
> In retrospect this is probably how Jess's backward chaining should have been
> implemented
> in the first place.
>
>
> ---------------------------------------------------------
> Ernest Friedman-Hill
> Informatics & Decision Sciences, Sandia National Laboratories
> PO Box 969, MS 9012, Livermore, CA 94550
> http://www.jessrules.com
>
>
>
>
>
>
>
> --------------------------------------------------------------------
> 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]
> --------------------------------------------------------------------
>
>


--------------------------------------------------------------------
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