哪个规则将首先被触发,更具体还是最后一个?

问题描述 投票:0回答:1

我是 CLIPS 的新手,但我之前接触过 Prolog,而且我记得 Prolog 会执行更具体的规则,CLIPS 的情况如何?

例如,我有以下事实:

(male Rayan)
(male Mark)
(female Jamila)
(female Maria)
(male Osama)
(male Brad)
(parent Rayan Mark) ; Rayan is father of Mark
(parent Brad Rayan)
(parent Maria Rayan)
(parent Rayan Osama)

然后我定义了两个规则

(defrule grand-parent 
(parent ?x ?y) (parent ?y ?z) 
=> (assert (grand-parent ?x ?z)))

(defrule grand-mother
(parent ?x ?y) (parent ?y ?z) (female ?x) 
=> (assert (grand-motehr ?x ?z)))

我认为无论定义的规则的顺序如何,祖母规则都会首先被激活,因为它更具体,但似乎事实并非如此。那么,具体的激活策略是什么呢?

更新:

这与解决冲突或某些策略有关吗

clips expert-system
1个回答
0
投票

冲突解决策略决定了规则在议程上的相对位置。详细信息将在 CLIPS 基本编程指南的 5.3 节中讨论。默认深度策略选择由最近的事实断言激活的规则。 lex 策略结合使用新近度和特异性来确定规则触发的顺序。

© www.soinside.com 2019 - 2024. All rights reserved.