2009-12-17 214 views
7

我正在寻找C或Python中的规则引擎,但是如果您知道以另一种语言实现的规则引擎,我很乐意了解它。C或Python中的规则引擎

该发动机将被用作方法来自动化房子,像关灯的动作,当有人离开房间等,所以没有“办公室”的规则有(又名你在Excel或这样的规则)。

我已经看过在Java和做一个完美的工作的杰西和Drools。我想知道其他人,并可能使用比Java更少的内存。 我听说过Python中的RuleCore,但是无法真正找到任何文档(SourceForge提供1.0版本,但它看起来像是在销售2.0版本)。

编辑:通过规则引擎(推理引擎),我的意思是实施RETE或同等学历。

+0

http://stackoverflow.com/questions/467738/implementing-a-rules-engine-in-python http://www.google.com/search?client=safari&rls=zh-CN&q=python+rule+引擎&ie = UTF-8&oe = UTF-8 – 2009-12-17 23:42:00

+0

谢谢,我已经看到了这个问题,我并不想要实现一个新的规则引擎。但我没有看到第一次参考CLIPS :) – Yanik 2009-12-17 23:51:55

回答

5

在Python中搜索基于RETE的规则引擎时,PykePyCLIPS可能是您想要使用的规则引擎。 PS:我已经给S.Lott的关于Pyke的回答发表了评论。根据他的建议,我发布了一个单独的答案,并且让其他读者很容易知道,如果这个答案中提到的规则引擎正在寻找一个,它可能是一个可能的选择。

+0

PyCLIPS它是。把我的Jess规则翻译成CLIPS真的很容易。 – Yanik 2009-12-21 11:49:05

1

Pychinko已经有一段时间了。我从未在生产中使用过它,但调查了它可能的生产应用。它看起来有很好的功能和一个体面的用户社区。

http://www.mindswap.org/~katz/pychinko/

+1

谢谢。你知道社区的任何邮件列表或irc频道吗?它看起来并不像它保持更多.. 你有没有听说过pyCLIPS(我刚刚发现)? – Yanik 2009-12-18 01:03:01

0

在效果上,Python中规则引擎。

“发动机将被用作方法来自动化房子,像关灯的动作,当有人离开房间等等。”

您需要传感器和控制器。你把你的“规则”写成普通的Python对象。

您的主“程序”从您的传感器收集事件并将事件发送到您的控制器。

如果您可以通过普通USB从传感器读取数据,那就更好了。海洋工业使用NMEA 0183和NMEA 2000等几个密切相关的标准来指定从传感器到控制器的总线上的交通量。

你不需要另一种规则语言。你有Python。

+2

我不确定你的意思,但我认为你可以说任何图灵完整的语言实际上是一个规则引擎。 我可能应该提到RETE算法的执行速度比根据每个规则检查事实要快得多。 由于我不是Python专家,我不确定你会如何做到这一点。你有解释它的链接吗? – Yanik 2009-12-18 00:59:03

+0

@Yanik:如果推论是问题空间的一部分,则更新问题以包含此事实。必须规则处理不涉及推理。如果您需要推断,请更新您的问题,请清楚说明。 – 2009-12-18 01:42:31

+1

如果你正在寻找推理你的规则然后看Pyke [http://pyke.sourceforge.net/]将有所帮助 – ardsrk 2009-12-18 07:26:55

2

你可以看看CLIPS作为已经建议,或者如果您要支付的钱或需要它Rete2。我以前在Unix上使用CLIPS并成功将其嵌入到其他应用程序中。

希望这会有所帮助。

0

Rulecore确实是用Python编写的。但这并不重要。您作为用户无论如何都看不到任何这些实现​​细节。

规则纯粹是声明性的,并使用XML进行定义。使用Web服务或JMS或其他协议将XML作为事件发送到ruleCore CEP服务器。

0

我知道ruleCore有一些用Python编写的部分。但API使用XML和ActiveMQ或WebServices,因此它处于更高的抽象级别。

0

Nebri是为家庭自动化和其他软件/机器编写规则的最简单方法。下面是一个例子,以实现光关闭:

class high_temp_shutdown(NebriOS): 
    listens_to == ['shared.pebble_location'] 


    def check(self): 
     # if pebble dongle is out or room, return true 
     return shared.pebble_location > 3 # in meters 

    def action(self): 
     smartthings.lights(2,"off") 

这是对自动化你的房子,因为你可以安装点子现有库在脚本中使用的理想工具。 Nest,SmartThings,Sen.se等。它只是Python!

有关Python为什么不是规则引擎本身的更完整说明,请参见​​。仅仅因为Python本身可以执行规则,你手上没有规则引擎。事实上这是一个巨大的体系结构转变。