繁体   English   中英

CLIPS和与C ++的集成

[英]CLIPS and integration with C++

我正在开发一个相当复杂的规则引擎。 因此,我决定寻求任何GNU规则引擎的帮助,并将其与我的应用程序集成。 我遇到了CLIPS,这是一个很好的规则引擎。

现在,我的应用程序是C ++,我想要一个示例方法(Hello world程序),从中我可以学习如何将.clp规则引擎集成到我的C ++应用程序中。

  1. 我的应用程序是在Linux / AIX / HP和Mingw(用于Windows)上开发的。 我们可以在CLIPS中开发规则引擎并将其集成到所有这些平台上的C ++应用程序中吗? 您能否分享一个有关如何集成的链接。
  2. 进入规则引擎的根本原因是,我已经体验到在我的C / C ++应用程序中“内置”的规则会占用大量内存/ CPU。 我的印象是,通过使用规则引擎,我可以以更优化(更好地利用资源)的方式实现相同的目标。 CLIPS可以帮助我实现这一目标吗?

更新1:

  • 您正在开发哪种应用程序?
    总而言之,我正在开发基于过滤器匹配的计数器。 用户可以增加(NetworkID = XYZ,增加计数= 7),(NetworkID = MNO,增加计数= 934)...等等。现在您获得了NetworkID = X *的查询,那么我需要提供XAA的所有计数。 ..XZZ。 它在多进程,跨不同节点(分布式环境)的多线程中更新。

  • 为什么您内部有专家系统规则,以及什么样的规则?
    现在,我的平台/应用程序是C ++(用户在其中进行递增/递减/查询)。 现在,我想使用规则引擎来帮助我。 用C / C ++代码编写逻辑似乎会浪费更多的资源。

PS:与增量/减量/查询相关的关键代码全部在优化的c代码中。 一些包装器使用C ++代码。 因此,我正在检查可以为我做的规则引擎,可以从我的平台/应用程序(使用C / C ++代码)中调用它。

将CLIPS与C ++集成的最简单方法是使用编译器选项(如果有)将C代码编译为C ++代码。 从《高级编程指南》( http://clipsrules.sourceforge.net/documentation/v624/apg.htm )的1.2节,C ++兼容性中:

现在可以使用ANSI C或C ++编译器来编译CLIPS源代码。 至少,非ANSI C编译器必须支持完整的ANSI样式函数原型和void数据类型才能编译CLIPS。 如果要从C ++程序进行CLIPS API调用,通常通过将CLIPS源文件编译为C ++文件来进行集成更容易。 这消除了在C ++程序中为CLIPS API做出外部“ C”声明的需要。 某些编程环境允许您根据文件扩展名指定是将文件编译为C还是C ++代码。 其他环境允许您明确指定使用哪个编译器而不管扩展名如何(例如,在gcc中,选项“ -x c ++”会将.c文件编译为C ++文件)。 在某些环境中,使用同一编译器来编译C和C ++程序,并且该编译器使用文件扩展名来确定是将文件编译为C还是C ++程序。 在这种情况下,将CLIPS源文件的.c扩展名更改为.cpp通常可以将源代码编译为C ++程序。

(可选)您可以尝试使用clipsmm( http://sourceforge.net/projects/clipsmm/ )之类的东西,它是CLIPS库的C ++接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM