CLIPS编程事实和规则库的大小

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.78414106369019CLIPS> (reset)CLIPS> (timer (loop-for-count (?i 1000000) (assert (data ?i))))885.884355068207CLIPS>          CLIPS (6.30 3/17/15)CLIPS> (timer (loop-for-count (?i 100000) (assert (data ?i))))0.136654CLIPS> (reset)CLIPS> (timer (loop-for-count (?i 1000000) (assert (data ?i))))6.046085CLIPS>

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

影响可扩展性的因素有很多,不仅仅是事实和规则的数量,特别是规则的设计、它们的复杂性以及事实与规则模式之间的关系。在评估一个工具时,最好的方法是编写一个简单的程序,生成大量类似于你设想的规则和与这些规则匹配的事实,并使用这些来测试可扩展性。

我编写过的最大CLIPS系统大约有600条复杂规则,处理了数万个事实,并且在CLIPS 6.24上表现出可接受的性能。我不记得有人提到过更大的系统,但实际上我认为如果不宽泛地定义可接受的性能,你无法使用6.24扩展到一百万个事实。

使用6.3版本,我认为你可以构建一个至少有几千条规则和几十万个事实的系统,但同样,最好的方法是程序化地生成规则和事实,并测试性能。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注