6

我正在寻找 C 或 Python 中的规则引擎,但如果您知道用另一种语言实现的规则引擎,我会很高兴知道它。

该引擎将用作使房屋自动化的方式,例如当有人离开房间时关灯等。因此,那里没有“办公室”规则(也就是您在 Excel 等中是否有规则)。

我研究了 Java 中的 Jess 和 Drools 并且做得很完美。我想知道其他人,并且可能使用比 Java 更少的内存。我听说过 Python 中的 RuleCore,但实际上找不到任何文档(SourceForge 提供 1.0 版,但看起来他们正在销售 2.0 版)。

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

4

10 回答 10

7

在 Python 中搜索基于 RETE 的规则引擎时,可能会使用PykePyCLIPS 。

PS:我对 S.Lott 关于 Pyke 的回答发表了评论。根据他的建议,我已经发布了一个单独的答案,也让其他读者很容易知道,如果他们正在搜索一个,这个答案中提到的规则引擎可能是一个可能的选择。

于 2009-12-18T17:03:16.260 回答
2

您可以按照已经建议的方式查看CLIPS,或者,如果您想付钱或需要它Rete2。我过去在 Unix 上使用过 CLIPS,并成功地将其嵌入到其他应用程序中。

希望这可以帮助。

于 2009-12-18T11:44:50.523 回答
1

ruleby是用 ruby​​ 编写的规则引擎。它是 ruby​​hoedown 2008 的演讲主题:ruleby-the-rule-engine-for-ruby

于 2009-12-17T23:42:07.913 回答
1

Pychinko 已经存在了一段时间。我从未在生产中使用过它,但不久前就可能的生产应用进行了调查。看起来它具有相当不错的功能和体面的用户社区。

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

于 2009-12-17T23:44:20.827 回答
0

实际上,Python一个规则引擎。

“该引擎将用作使房屋自动化的方式,例如当有人离开房间时关灯等。”

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

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

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

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

于 2009-12-18T00:44:44.130 回答
0

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

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

于 2009-12-20T19:58:01.607 回答
0

这里列出了 13 个 Java 开源规则引擎,Drools 可能是其中最好的。http://java-sources.org/open-source/rule-engines

于 2009-12-20T20:05:45.923 回答
0

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

于 2010-01-26T09:47:46.963 回答
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")

它是自动化房屋的完美工具,因为您可以 pip 安装现有库以在脚本中使用。Nest、SmartThings、Sense 等。这只是Python!

要更全面地解释为什么 Python 本身不是规则引擎,请参阅这篇文章。正因为 Python 本身可以执行规则,所以你手头没有规则引擎。事实上,这是一个巨大的架构转变。

于 2014-09-18T23:49:16.013 回答
0

我用python编写了一个简单的规则引擎。您可以将规则存储在 json 或 yaml 字符串中,并使用此规则引擎将规则与上下文匹配。

https://github.com/tclh123/rule

于 2019-06-14T13:29:44.517 回答