标签: clips

Datalog vs CLIPS vs Prolog

和许多程序员一样,我在大学里学过Prolog,但只是很少.我知道Prolog和Datalog密切相关,但Datalog更简单吗?另外,我相信我读到Datalog不依赖于逻辑子句的排序,但我不确定为什么这是优点.据说CLIPS完全不同,但对我来说理解太微妙了.有人可以提供其他语言的一般语言亮点吗?

prolog logic-programming clips datalog

25
推荐指数
2
解决办法
1万
查看次数

剪辑 - 小例行程序

我有10个观察环境的传感器.如果正常则传感器为1,否则传感器为0.我需要创建一个功能,如果至少有3个传感器在0上,则会向终端打印出警告信息,并且消息警告只显示一次.我需要在剪辑中做.

谢谢.

   (deffacts listaSenzor
    (sensor L1 0)
    (sensor L2 0) 
    (sensor L3 1)
    (sensor L4 1)
    (sensor L5 1)
    (sensor L6 1)
    (sensor L7 0)
    (sensor L8 1)
    (sensor L9 0)
    )
    (defrule rr
        (sensor ?a  0 )
        (sensor ?b  0 )
        (sensor ?c  0 )
        =>
        printout t ?a ?b ?c "==>WARNING" crlf)
        )
Run Code Online (Sandbox Code Playgroud)

clips

7
推荐指数
1
解决办法
454
查看次数

剪辑中的模糊事实

我制作了一个模糊的模板,代表学生在某个领域的知识.问题是,在声明学生Johnlow,他也将被宣布为med是因为低的学生也30和40之间的MED值.

我怎么能宣布学生是low,而不是med

请注意,我知道我可以做类似的事情(student (name John) (knowledge (20 0) (21 1) (22 0))),但如果我想使用模糊值声明他怎么办?

(deftemplate fz-knowledge
0 100
( (low (20 1) (40 0))
  (med (30 0) (50 1) (70 0))
  (high (60 0) (80 1))
))


(deftemplate student
(slot name)
(slot knowledge (type FUZZY-VALUE fz-knowledge))
)

(deffacts students
(student (name John) (knowledge low) )
)
Run Code Online (Sandbox Code Playgroud)

fuzzy-logic clips

7
推荐指数
1
解决办法
312
查看次数

如何使用 PyClips 激活规则来调用 python 函数

我正在试验PyClips,我想将其与 Python 紧密集成,以便当激活规则时,它会调用 python 函数。

\n\n

这是我到目前为止所拥有的:

\n\n
import clips\n\ndef addf(a, b):\n    return a + b\n\nclips.RegisterPythonFunction(addf)\n\nclips.Build("""\n(defrule duck\n  (animal-is duck)\n  =>\n  (assert (sound-is quack))\n  (printout t "it\xe2\x80\x99s a duck" crlf))\n  (python-call addf 40 2 )\n""")\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,当我断言“动物是鸭子”这一事实时,我的 python 函数没有被调用:

\n\n
>>> clips.Assert("(animal-is duck)")\n<Fact \'f-0\': fact object at 0x7fe4cb323720>\n>>> clips.Run()\n0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我究竟做错了什么?

\n

python expert-system clips pyclips

5
推荐指数
1
解决办法
1641
查看次数

CLIPS 以及与 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++ 代码中)调用它。

c++ rule-engine clips

5
推荐指数
1
解决办法
4588
查看次数

如何在Linux环境中使用CLIPS基于规则的引擎

我是计算机科学的新手。我的项目需要使用基于 CLIPS 规则的引擎,它在 RHEL 盒子中运行。查看剪辑的下载链接(http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/),没有可用的 Linux 软件包。我想知道这是否意味着我需要从源文件中构建它才能在 RHEL 中使用它?

提前致谢。

rhel clips

5
推荐指数
1
解决办法
7769
查看次数

CLIPS从文件加载并运行程序

我正在使用CLIPS(http://clipsrules.sourceforge.net/)进行大学项目,但我不能直接从文件中运行程序,在这种情况下我不想使用提示插入FACTS和RULES.

现在我正在这样做.

  1. 我打开CLIPS ... CLIPS>出现在提示符下
  2. 加载文件(加载"FILE_PATH")
  3. 插入了所有FACTS,规则和defFacts
  4. 键入(运行)以使程序运行并应用规则

clips

5
推荐指数
1
解决办法
1万
查看次数

规则引擎:最适合嵌入式系统

我一直在研究规则引擎,这些规则引擎更适合在嵌入式系统上运行。系统将从传感器收集信息,并根据该信息进行特定的C / C ++调用。一个例子是:

IF RainSensor.value > RainSensor.threshold 
THEN call( GarageWindow::close())
Run Code Online (Sandbox Code Playgroud)

作为GarageWindow的C ++类,位于链接到规则引擎库的二进制文件中。

我不能对上述嵌入式系统的功能做出任何假设。要求是:

  • 最小的占地面积。
  • 随身携带
  • 能够进行函数调用(从其RHS进行C / C ++调用)。
  • 应该在运行时接受新规则。

我需要根据其功能(在以后定义)中给出其他选择,这些假设是:

1)嵌入式系统不支持任何内容(不支持JVM,不支持python等):

CLIPS作为C库或clipsmm作为C ++库。两者均可用于商业应用(clipsmm的GPL)。

优点:开源。很好的测试/记录。可移植,可在低内存占用情况下运行。可以从其RHS部分调用C或C ++函数。规则引擎很可能需要与C或C ++软件进行交互。

缺点:它不是线程安全的。它仅支持正向链接。

2)系统支持python:

PyClips:

到CLIPS的Python接口。功能保持与以前的情况相同。仅当需要在RHS部分中进行python调用时,使用此选项才有好处。我错过任何优点/缺点吗?

3)系统支持JVM:

杰西

优点:与Java对象的良好集成。类似于CLIPS的脚本语言。向前和向后链接。自动侦听Java对象以修改插槽。

缺点:许可。只能在编译时定义新类。

流口水

优点:开源。记录下来。Java集成。向前和向后链接。

缺点:它更适合在网络上工作(这是我的印象)。

在嵌入式环境中,Drools vs Jess有什么优势?

两者都只能在编译时添加新类。CLIPS可以在运行时。另一方面,如果更新剪辑实例的C ++代码很旧,则直接在CLIPS中创建的任何新类都不会与调用C ++代码中的任何其他类匹配。因此,重新编译Java选项的弊端并非如此。

还有其他我完全缺少的适用于嵌入式系统的引擎吗?

c++ rule-engine drools clips jess

5
推荐指数
0
解决办法
2143
查看次数

Prolog / ASP(Clingo)到CLIPS转换器

有没有简单的方法可以将Prolog / ASP代码转换为CLIPS?

像这样的东西,但是使用CLIPS而不是Prover9:https : //github.com/potassco/anthem/tree/master/examples

logic prolog clips answer-set-programming clingo

5
推荐指数
0
解决办法
106
查看次数

CLIPS LHS binding variables

I'm trying to write a CLIPS program which use the Iterative Deepening algorithm to solve a planning problem. For this same reason I would like to keep a low branching factor.

In the following code ?s is the variable which represent the level of the tree; I would like to use a single rule to make different checks. This is what I tried to do:

(defrule EXPAND::action
(declare (salience ?*load*))
(or
    (and ?f1_a <- (status ?s transport ?c1&:(> ?c1 0) …
Run Code Online (Sandbox Code Playgroud)

planning iterative-deepening clips

5
推荐指数
1
解决办法
308
查看次数