首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

对规则引擎跟专家系统以及rete算法的一点认识

2012-10-15 
对规则引擎和专家系统以及rete算法的一点认识首先,谈一下规则引擎与专家系统的区别,因为网上有很多人将两

对规则引擎和专家系统以及rete算法的一点认识

首先,谈一下规则引擎与专家系统的区别,因为网上有很多人将两者混为一谈了,不过这也只是小弟的一点浅显的认识,请各位大侠拍砖啊

规则系统的目的侧重于将业务逻辑的分离,主张业务逻辑从我们的应用编码中解脱出来,便于我们业务逻辑的修改,从而诞生出来的BRMS系统也是用来管理我们的业务规则的。
专家系统:侧重于人工智能,它是基于大量的事实而进行的推理行为,与规则引擎有很大的区别,专家系统注重知识的管理,而规则引擎侧重于规则的管理,以及规则与fact的匹配。

对rete的一点认识:

rete算法的成功之处在于,当我们构造好rete网之后,把我们的fact存储在working memory中,当wme在规则匹配的过程中发生了变化,需要进行loop来对变化都得规则进行匹配的时候,它可以节省我们的时间,进而达到节约时间的目的。(注:这个功能本来应该是专家系统所具有的,管理大量的知识,进行操作,当一个知识wme发生变化的时候,迅速的做出反应,而不必从头开始做分析,规则引擎正是使用了rete算法的这个优势来构造的。试想一个特殊的情况,假如我们系统中有10000条规则,当我们对一个wme-1进行分析的时候,需要将10000条规则全部匹配一便来分析wme能够触发的规则,然后运行触发规则的action,但是当action对wme有影响的时候,那么我们需要重新来做匹配,可能需要花费很长的时间。当然,我们也可以运用1--10000条规则来逐一的匹配所有的wme,当匹配成功的时候就触发规则,但是带来的结果也是跟上面的分析一样的,首先假设我们已经匹配过999条规则了,都没有匹配合适,但是我们的第1000条规则却匹配成功了,此时我们如何做呢?!我们需要执行第1000条rule的action,但是执行action的结果是对wme产生了影响,结果是我们需要对过去的999条规则做重新匹配,这样我们需要永无止境的做下去。)我想很多人将规则引擎与专家系统混为一谈大都是跟这个rete算法的关系。在这里小弟做一下澄清,请各位大神拍砖。

?

?

1 楼 funnywiser 2010-02-28   非常同意你的观点。
rete并不适合于我们一般应用当中的业务规则处理,因此在处理一般的业务规则,表现的非常牵强,而且性能也成问题.造成理论上非常成功,但是实际应用中发现有非常大的局限性.
原本我们也打算在drools等采用rete算法的基础上,优化其操作界面,来做一个业务规则管理系统.最后发现rete会带来非常大的限制,使得规则引擎只能用于局部非常小的,细分的逻辑.跟最初的设想相去甚大,因此最终我们还是全新的写了规则引擎,以及相应的编辑器。 2 楼 gemantic 2012-05-17   专家系统是一个很大的概念.
规则引擎是一种技术.

规则引擎可以是专家系统的一种实现方式.

热点排行