首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止rete激活

停止rete激活
EN

Stack Overflow用户
提问于 2014-09-01 14:04:57
回答 2查看 67关注 0票数 0

我有一条规则,当满足某一条件时,收回成千上万的事实。此规则位于一个模块中,其中包含两个使用"not“语句的其他规则。我的问题是:

  1. 每次第一个规则撤回一个事实时,rete网络会被重新计算吗?
  2. 这是因为其他两条规则中的“不”声明,还是会发生这种情况?
  3. 是否有办法在第一条规则没有更多的事实可收回之前停止重新计算激活?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-09-01 15:43:40

如果不知道规则中使用撤回事实类型的模式,就不可能得到准确的答案。

显然,如果Fact是那种类型,并且规则#2和规则#3只包含

代码语言:javascript
复制
not Fact(...constraints...)

在从工作内存中删除最后一个满足约束的事实(如果有的话)之前,不应该发生巨大的事情:然后可能必须创建一个额外的节点,这取决于其他什么是非CE);这种情况可能会继续下去,取决于非CE之后的内容,并导致终端节点,即激活。

如果像这样的模式

代码语言:javascript
复制
Fact(...constraints...)

在任何这些规则中,撤回一个事实(如果满足这些限制,如果有的话)将导致对网络中任何未决的激活和节点的删除立即采取一些行动,前提是它之前已经包括在内。

在Rete网络中,没有什么可以避免发生的事情。

尽管如此,必须收回成千上万的事实是相当可怕的。还有多少人?这可能是比较便宜的挑选少数,并重新开始在一个全新的Rete。或者使用一种设计模式,它不会同时将所有的数千人暴露给引擎。或者别的什么。

票数 1
EN

Stack Overflow用户

发布于 2014-09-15 22:38:50

我们已经编写了一个延迟算法,它避免了部分匹配和激活的复制,直到规则可能已经准备好触发为止。由于懒惰,您可以在评估规则时使用显着性来延迟。http://blog.athico.com/2013/11/rip-rete-time-to-get-phreaky.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25607578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档