【软考架构】架构风格:针对规则系统体系架构风格,举一个经典案例

基于规则的系统(见图7-16)包括规则集、规则解释器、规则/数据选择器及工作内存

好的,针对你提供的"规则系统体系结构风格"图示,一个最经典和常被引用的案例是专家系统

经典案例:MYCIN 医疗诊断专家系统

MYCIN 是20世纪70年代在斯坦福大学开发的用于诊断细菌感染性疾病(如脑膜炎和菌血症)并推荐抗生素治疗的专家系统。它完美地体现了规则系统架构的核心思想。

工作原理与规则系统架构的对应关系:

  1. 工作内存

    • 存储当前的事实集和推理过程中的临时数据。
    • 在MYCIN中,这包括:
      • 患者数据:年龄、性别、体重、过敏史等。
      • 临床症状:发烧、头痛、白细胞计数等。
      • 实验室观测数据:革兰氏染色结果、培养物来源(如血液、脑脊液)等。
      • 推理过程中产生的中间事实:例如,系统推断出的"可能病原体清单"。
  2. 规则集

    • 包含领域专家的知识,以 "IF-THEN" 规则的形式存储。
    • 在MYCIN中,规则库约有400-500条规则。例如:
      • 规则示例
        IF (1)革兰氏染色是阴性
        AND (2)细菌形态是杆状
        AND (3)细菌需氧性为需氧
        THEN 该细菌属于肠杆菌科(可信度0.8)
  3. 规则解释器(推理引擎)

    • 这是系统的"大脑",负责控制整个推理过程。它持续执行 "匹配-选择-执行"循环
    • 匹配:扫描规则集,找出所有前提条件(IF部分)被工作内存中当前事实满足的规则。这些规则被放入"冲突集"。
    • 选择 :根据某种策略(如优先级、特殊性、最近使用等)从冲突集中选择一条规则来执行。在图示中,这对应着 "被选择的规则"
    • 执行(触发) :执行被选中规则的THEN部分。这个动作会:
      • 更新工作内存:添加新的事实或修改现有事实(例如,将"大肠杆菌"添加到可能病原体列表中)。
      • 可能触发新的规则,因为工作内存的更新改变了规则匹配的条件。

工作流程简述(以MYCIN诊断为例):

  1. 输入 :医生将患者的临床症状和实验室初步结果输入系统,这些数据被存入工作内存(事实集)。
  2. 推理循环开始
    • 规则解释器 扫描规则集,寻找其"IF"部分与工作内存中患者数据相匹配的规则。
    • 选择一条高优先级的规则,例如,一条关于识别细菌类型的规则。
    • 该规则被执行 ,其结论(例如,"病原体可能是大肠杆菌")作为一个新的事实被添加到工作内存中。
  3. 链式反应
    • 这个新事实的加入,使得另一些规则的IF条件得到满足(例如,关于"如何治疗大肠杆菌感染"的规则)。
    • 规则解释器再次进行匹配-选择-执行循环,激活新的规则。
  4. 输出 :这个过程持续进行,直到没有新规则被激活,或者系统得出了最终结论。最终,系统会输出其诊断结果和抗生素用药建议(包括药物名称、剂量和用药依据)。

总结:

MYCIN是规则系统架构的典范。它将专家的知识编码成独立的规则(规则集),通过一个中央推理引擎(规则解释器)对输入的事实(工作内存)进行逻辑推理,最终得出结论。这种架构的优势在于知识表示清晰 (规则易于理解和修改)和推理过程与知识分离,使得系统能够通过增加或修改规则来不断提升性能。

相关推荐
CoderYanger5 小时前
动态规划算法-简单多状态dp问题:15.买卖股票的最佳时机含冷冻期
开发语言·算法·leetcode·动态规划·1024程序员节
CoderYanger6 小时前
递归、搜索与回溯-FloodFill:33.太平洋大西洋水流问题
java·算法·leetcode·1024程序员节
CoderYanger9 小时前
动态规划算法-斐波那契数列模型:2.三步问题
开发语言·算法·leetcode·面试·职场和发展·动态规划·1024程序员节
CoderYanger9 小时前
动态规划算法-简单多状态dp问题:16.买卖股票的最佳时机含手续费
开发语言·算法·leetcode·动态规划·1024程序员节
CoderYanger10 小时前
C.滑动窗口-求子数组个数-越短越合法——3258. 统计满足 K 约束的子字符串数量 I
java·开发语言·算法·leetcode·1024程序员节
CoderYanger11 小时前
动态规划算法-路径问题:9.最小路径和
开发语言·算法·leetcode·动态规划·1024程序员节
CoderYanger11 小时前
动态规划算法-路径问题:7.礼物的最大价值
开发语言·算法·leetcode·动态规划·1024程序员节
CoderYanger12 小时前
动态规划算法-简单多状态dp问题:12.打家劫舍Ⅱ
开发语言·算法·leetcode·职场和发展·动态规划·1024程序员节
金融小师妹13 小时前
机器学习驱动分析:ADP就业数据异常波动,AI模型预测12月降息概率达89%
大数据·人工智能·深度学习·编辑器·1024程序员节
CoderYanger13 小时前
动态规划算法-简单多状态dp问题:18.买卖股票的最佳时机Ⅳ
开发语言·算法·leetcode·动态规划·1024程序员节