如何使用 clipspy 撤回事实

如何使用 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 撤回事实?


偶然的你
浏览 189回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python