网站空间支持功能,专做皮具的网站,湖南网站建设工作室,开发一个小程序大约需要多少钱rete我只是对我的新算法做最后的修改。 它融合了Leaps #xff0c; 面向集合的Match和Left / Right取消链接的概念 #xff0c;以及我自己的一些想法。 该代码已提交#xff0c;但我正在积累工作并编写更多测试。 我将在一周左右的时间内写一个完整的博客#xff0c;详细介… 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 :) 参考 DroolsjBPM博客上来自JCG合作伙伴 Geoffrey De-Smet的《超越Rete的生活– RIP Rete 2013》 。 翻译自: https://www.javacodegeeks.com/2013/04/life-beyond-rete-r-i-p-rete-2013.htmlrete