我正在开发一个相当复杂的规则引擎.所以我决定接受任何GNU规则引擎的帮助,并将其与我的应用程序集成.我认为
CLIPS是一个很好的规则引擎.
现在,我的应用程序在C中,我想要一个示例方式(Hello世界类型的程序),我可以从中学习如何将.clp规则引擎集成到我的C应用程序中.
题
>我的应用程序是在Linux / AIX / HP和Mingw(用于Windows)上开发的.我们可以在CLIPS中开发规则引擎并将其集成到所有这些平台上的C应用程序中吗?您能否分享一下如何整合的链接.
>进入规则引擎的根本原因是,我经历过在我的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兼容性:
The CLIPS source code can now be compiled using either an ANSI C or
C++ compiler. Minimally, non-ANSI C compilers must support full ANSI
style function prototypes and the void data type in order to compile
CLIPS. If you want to make CLIPS API calls from a C++ program, it is
usually easier to do the integration by compiling the CLIPS source
files as C++ files. This removes the need to make an extern “C”
declaration in your C++ program for the CLIPS APIs. Some programming
environments allow you to specify the whether a file should be
compiled as C or C++ code based on the file extension. Other
environments allow you to explicitly specify which compiler to use
regardless of the extension (e.g. in gcc the option “-x c++” will
compile .c files as C++ files). In some environments, the same
compiler is used to compile both C and C++ programs and the compiler
uses the file extension to determine whether the file should be
compiled as a C or C++ program. In this situation, changing the .c
extension of the CLIPS source files to .cpp usually allows the source
to be compiled as a C++ program.
您可以尝试使用clipmm(http://sourceforge.net/projects/clipsmm/)之类的东西,它是CLIPS库的C接口.