rete_Rete之外的生活– RIP Rete 2013 :)

rete

我只是对我的新算法做最后的修改。 它融合了Leaps , 面向集合的Match和Left / Right取消链接的概念 ,以及我自己的一些想法。 该代码已提交,但我正在积累工作并编写更多测试。 我将在一周左右的时间内写一个完整的博客,详细介绍它,并希望为人们提供一个alpha版本。 该算法解决了Rete的贪婪和浪费性质。 如果我们使用GWT进行JS移植,这将使其适合于更受限的环境,例如移动设备或浏览器。 此外,它在设计时考虑了多核的使用-尽管我还没有实现。 对于那些了解术语的人,这里是我到目前为止所做的要点列表。

规则解除连结

  • 使用细分来保留共享。 位掩码用于正确的输入和段,以进行有效检查。
  • 当所有正确的输入都设置了位时,Segment设置了位。
  • 当每个段都设置了位时,将链接一个规则。
  • 在一条规则都完全链接到议程中之前,不会进行beta测试(请参阅惰性规则评估)
  • 当任何正确的输入没有数据时,可以取消链接的规则
    • 将保留所有完整和部分联接数据。
  • 我怀疑我们可以使用弧度一致性来进一步延迟设置的时间,而不是简单地存在正确的输入

懒惰规则评估

  • 链接时不会评估Rule的beta网络。 而是将其添加到优先级队列中,仅当它弹出时,我们才评估其Beta网络

面向集合的传播

  • 为正确的输入暂存所有插入,更新和删除操作,直到评估规则为止。
  • Beta网络评估从根本开始
    • 所有插入/更新/删除操作将一起处理,从而导致一组元组被传播到下一个节点
  • 确保课程粒度节点评估,是多核调度的理想选择。
  • 单次传播而不是典型的Rete,深度搜索会影响网络。
  • 请注意,我们还没有进行面向集合的匹配,这会折叠节点中的匹配空间。
    • 当我们借用集合传播概念时,面向集合的匹配的碎片整理过程需要更多考虑,因为它有缺点。

就地修改/差异更新

  • 修改是真实的,而不是撤消+断言
  • 允许补偿“撤消”操作,因为我们知道真正删除了什么,更新了什么。
  • 保留对象,以避免GC命中。

物业React

  • 模式可以侦听并对特定的属性更改做出React
    • 将其视为属性更改侦听器,而不是当前类更改侦听器

基于树的图

  • 撤回只需要迭代图
  • 允许有效的“就地修改”

子网支持

  • 不存在,积累可以支持的嵌套组和模式
  • 作为单程网络评估的一部分得到支持
    • 我们的元组集到达左输入,然后递归地评估subetnworks。

虽然还不完善,但我可以想到以下一些TODO项目,以提出近期和长期的想法:

更有效的子网

  • 新的设计允许子网内更有效的执行,但是我们还没有利用这一点。

GC加盟

  • 如果未使用联接,则允许它们在一段时间后进行GC处理,但还必须在不使规则执行顺序无效的情况下支持重新创建(即,如果已触发,则不能再次触发该规则)

不同的网络拓扑

  • Rete网络始终从左到右连接,这并不总是有效的。 Treat和Gator网络着眼于不同的拓扑如何减少加入尝试的次数,它还可以改善与我们新的基于分段的网络的共享。

多核工作

  • 该设计现在已经基于队列,并且支持粗粒度的工作单元。 现在,我们需要开始创建线程模型,并更好地隔离和分离alpha网络传播过程。 这涉及重构我们现有的锁定模型。
  • 需要对重叠规则进行有效测试-即一个规则与另一条规则共享段。 这将使我们能够评估规则,而无需同步点。

智能链接

  • 当正确的输入接收到单个事实时,通过设置位完成链接。 弧度一致性可用于进一步延迟此链接过程,仅在实现弧度一致性时才在规则段以及规则中进行链接。

MVCC和交易

  • 传播模型应支持多版本并行控制。 这对于获得更好的多核支持是必不可少的,它将使事务支持成为可能。
RIP
RETE 2013 :)

参考: Drools&jBPM博客上来自JCG合作伙伴 Geoffrey De-Smet的《超越Rete的生活– RIP Rete 2013:》 。

翻译自: https://www.javacodegeeks.com/2013/04/life-beyond-rete-r-i-p-rete-2013.html

rete

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

25q64存储多个数据_一篇文章看懂,存储虚拟化在不同用例中的实践与优势

存储虚拟化是一种对物理存储资源进行抽象的技术,使其看起来像是一个集中的资源。虚拟化掩盖了管理内存、网络、服务器和存储中资源的复杂性。存储虚拟化运行在多个存储设备上,使它们看起来就像一个单一的存储池。这些池化的存储设备可以来自不同的供应商…

android代码画出波浪球,Android绘制波浪曲线,效果很赞的。

github地址:https://github.com/sddyljsx/Android-SurfView-WaveViewpackage neal.canvas;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import and…

Java命令行界面(第14部分):google-options

google-options的GitHub页面指出google-options是“来自Google(java)的人们的命令行参数解析库。” 该页面继续说:“这是Bazel Project中的命令行参数解析器。 com.google.devtools.common.options程序包已拆分为一个单独的jar,用…

python自动化工具哪个好用_10款好用的自动化测试工具推荐

当我们功能测试干的时间比较久了,或者想要学习更多的技术,提升自己的时候,基本上第一时间就会想到的是自动化测试。而在自动化测试领域,自动化工具的核心地位毋庸置疑,下面为大家推荐10款常见常用的自动化测试工具:1、SeleniumWEB自动化测试S…

android 输入法文本选择功能,Android的文本和输入---创建输入法(一)

输入法编辑器(IME)是让用户输入文本的控件。Android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,用户就可以从系统的设置中选择他们想要使用的IME,并且这个设…

python基础list_python基础操作---list

1 #coding:utf-82 list1 [physics, chemistry, 1997, 2000];3 list2 [1, 2, 3, 4, 5 ];4 list3 ["a", "b", "c", "d"];56 #切片功能跟str一样7 print "list1[0]: ", list1[0]8 print "list2[1:5]: ", list2[1:…

华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗

[分享交流]mate40Pro和40RS能用上鸿蒙系统吗8886电梯直达huafen210861086新学乍练发表于 2020-12-18 12:30:08来自:HUAWEI Mate 40 Pro最新回复 2020-12-19 09:50:21如题好多人都说不能用上鸿蒙系统林泽徐独步江湖发表于 2020-12-18 12:30:52来自:HUAWEI…

在JShell中尝试Java9 HTTP客户端和Process API

这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索。 在这里,我们用在Java9 HTTP / 2客户端和进程API试验JShell HTTP / 2客户端 HTTP / 2客户端是Java9中的孵化器项目。 这意味着该API尚未最终确定,因此在将来的版本中仍有一定的更改范…

python怎么读取pdf文件_Python解析并读取PDF文件内容的方法

本文实例讲述了Python解析并读取PDF文件内容的方法。分享给大家供大家参考,具体如下:一、问题描述利用python,去读取pdf文本内容。二、效果三、运行环境python2.7四、需要安装的库pip install pdfminer五、实现源代码代码1(win64)# codingutf…

android记事本添加图片功能,安卓手机上有什么便签app既可以写日记又可以添加照片?...

原标题:安卓手机上有什么便签app既可以写日记又可以添加照片?当前,有很多人一直保持着写日记的习惯,因为这样可以及时记录自己的成长轨迹,使得自己可以追寻到时光的记忆,但是我们记录日记的工具&#xff0c…

python每行输出14个数_python – 计算pandas中每行的一些值的列数

需要更改isnull到notnull:#if first columns is not index, set itdata data.set_index(Site code)data[Count] data.notnull().sum(axis1)data data.set_index(Site code)data[Count] data.count(axis1)print (data)Col1 Col2 Col3 CountSite codeA5252 24.0 5…

Java命令行界面(第20部分):JSAP

JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了几个解析器,所有解析器都处理了开关,但是在解析返回…

小米平板4android软件兼容吗,小米平板4有NFC功能吗 小米平板4支持NFC吗

小米平板4有NFC吗?小米平板4终于在诸多期待之下发布了,总的来说,小米平板4是一款性价比非常高的产品。所以没有带来太多惊喜的地方,但整体表现还是不错的。可以说是目前最便宜的骁龙660智能产品,性能中端。加上小米MIU…

监视器java_Java监视器绑定的超人

监视器java这是超人生活中的黑暗时期。 乔尔艾尔(Jor-El)希望他继续航行,为他的最终命运做好准备。 然而,地球面临着世界末日,正义联盟需要他们的钢铁侠行动来拯救世界。 但是,由于我们只有一个超人&#x…

坚果pro2s android 8,锤子坚果Pro2S 安卓8.1 稳定版 超级流畅 火力全开 智能调频 省电稳定 优化简约...

、该ROM本人已经测试通过,如因操作不当造成的后果,本人以及论坛一概不承担任何责任;2、刷机前请保证电池有60%以上的电量,并保证刷机过程中手机及电脑无任何异常;3、刷机有风险,第一次刷机者&am…

代码分析工具python_Python代码分析工具:PyChecker、Pylint

1 概述PyChecker是Python代码的静态分析工具,它能够帮助查找Python代码的bug,而且能够对代码的复杂度和格式等提出警告。PyChecker可以工作在多种方式之下。首先,PyChecker会导入所检查文件中包含的模块,检查导入是否正确&#xf…

flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答

RxJava 2.x中共有三个无缝相似的运算符&#xff1a; flatMap() &#xff0c; concatMap()和concatMapEager() 。 它们都接受相同的参数-从原始流的单个项目到任意类型的&#xff08;子&#xff09;流的函数。 换句话说&#xff0c;如果您有Flowable<T>则可以为任意R类型提…

android的padding属性,以编程方式获取android:padding属性

从一个角度来看&#xff0c;如何以编程方式获取android&#xff1a;padding属性的值&#xff1f; 我目前正在使用&#xff1a;private static final String ANDROID_NAMESPACE "http://schemas.android.com/apk/res/android"; private static final String ATTRIBUT…

Java命令行界面(第25部分):JCommando

JCommando 网站 上将JCommando描述为“命令行参数的Java参数解析器”。 JCommando读取XML配置以生成一个Java类&#xff0c;该类处理Java应用程序中的解析。 在提供XML配置的 Java命令行解析库的本系列文章中&#xff0c;以前涵盖的唯一基于Java的库是JSAP &#xff0c;但这是该…

xss 全编码两次_XSS进阶

原标题&#xff1a;XSS进阶1、XSS常用语句及编码绕过XSS常用的测试语句有&#xff1a;●<>alert(1)>●●●常见的XSS的绕过编码有JS编码、HTML实体编码和URL编码。(1)JS编码JS提供了四种字符编码的策略&#xff0c;如下所示。●三个八进制数字&#xff0c;如果个数不够…