CLIPS - 添加两个事实的插槽
CLIPS - Adding the slots of two facts
我是 CLIPS 的新手,一直在尝试实现一个基于讲座的程序,该程序分别添加两个事实的 2 个槽的值。我首先定义 o1
、 o2
(我们添加的两个事实)和 o3
(我们存储结果的地方)的模板。前两个事实 o1
和 o2
中的每一个都有 2 个 slots 、 s1
和 s2
。 o3
的插槽是 r1
和 r2
。然后我使用 deffacts 继续初始化插槽 o1
和 o2
。然后,结束,使用 defrule ,我将变量设置为 o1
和 o2
的插槽并使用 assert 生成o3
事实,哪个插槽 r1
将具有事实 o1
和 o2
的第一个插槽值的总和,而 r2
将是第二 。我正在使用 ubuntu,使用 clips -f try.clp
命令加载 clp 剪辑文件,然后执行 (run)
,最后执行 (facts)
,但看不到新事实,或任何一个预先存在的。有人可以指导我吗?我正在发布 运行 程序的代码和屏幕截图。
这是我的代码:
(deftemplate o1
(slot s1)
(slot s2))
(deftemplate o2
(slot s1)
(slot s2))
(deftemplate o3
(slot r1)
(slot r2))
; Facts
(deffacts F
(o1 (s1 3)(s2 5))
(o2 (s1 7)(s2 9)))
; Rules
(defrule R
(o1 (s1 ?x1)(s2 ?y1))
(o2 (s1 ?x2)(s2 ?y2))
=>
(assert (o3(r1 (+ ?x1 ?x2))(r2 (+ ?y1 ?y2))))
)
和 运行 程序的屏幕截图:
您需要在 (运行) 命令之前发出一个(重置)命令。 Reset 删除所有现有事实,然后声明您的 defacts 中指定的事实。
我是 CLIPS 的新手,一直在尝试实现一个基于讲座的程序,该程序分别添加两个事实的 2 个槽的值。我首先定义 o1
、 o2
(我们添加的两个事实)和 o3
(我们存储结果的地方)的模板。前两个事实 o1
和 o2
中的每一个都有 2 个 slots 、 s1
和 s2
。 o3
的插槽是 r1
和 r2
。然后我使用 deffacts 继续初始化插槽 o1
和 o2
。然后,结束,使用 defrule ,我将变量设置为 o1
和 o2
的插槽并使用 assert 生成o3
事实,哪个插槽 r1
将具有事实 o1
和 o2
的第一个插槽值的总和,而 r2
将是第二 。我正在使用 ubuntu,使用 clips -f try.clp
命令加载 clp 剪辑文件,然后执行 (run)
,最后执行 (facts)
,但看不到新事实,或任何一个预先存在的。有人可以指导我吗?我正在发布 运行 程序的代码和屏幕截图。
这是我的代码:
(deftemplate o1
(slot s1)
(slot s2))
(deftemplate o2
(slot s1)
(slot s2))
(deftemplate o3
(slot r1)
(slot r2))
; Facts
(deffacts F
(o1 (s1 3)(s2 5))
(o2 (s1 7)(s2 9)))
; Rules
(defrule R
(o1 (s1 ?x1)(s2 ?y1))
(o2 (s1 ?x2)(s2 ?y2))
=>
(assert (o3(r1 (+ ?x1 ?x2))(r2 (+ ?y1 ?y2))))
)
和 运行 程序的屏幕截图:
您需要在 (运行) 命令之前发出一个(重置)命令。 Reset 删除所有现有事实,然后声明您的 defacts 中指定的事实。