我正在通过将CLIPS 6.31嵌入到处理中等大小的数据流并需要几乎实时响应的C++应用程序中来构建专家系统(即,总分析时间不应超过40毫秒)。到目前为止,我在一个循环中向推理引擎的“入口点”提供了大约430个事实(知识库由8条规则组成,其中大多数规则在每次迭代中都触发,这是通过EnvRefresh(...)实现的),从而导致响应时间在600到700毫秒之间振荡,这比必要时间大得多。有什么方法可以加快推理速度吗?如果实时响应很重要,规则模式将如何“繁重”? CLIPS是否完全适合于这样的实时应用,还是应将其替换为CLIPS / R2或类似的东西?

最佳答案

仅通过代码的一般描述就很难分析性能问题。以下是有关堆栈溢出的两个问题,说明了可以重写以提高性能的规则:

How to optimize pattern matching between different templated facts in CLIPS

CLIPS huge memory usage

您还可以在启用了概要分析的情况下编译C++程序,以了解花费的时间。在正常执行过程中使用refresh命令会引起一些危险信号。

上次听说,CLIPS / R2不再可用,部分原因是CLIPS 6.3的性能有所提高。

10-06 10:47