gpt4 book ai didi

java - 如何更新 Jess 规则引擎中的事实?

转载 作者:行者123 更新时间:2023-11-30 05:28:18 25 4
gpt4 key购买 nike

在 Jess 中,假设我的事实库由几个名称-值对组成,例如

(node1 6.5) (node2 100) (node3 0.5)

如何在不手动撤回的情况下“更新”这些值,例如“node1”值从 6.5 到 100?

此外,在某个规则被触发后,有没有办法“重新断言”所有事实?

最佳答案

您使用 Jess 的(modify) 函数来修改事实。 As explained in the manual ,像 (node1 6.5) 这样的有序事实在内部表示为带有名为 __data 的单个槽的无序事实,因此您可以利用这些知识来修改它们:

Jess> (assert (node1 6.5))
<Fact-0>
Jess> (modify 0 (__data 7.5))
<Fact-0>
Jess> (facts)
f-0 (MAIN::node1 7.5)
For a total of 1 facts in module MAIN.

现在,考虑到所有这些,为了提高效率,我仍然建议您使用无序模板,例如

(node (slot index) (slot value))

让你的事实看起来像

(node (index 1) (value 6.5))
(node (index 2) (value 100))

关于你的最后一个问题:我不太确定你的意思,但你可以查找 (deffacts) 构造和 (reset) 函数,看看这些一起是否能满足您的需要。

关于java - 如何更新 Jess 规则引擎中的事实?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58095356/

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