-- 作者:csuxiao
-- 发布时间:3/19/2010 7:51:00 PM
-- jess in Action 中的第一个例子,运行不出结果,懂的帮忙看看,谢谢!
这是我的代码,主要抄书上的 (deftemplate pants-color (slot of) (slot is)) (deftemplate position (slot of) (slot is)) ;;(pants-color (of Bob) (is red)) (defrule generate-possibilities => (foreach ?name (create$ Fred Joe Bob Tom) (foreach ?color (create$ red blue plaid orange) (assert (pants-color (of ?name) (is ?color)))) (foreach ?positon (create$ 1 2 3 4) (assert (position (of ?name) (is ?position)))) )) (defrule find-solution ;; There is a golfer named Fred, whose position is ?p1 ;; and pants color is ?c1 (position (of Fred) (is ?p1)) (pants-color (of Fred) (is ?c1)) ;; The golfer to Fred's immediate right ;; is wearing blue pants. (position (of ?n&~Fred) (is ?p&:(eq ?p (+ ?p1 1)))) (pants-color (of ?n&~Fred) (is blue&~?c1)) ;; Joe is in position #2 ;;(position (of Joe) (is ?p2&2&~?p1)) ;;(pants-color (of Joe) (is ?c2&~?c1)) ;; We don't know anything about Joe, really (position (of Joe) (is ?p2&~?p1)) (pants-color (of Joe) (is ?c2&~?c1)) ;; Bob is wearing the plaid pants (position (of Bob) (is ?p3&~?p1&~?p&~?p2)) (pants-color (of Bob&~?n) (is plaid&?c3&~?c1&~?c2)) ;; Tom isn't in position 1 or 4 ;; and isn't wearing orange (position (of Tom&~?n) (is ?p4&~1&~4&~?p1&~?p2&~?p3)) (pants-color (of Tom) (is ?c4&~orange&~blue&~?c1&~?c2&~?c3)) => (printout t Fred " " ?p1 " " ?c1 crlf) (printout t Joe " " ?p2 " " ?c2 crlf) (printout t Bob " " ?p3 " " ?c3 crlf) (printout t Tom " " ?p4 " " ?c4 crlf crlf)) 用Eclipse运行结果,居然没有结果 Jess, the Rule Engine for the Java Platform Copyright (C) 2008 Sandia Corporation Jess Version 7.1p2 11/5/2008 然后就完了....... 使用jess直接运行是这样的 Jess> (batch "examples/reason.clp") TRUE 结果只有个TRUE,到底是怎么回事啊 书上说应该显示为 Fred 1 orange Joe 2 blue Bob 4 plaid Tom 3 red 请各位指教!!!
|