gpt4 book ai didi

python - 如何使用 Clipspy 撤回事实

转载 作者:行者123 更新时间:2023-12-01 08:29:47 25 4
gpt4 key购买 nike

如何使用 Clipspy 从 Python 函数中撤回 CLIPS 中的事实。我尝试使用 build() 但事实仍然存在。

;;--KB.clp--;;
(defrule main-intent

(initial-fact)
=>
(assert (fact one))
(assert (fact two))
)

(defrule rule_1
?p <- (fact one)
?q <- (fact two)
=>
(py_pfact)
(py_retract ?p ?q)
(py_pfact)
)

从 python 运行

# run.py
import clips

clips_env = clips.Environment()

def py_pfact():
for fact in clips_env.facts():
print(fact)

def py_retract(p, q):
clips_env.build('retract '+str(p))

clips_env.define_function(py_retract)
clips_env.define_function(py_pfact)

clips_env.load("KB.clp")
clips_env.reset()
clips_env.run()

输出为:

(initial-fact)
(fact one)
(fact two)
(initial-fact)
(fact one)
(fact two)

(事实一)未撤回。看起来 ?p 不包含事实标识符,而是包含整个事实本身。过去我就以这种方式使用过 PyCLIPS 并且它有效。是否可以使用 ClipsPy 撤回事实?

最佳答案

clipspyenvironment.buildmethod类似于 CLIPS C API EnvBuild,它允许在引擎内将定义模板和规则等构造构建为字符串。

clips_env.build("(deftemplate foo (slot bar) (slot baz))")

如果您想撤回事实,只需调用its method即可.

def py_retract(p, q):
p.retract()

关于python - 如何使用 Clipspy 撤回事实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53959559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com