首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第49章 ReasoningEngine

第49章 ReasoningEngine

Reasoning 是 ICAI 利用已有认知资源形成新结论的过程。

上一章的 RuleEngine 主要负责规则运行,而 ReasoningEngine 的范围更大,它需要把:

Fact
Object
Relation
Rule
Condition
Experience
Memory
Current Context

组织起来,经过解析、匹配、条件计算和结果计算,最终形成:

Conclusion

因此可以把 ReasoningEngine 表示为:

Information / Memory
        ↓
FactResolver
ObjectResolver
RelationResolver
RuleResolver
        ↓
Condition Calculation
        ↓
Result Calculation
        ↓
Conclusion

1. FactResolver

1.1 FactResolver 定义

FactResolver 是 ReasoningEngine 中负责获取、解析、验证和选择事实的组件。

推理不能直接使用未经处理的信息。

例如当前存在:

Battery_A.level = 20
Device_A.state = active

FactResolver 需要把这些事实转换为推理可以使用的结构。

Fact
{
    subject
    predicate
    value
    state
    source
    confidence
}

1.2 FactResolver 的任务

主要包括:

读取事实
↓
识别事实主体
↓
识别事实属性
↓
检查事实状态
↓
检查事实有效性
↓
处理事实冲突
↓
返回可用事实

例如:

Fact_001
Battery_A.level = 20
state = ACTIVE

可以解析为:

subject  = Battery_A
predicate = level
value    = 20
state    = ACTIVE

1.3 FactResolver 与 FactMemory

二者不能混淆:

FactMemory
    = 保存和管理事实

FactResolver
    = 推理时获取和解析事实

即:

FactMemory
      ↓
FactResolver
      ↓
ReasoningEngine

FactResolver 不负责长期保存事实。


2. RuleResolver

2.1 RuleResolver 定义

RuleResolver 负责从 Rule 集合中找到与当前推理目标和当前条件相关的规则

例如:

Goal:
判断 Device_A 是否需要充电

RuleResolver 搜索:

Rule_001
IF Battery.level < 30
AND Device.state = active
THEN Device.state = needs_charge

如果规则与当前目标相关,则进入推理过程。


2.2 RuleResolver 的运行

基本过程:

Reasoning Goal
      ↓
Rule Search
      ↓
Rule Matching
      ↓
Rule Validation
      ↓
Rule Priority
      ↓
Relevant Rules

例如系统存在:

Rule_001 → 电量判断
Rule_002 → 温度判断
Rule_003 → 网络判断
Rule_004 → 位置判断

当前目标:

判断设备是否需要充电

RuleResolver 不需要把所有规则全部送入当前推理,而应该优先取得与:

Battery
Device
Charge
State

相关的规则。


2.3 RuleResolver 与 RuleEngine

二者关系:

RuleResolver
    = 找规则、解析规则

RuleEngine
    = 检查条件并运行规则

因此:

ReasoningEngine
        ↓
RuleResolver
        ↓
Relevant Rules
        ↓
RuleEngine

RuleResolver 解决:

使用哪些规则?

RuleEngine 解决:

这些规则如何运行?


3. ObjectResolver

3.1 ObjectResolver 定义

ObjectResolver 负责确定推理过程中涉及的对象。

例如:

Battery_A
Device_A
Charger_A

对于:

Battery_A.level < 30

ObjectResolver 首先必须确定:

Battery_A 是什么对象?

然后获取:

Object
 ├── Property
 ├── State
 ├── Relation
 └── History

3.2 ObjectResolver 的任务

Object Identifier
       ↓
Object Search
       ↓
Object Validation
       ↓
Property Loading
       ↓
State Loading
       ↓
Relation Loading
       ↓
Resolved Object

例如:

Object_A
{
    id: "Device_A",
    type: "device",
    state: "active",
    temperature: 45
}

ObjectResolver 返回这个完整对象结构。


3.3 对象不是单纯名称

例如:

"深圳"

不能仅仅作为一个字符串处理。

在认知结构中,它可能是:

Object
{
    id: "Shenzhen",
    type: "city",
    properties: {
        country: "China"
    }
}

这样 ReasoningEngine 才能够进一步处理:

Shenzhen
↓
country = China
↓
location relation
↓
condition
↓
conclusion

4. RelationResolver

4.1 RelationResolver 定义

RelationResolver 负责解析对象之间的关系。

基本结构:

Source
   ↓
Relation
   ↓
Target

例如:

Device_A
    ── uses ──>
Charger_A

表示:

Device_A → uses → Charger_A

4.2 RelationResolver 的任务

查找 Source
      ↓
查找 Relation
      ↓
查找 Target
      ↓
验证关系
      ↓
确认关系状态
      ↓
返回 Relation

例如:

Relation_001
{
    source: "Device_A",
    relation: "uses",
    target: "Charger_A",
    state: "ACTIVE"
}

4.3 关系参与推理

关系本身可以成为推理条件。

例如:

Fact:
Device_A uses Charger_A

规则:

IF Device_A uses Charger_A
AND Charger_A.state = available
THEN Device_A.can_charge = true

推理过程中:

FactResolver
    ↓
Device_A uses Charger_A

RelationResolver
    ↓
确认 uses 关系

ObjectResolver
    ↓
读取 Charger_A

FactResolver
    ↓
Charger_A.state = available

最终才能计算整个条件。


5. 条件计算

Condition Calculation 是 ReasoningEngine 的核心过程之一。

它负责将:

Facts
Objects
Relations
Properties
States
Rules

转换成条件结果。


5.1 基本条件

例如:

Battery_A.level < 30

当前:

Battery_A.level = 20

计算:

20 < 30

结果:

TRUE

5.2 多条件计算

例如:

Battery_A.level < 30
AND
Device_A.state = active

分别计算:

Condition_1 = TRUE
Condition_2 = TRUE

然后:

TRUE AND TRUE
= TRUE

5.3 条件状态

ReasoningEngine 不应该只有:

TRUE / FALSE

还应该支持:

TRUE
FALSE
UNKNOWN
CONFLICT

例如:

Battery_A.level = UNKNOWN

则:

Battery_A.level < 30
→ UNKNOWN

不能直接推导:

needs_charge

5.4 条件计算结构

可以表示为:

ConditionResult
{
    condition_id
    input
    operator
    expected
    actual
    result
}

例如:

ConditionResult
{
    condition_id: 1,
    input: "Battery_A.level",
    operator: "<",
    expected: 30,
    actual: 20,
    result: "TRUE"
}

6. 结果计算

条件成立之后,ReasoningEngine 还需要计算规则产生的结果。

例如:

IF
    Battery_A.level < 30
AND
    Device_A.state = active

THEN
    Device_A.state = needs_charge

条件计算:

TRUE AND TRUE
→ TRUE

结果计算:

Device_A.state
    ↓
needs_charge

6.1 结果类型

推理结果可以包括:

CONFIRMED
SUPPORTED
POSSIBLE
UNKNOWN
CONFLICT
REJECTED

例如:

Fact + Rule
→ 明确满足
→ CONFIRMED

如果只有部分条件支持:

→ SUPPORTED

如果存在可能性但证据不足:

→ POSSIBLE

如果没有足够信息:

→ UNKNOWN

如果多个规则产生不同结论:

→ CONFLICT

6.2 结果计算不是直接执行 Action

这一点必须和 RuleEngine 区分。

RuleEngine
    → 执行 Rule Action

ReasoningEngine
    → 计算 Rule / Fact / Relation 产生的推理结果

因此:

Result
≠ Action

例如:

推理结果:
Device_A 可能需要充电

之后 Decision 才可以判断:

是否执行充电行为?

7. Conclusion

7.1 Conclusion 定义

Conclusion 是 ReasoningEngine 根据当前事实、对象、关系、规则、条件和经验计算形成的新认知结论

核心结构:

Known Information
+
Logical Conditions
+
Rules
+
Reasoning Process
↓
Conclusion

7.2 Conclusion 结构

可以定义:

Conclusion
{
    id
    subject
    predicate
    value
    state
    source
    reasoning_chain
    confidence
    created_at
}

例如:

Conclusion
{
    subject: "Device_A",
    predicate: "state",
    value: "needs_charge",
    state: "CONFIRMED"
}

7.3 Reasoning Chain

ICAI 的推理不能只保存最后一个答案,还应该保存推理路径。

例如:

Fact_001
Battery_A.level = 20
        ↓
Condition_001
Battery_A.level < 30
        ↓
TRUE
        ↓
Rule_001
IF Battery.level < 30
THEN Device.state = needs_charge
        ↓
Conclusion
Device_A.state = needs_charge

可以记录为:

ReasoningChain
{
    facts: [
        "Fact_001"
    ],
    conditions: [
        "Condition_001"
    ],
    rules: [
        "Rule_001"
    ],
    conclusion: "Device_A.state = needs_charge"
}

这样系统可以回答一个非常重要的问题:

这个结论是怎么得到的?

这也是 ICAI 可验证推理的重要基础。


8. 完整推理实例

下面建立一个完整的 ReasoningEngine 运行案例。

8.1 当前对象

Device_A
{
    type: "device",
    state: "active"
}

电池:

Battery_A
{
    type: "battery",
    level: 20
}

8.2 当前关系

Relation_001
{
    source: "Device_A",
    relation: "has_battery",
    target: "Battery_A",
    state: "ACTIVE"
}

表示:

Device_A
    │
    └── has_battery
            ↓
       Battery_A

8.3 当前事实

Fact_001
{
    subject: "Battery_A",
    predicate: "level",
    value: 20,
    state: "ACTIVE"
}

以及:

Fact_002
{
    subject: "Device_A",
    predicate: "state",
    value: "active",
    state: "ACTIVE"
}

8.4 当前规则

Rule_001
{
    id: 1001,

    conditions: [
        {
            object: "Battery_A",
            property: "level",
            operator: "<",
            value: 30
        },
        {
            object: "Device_A",
            property: "state",
            operator: "=",
            value: "active"
        }
    ],

    operator: "AND",

    action: {
        object: "Device_A",
        property: "state",
        value: "needs_charge"
    },

    priority: 20,
    state: "ACTIVE"
}

8.5 ReasoningEngine 启动

输入:

Current Context
+
Facts
+
Objects
+
Relations
+
Rules

进入:

ReasoningEngine

8.6 FactResolver

读取:

Battery_A.level = 20
Device_A.state = active

得到:

Fact_001 → ACTIVE
Fact_002 → ACTIVE

事实有效。


8.7 ObjectResolver

解析:

Battery_A
Device_A

得到:

Battery_A.level = 20
Device_A.state = active

8.8 RelationResolver

读取:

Device_A → has_battery → Battery_A

确认:

Device_A
确实拥有
Battery_A

因此对象之间关系成立。


8.9 RuleResolver

查找与当前对象:

Device_A
Battery_A

相关的规则。

找到:

Rule_001

Rule 状态:

ACTIVE

可以参与推理。


8.10 条件计算

第一条件:

Battery_A.level < 30

当前:

20 < 30

得到:

TRUE

第二条件:

Device_A.state = active

当前:

active = active

得到:

TRUE

组合:

TRUE AND TRUE
→ TRUE

8.11 结果计算

规则结果:

Device_A.state = needs_charge

因此形成:

Result
{
    object: "Device_A",
    property: "state",
    value: "needs_charge"
}

8.12 形成 Conclusion

ReasoningEngine 根据:

Fact_001
+
Fact_002
+
Relation_001
+
Rule_001
+
ConditionResult
+
Result

形成:

Conclusion
{
    subject: "Device_A",
    predicate: "state",
    value: "needs_charge",
    state: "CONFIRMED"
}

8.13 推理链

最终保存:

Fact_001
Battery_A.level = 20
        ↓
Fact_002
Device_A.state = active
        ↓
Relation_001
Device_A has_battery Battery_A
        ↓
Rule_001
Battery.level < 30
AND
Device.state = active
        ↓
Condition
TRUE AND TRUE
        ↓
Result
Device_A.state = needs_charge
        ↓
Conclusion
Device_A needs_charge

ReasoningEngine 核心模型

完整模型:

                Current Context
                      │
        ┌─────────────┼─────────────┐
        ↓             ↓             ↓
  FactResolver   ObjectResolver  RelationResolver
        │             │             │
        └─────────────┼─────────────┘
                      ↓
                 RuleResolver
                      ↓
              Condition Calculation
                      ↓
                Result Calculation
                      ↓
                  Conclusion
                      ↓
               Reasoning Chain

可以进一步抽象为:

Fact
+
Object
+
Relation
+
Rule
+
Condition
+
Experience
+
Memory
        ↓
ReasoningEngine
        ↓
Condition
        ↓
Result
        ↓
Conclusion

ReasoningEngine 与 RuleEngine 的区别

这一章最重要的区别是:

模块 核心职责
Rule 定义逻辑
RuleEngine 运行规则
ReasoningEngine 组织认知资源并形成推理结论
Conclusion 推理产生的新结论
Decision 根据结论进行决策

所以完整关系是:

Fact
+
Object
+
Relation
+
Experience
+
Rule
        ↓
ReasoningEngine
        ↓
RuleResolver
        ↓
Condition Calculation
        ↓
RuleEngine / Rule Execution
        ↓
Result Calculation
        ↓
Conclusion
        ↓
Decision
        ↓
Action
        ↓
Experience

本章核心定义

ReasoningEngine 是 ICAI 中负责组织 Fact、Object、Relation、Rule、Condition、Experience 和 Memory,通过事实解析、对象解析、关系解析、规则解析、条件计算和结果计算,形成可追溯 Conclusion 的推理运行机制。

其核心不是生成语言,而是:

解析
+
匹配
+
计算
+
规则
+
逻辑
+
结论

完全建立在 ICAI 自身的对象、属性、关系、事实、规则、条件、经验和离散计算机制之上。

Leave a Reply

Your email address will not be published. Required fields are marked *