On Nov 24, 2008, at 7:01 PM, Ken Banks wrote:
1. Is a rule based engine such as jess an appropriate solution given
the type of problem that I am trying to solve
Yes, I think it's very well suited, actually.
2. What mechanism is in place to control the order of priority of
rules? I know that I can manually specify a salience for my rules but
is there a better way of doing things?
Salience controls firing order, and it's appropriate for real-time or
pseudo-real-time control systems and other environments where the rule
that fires first is the one that counts. A more nuanced way of
handling this would just be to define a "play" template that described
a possible play based on the current hand, and give that template an
explicit "priority" slot. Each rules could, when it fires, create a
play with an associated priority -- i.e.,
(defrule raise-on-pocket-aces
(holding pocket aces) ;; I apologize, I don't know what that
means, so I can't show a better pattern here!
=>
(assert (play (action raise) (priority 10))))
(defrule call-on-pocket-aces
(holding pocket aces)
(opponent (is-bluffer TRUE))
=>
(assert (play (action call) (priority 20))))
and so on. Your system can let many rules fire, creating any number of
different plays; then a final rule (one with low salience, so it fires
last!) can choose the play with the highest priority, and use it.
---------------------------------------------------------
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]
--------------------------------------------------------------------