0

如您所知,许多规则引擎在处理规则时使用 Rete 算法,并且该算法构造一棵树,即所谓的 Rete 树。

Rete 树的理想拓扑是什么,以确保更好的规则处理性能?换句话说,我想知道规则集应该更好地对应的树拓扑以获得更好的性能。

4

2 回答 2

2

简短的回答是,性能受规则和对象的数量、测试的数量、规则中测试的排序方式以及规则之间共享多少测试/条件的影响。

您应该通过以下方式重写规则以获得最佳性能:

  • 重新排序测试和条件,以便将最具区分性的条件移至规则的开头
  • 分享条件

请参阅调整条件IBM ODM 文档。

您还应该减少需要通过规则评估的对象的数量以及测试的数量。

有关 Rete 和 IBM ODM 的参考:

RetePlus 旨在优化对大量对象的大量规则的评估。RetePlus 过滤测试,不评估不相关的测试。可以在使用类似测试的规则之间共享测试,这样就不需要为所有规则重新评估它们。

为了获得最佳结果:

  • 对不同对象的共同测试是共享的。

  • 执行的测试次数被最小化。

  • 当单个评估包含太多变量定义和条件时,性能会下降。

  • 该测试使用较少的内存。

于 2015-11-26T19:39:38.970 回答
0

简而言之,如果您想RetePlus在编排中使用该算法,请仅使用Decision Trees业务规则。

以这种方式使用时速度要快得多。尽管您可以与其他算法以及SequentialAction Rules在这种情况下为 )结合使用。

因此,您的解决方案可能是操作规则的一部分(带有Sequential)和部分Decision Tables(带有RetePlus)。

希望这可以帮助。

于 2016-04-29T19:16:22.087 回答