本人初次了解,欢迎指正
1.rete算法
1.规则编译:指根据规则集生成推理网络的过程
2.运行执行:指将数据送入推理网络进行筛选的过程。
2.算法详解
举个栗子:
rule "规则:账户余额小于100的北苑路姓张的学生"
when
$account:Account(balance<100,type=Account.Type.学生)
$customer:Customer(accounts contains $account)
$addr:Addr(street="北苑路",customers contains $customer)
then
System.out.println("账户余额小于100的北苑路姓张的学生");
end
2.1 RETE网络的构建
第一步:先创建根节点
第二步:加入一个规则
第三步:重复第二步,直到所有规则处理完毕
得到如下网络
2.1 数据送入RETE网络进行筛选
fact--1 | fact--2 |
balance<100,type=学生,name="zhang",add="北苑路" | balance<100,type=学生,name="wang",add="北苑路" |
进入第一条规则:留下fact-1,fact-2 ,存入内存中
进入第二条规则:留下fact-1,存入内存中
进入第三条规则:留下fact-1,fact-2,存入内存中
最后 留下了fact-1,那我只有fact-1符合,打印结果
参考: