6个版本

0.1.5 2020年5月11日
0.1.4 2020年4月21日
0.1.2 2020年2月23日

1668算法

GPL-3.0-or-later

350KB
7K SLoC

phreak_engine

License GPL3+ Crates.io doc.rs dependency status

Phreak_engine包包含一个规则引擎,一个使用phreak算法优化的事实匹配程序。

事实匹配算法被用作许多厂商产品底层实现,例如复杂事件处理(CEP)、决策引擎、规划器和BPM工具。

正在进行中

这是一个概念的起点,绝对不稳固。它是对phreak算法的研究,可能在某一天有用。


lib.rs:

Phreak算法是一种基于Rete算法的规则匹配算法,如Robert B. Doorenbos在1995年1月31日发表的论文《大型学习系统的生产匹配》中所述。

该算法用于将事实与一系列规则进行匹配,以查看是否任何组合会触发规则。规则被称为生产,当一组事实与规则匹配时,它被称为激活。

Phreak算法由Drools项目实现。我们不是试图创建一个从Java到Rust的移植,而是根据Drools文档中的思想从头开始构建算法。

我们旨在仅使用安全的Rust代码。

我们试图通过以下概念来实现良好的性能

  • 惰性评估

    最快的代码是你没有执行的代码。

  • 缓存友好评估

    通过分组数据评估,我们试图优化CPU的缓存使用。

  • 最小化数据分配

    分配是缓慢的,因此应避免。我们使用Rust的所有权模型来安全地传递数据,而不是传递副本。

依赖关系

~2.6–3.5MB
~71K SLoC