CLIP:如何确定是否存在事实

时间:2014-11-25 11:14:20

标签: artificial-intelligence clip expert-system

我是专家编程的新手并且遇到了问题。 我想知道是否存在事实,然后根据RHS中的这些事实做一些操作。

例如: - 我有4个事实。

(deffacts test (A 1) (B 2) (C 3) (D 4))

以下规则事实E不存在。所以它永远不会进入RHS。并且不会触发规则。

(defrule rul1
    (declare (salience 10))
    (A ?var1)
    (B ?var2)
    (C ?var3)
    (E ?var4)
    =>
    (if 
    (
      or (or (or (= ?var1 1) (= ?var2 1)) (= ?var3 1)) (= ?var4 4)
    )
    then
    (printout t "Rule matched" crlf))
    )
    )

我的要求是,如果事实不存在,只需忽略或分配虚拟值,以便它可以触发规则。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

尝试将匹配逻辑放在规则的条件而不是操作中:

CLIPS> 
(deffacts test (A 1) (B 2) (C 3) (D 4))
CLIPS> 
(defrule rul1
    (declare (salience 10))
    (or (A 1)
        (B 1)
        (C 1)
        (E 4))
    =>
    (printout t "Rule matched" crlf))
CLIPS> (reset)
CLIPS> (agenda)
10     rul1: f-1
For a total of 1 activation.
CLIPS>