如果我在jess中定义了设置规则,是否可以根据规则中LHS上定义的模式找到可能导致冲突的规则集。
(defrule rule1
(模式?x)
=>
(打印输出t"规则1解雇"))
(defrule rule2
(模式?x)
=>
(打印输出t"规则2解雇"))
无论如何找到上面定义的两个规则将来会发生冲突,如果不是在断言所有被激活的规则的事实列表时?
答案 0 :(得分:0)
我不知道你的意思是什么"冲突"。如果有两个规则在相同或几乎相同的情况下触发,那么这就是程序员想要的并且它将起作用;它不是一个冲突"在常识中。虽然,如果结果不符合规格,那只是一个Bug。
查找任何两个非平凡的身份(您的示例 是微不足道的)是一个任务,需要回答问题是否任何一组事实对象实例触发两个规则。这相当于回答了规则A是否定义了一个集合,该集合是规则B定义的集合(反之亦然)。
如果约束很简单,对对应值的巧妙分析可能会提供答案 - 但总的来说,并不是那么简单。约束可以利用任意复杂的函数。