一、
1、 (declare (salience20))声明了规则的优先级,数字越大优先级越高
2、 在规则同等优先级的情况下,事实按照堆栈的要求处理,后进先出。所以有:
CLIPS> (run)
third
second
二、
CLIPS> (clear)
CLIPS> (defrule first
(first first)
=>
(printout t "second" crlf))
CLIPS> (defrule second
(second second)
=>
(printout t "third" crlf))
CLIPS> (assert (firstfirst)(second second))
<Fact-2>
CLIPS> (run)
third
second
CLIPS> (clear)
CLIPS> (defrule first
(declare (salience 20))
(first first)
=>
(printout t "second"crlf))
CLIPS> (defrule second
(declare (salience 10))
(second second)
=>
(printout t "third"crlf))
CLIPS> (run)
CLIPS> (assert (first first)(second second))
<Fact-2>
CLIPS> (run)
second
third
CLIPS>
本文介绍了CLIPS规则引擎中规则优先级的设置方法及其实现效果。通过使用(declare(salience))来指定不同规则的优先级,优先级高的规则会优先执行。当规则优先级相同时,则遵循后进先出的原则。
661

被折叠的 条评论
为什么被折叠?



