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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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