我正在通过将CLIPS 6.31嵌入到处理中等规模的数据流并要求几乎实时的C ++应用程序中来构建专家系统(即,总分析时间不应超过40毫秒) 。到目前为止,我将430个事实反馈到了推理引擎的“入口点”(知识库由8条规则组成,其中大多数规则在每次迭代中都触发,通过EnvRefresh(...)
实现)在一个循环中导致响应时间在600到700毫秒之间振荡,这比所需的时间大得多。有什么方法可以加快推理速度吗?如果实时响应很重要,规则模式可以有多“沉重”? CLIPS是否完全适合于这样的实时应用,还是应将其替换为CLIPS / R2或类似的东西?
仅通过代码的一般描述就很难分析性能问题。这是有关堆栈溢出的两个问题,这些问题说明了可以重写以提高性能的规则:
How to optimize pattern matching between different templated facts in CLIPS
您还可以启用分析功能来编译C ++程序,以了解在哪里花费时间。在正常执行过程中使用refresh命令会引起一些危险信号。
我听说,CLIPS / R2不再可用,部分原因是CLIPS 6.3的性能有所提高。