CLIPS 编程事实和规则库大小

CLIPS programming fact and rule base sizes

Clips 的可扩展性是什么..即 CLIPS 中规则和事实数量的最大限制是多少?我正在使用 CLIPS 6.24 但无法上传一百万个事实!!

CLIPS 中 rete 算法的实现在规则之间共享通用模式,因此模式匹配性能会随着您添加规则而合理扩展。当规则之间没有共享模式时,将发生最坏的情况性能。

6.3版本也进行了大量的改进,提升大量事实的性能:

         CLIPS (V6.24 06/15/06)
CLIPS> (timer (loop-for-count (?i 100000) (assert (data ?i))))
3.78414106369019
CLIPS> (reset)
CLIPS> (timer (loop-for-count (?i 1000000) (assert (data ?i))))
885.884355068207
CLIPS> 

         CLIPS (6.30 3/17/15)
CLIPS> (timer (loop-for-count (?i 100000) (assert (data ?i))))
0.136654
CLIPS> (reset)
CLIPS> (timer (loop-for-count (?i 1000000) (assert (data ?i))))
6.046085
CLIPS>

我没有花很多时间来优化大型规则集的加载,所以这个或其他相关开发功能肯定有可能不能很好地扩展。我使用具有几千条简单规则的商业产品开发了一个专家系统。性能和编译时间是可以接受的,并且可能会很好地扩展,但是桌面客户端和规则存储库之间的同步非常缓慢且存在错误。我无法想象在不改进产品组件的情况下尝试扩展该应用程序。

除了事实和规则的数量之外,还有许多影响可扩展性的因素,尤其是规则的设计、规则的复杂性以及事实与规则模式之间的关系。评估工具时最好的选择是编写一个简单的程序,该程序生成大量与您设想编写的规则相似的规则以及与这些规则匹配的相关事实,并使用它们来测试可扩展性。

我编写的最大的 CLIPS 系统有大约 600 个复杂规则,处理了数万个事实,并且在 CLIPS 6.24 上具有可接受的性能。我不记得有人提到过更大的系统,但实际上我不认为你可以用 6.24 扩展到一百万个事实,除非你对可接受的性能很慷慨。

对于 6.3,我认为您可以构建一个至少包含几千条规则和几十万条事实的系统是合理的,但您最好的选择还是以编程方式生成规则和事实并测试性能。