algorithm - 冲突解决策略 : What's the difference between size ordering/data ordering/least recently used rule?

标签 algorithm artificial-intelligence expert-system knowledge-management

大小排序/数据排序/最近最少使用规则之间有什么区别?

我已经做了很多研究,大多数书上都说:

数据排序:将所有可能的断言排列在一个长的优先列表中。使用具有匹配列表中最高优先级断言的条件模式的触发规则。

大小排序:使用具有最严格要求的触发规则,其中最严格意味着最长的条件列表。

最近最少使用规则(Recency Ordering):使用最近最少使用规则。

但是,所有这些解释对我来说都太抽象了,我不能很好地理解它们。

有人可以帮我用下面的案例来解释这三种策略吗? (随意使用自己的案例)

  1. 快速处理投诉的系统。当无法获得真正的答案时,这涉及到一个通用借口库。
  2. 一个系统,用于检测当前和潜在客户并将他们的电话转给适当的经理。
  3. 处理投诉的同情系统。该系统的目标是让自动语音与来电者进行对话,并表现出对投诉的了解和关注。系统希望来电者在结束对话时感到满意,因为投诉已被听到并且公司正在采取适当的行动。系统将具有不同数量的信息,这取决于调用者愿意对机器说什么。系统在收集大量信息时使用特定规则,在不收集大量信息时使用通用规则。

最佳答案

要了解什么是冲突解决策略,让我们模拟两个规则之间存在冲突的情况。我将介绍第一个和第二个提供的示例,对于规则,我将使用 CLIPS语言。

第一条规则,快速响应投诉。如果我们没有关于如何处理投诉的任何进一步信息,这是理想的选择。

如果将投诉的客户分配给经理并将投诉转发给经理,则第二条规则将激活。

(defrule generic-excuse
  ; Provide a generic excuse to complaining customers
  ?complaint <- (complaint (customer ?customer))
  =>
  (respond-to-customer ?customer "We are sorry for the inconvenience.")
  (retract ?complaint))

(defrule forward-complaint-to-manager
  ; Forward a complaint to the assigned manager
  ?complaint <- (complaint (customer ?customer))
  ?manager <- (manager (assigned-customers $?customers))  ; managers have a list of assigned customers
  (test (member$ ?customer ?customers))                   ; test if the customer among the ones assigned to the manager
  =>
  (forward-to-manager ?manager ?complaint)
  (retract ?complaint))

这两条规则似乎很方便地涵盖了这两种情况。一旦投诉本身得到管理,这两条规则就会从引擎的工作内存中删除(收回)投诉。

然而,如果他们都满足开火的所有条件,他们就会相互冲突。理想情况下,如果给定客户分配了经理,则应将投诉转发给他/她。然而,在这种情况下,第一条规则可能会接管,客户将收到一般性的道歉,而不是被重定向到经理。

通常,规则开发者通过显着性机制来控制规则的执行顺序。如果规则看起来具有相同的显着性,冲突解决方案将接管并决定规则将以何种顺序触发。

您提到的第一个解决策略(数据排序)表明将根据断言事实的顺序进行优先级排序。

CLIPS 中的第二种策略(大小排序)称为复杂性策略。它优先考虑具有更多约束的规则。在上面的示例中,这是应采用的正确策略,因为经理规则更具体,因此也更复杂。如果您构建规则库以便更具体的规则应优先于通用规则,那么这就是您选择的策略。

第三种策略很容易理解。最近触发最少的规则将优先考虑。

总而言之,规则冲突在专家系统中极为常见。解决策略会影响规则库的增长方式及其维护成本的增加方式。在设计之初做出明智的选择非常重要,因为以后更改它可能会带来很多不愉快的重构。

您可以在以下gist 中查看示例程序的完整副本.

关于algorithm - 冲突解决策略 : What's the difference between size ordering/data ordering/least recently used rule?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610517/

相关文章:

java - Guava 中的 IntervalTree

algorithm - 使用哪种多标准排序算法?

c# - 具有 6 个特征的人工神经网络训练

neural-network - 如何防止我的程序陷入局部最大值(前馈人工神经网络和遗传算法)

computer-science - 规则引擎与专家系统

python - 超出分区列表问题的时间限制

c++ - shift_right() 在 C++20 中如何实现?

machine-learning - 机器学习(无监督方法)

CLIPS LHS 匹配多槽

python - 如何向用户显示问题并使用 "if" "else"语句专家系统 django 进行比较?