【问题标题】:CLIP: how to find out if a fact exists剪辑:如何找出事实是否存在
【发布时间】:2014-11-26 11:32:20
【问题描述】:

我是专家编程的新手,遇到了一个问题。 我想知道一个事实是否存在,然后在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))
    )
    )

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

我怎样才能做到这一点?

【问题讨论】:

  • 你的问题有点含糊。您是始终希望规则触发还是仅在 4 个事实中至少有 3 个匹配时触发?
  • 应该是 CLIPS(带“s”吧?)

标签: artificial-intelligence clip expert-system


【解决方案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> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多