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

第18章 Ability

第18章 Ability

本章大纲

  1. Ability 定义
  2. 能力类型
  3. 能力属性
  4. 能力方法
  5. 能力调用
  6. 能力组合
  7. 能力状态
  8. 能力更新
  9. Individual Ability
  10. Ability 实际案例

18.1 Ability 定义

**Ability(能力)**是 SAI Individual 对某类知识、资源、方法和 Engine 进行实际应用的能力描述。

简单来说:

Ability 定义 Individual 能做什么,以及在什么条件下能够做。

在 SAI Framework 中,Ability 不是一个简单的字符串列表,也不是一个 Engine 本身。

例如:

Ability
├── 感知能力
├── 认知能力
├── 记忆能力
├── 推理能力
├── 决策能力
├── 行为能力
└── 学习能力

可以理解为:

Engine = 怎么执行某类处理

Ability = Individual 是否具有应用这种处理的能力

例如:

ReasoningEngine
        ↓
提供推理处理机制
        ↓
Individual
        ↓
拥有 Reasoning Ability
        ↓
可以实际进行推理

因此:

Engine ≠ Ability

Engine 是处理机制,Ability 是 Individual 对这种机制的实际能力组织。


18.2 能力类型

SAI Framework 可以按照 Individual 的生命周期建立能力体系。

18.2.1 感知能力

负责从 Information 中识别和组织元素、对象、状态等。

例如:

Perception Ability
├── Object Perception
├── State Perception
├── Motion Perception
├── Environment Perception
└── Event Perception

例如:

输入:

Room.temperature = 32
Fan.state = OFF
Person.state = PRESENT

感知:

发现
├── 房间
├── 温度
├── 风扇
└── 人

18.2.2 认知能力

认知能力负责理解已经感知到的信息。

Elements
+
Objects
+
Properties
+
Relations
+
Facts
        ↓
Cognition
        ↓
Understanding

例如:

Temperature = 32
Room = occupied
Fan = OFF

经过认知后形成:

当前房间温度较高
房间有人
风扇当前没有运行

18.2.3 记忆能力

记忆能力负责保存和读取信息、事实、状态和经验。

Memory Ability
├── Remember
├── Recall
├── Search
├── Update
└── Forget

例如:

remember(
    room01,
    temperature=32
)

之后:

recall(room01)

可以得到以前保存的信息。


18.2.4 推理能力

推理能力负责利用事实、关系、规则和经验产生结论。

Facts
+
Relations
+
Rules
+
Experience
        ↓
Reasoning Ability
        ↓
Conclusion

例如:

IF temperature > 30
AND person = PRESENT
THEN room = HOT

推理结果:

room = HOT

18.2.5 决策能力

决策能力负责从多个可能行动中选择合适的行动。

Candidates
    ↓
Condition
    ↓
Risk
    ↓
Priority
    ↓
Decision

例如:

候选行为:

A:开启风扇
B:关闭风扇
C:保持当前状态

根据当前状态:

temperature = 32
person = PRESENT
fan = OFF

最终:

Decision = TURN_ON_FAN

18.2.6 行为能力

行为能力负责把 Decision 转换为实际 Action。

Decision
    ↓
Behavior
    ↓
Action
    ↓
Executor / Adapter

例如:

Decision
    ↓
TurnOnFan
    ↓
FanAction
    ↓
FanAdapter
    ↓
Fan ON

18.2.7 学习能力

学习能力负责从反馈和经验中获取新的知识资源,并更新 Individual 的能力或记忆。

Action
 ↓
Feedback
 ↓
Experience
 ↓
Learning
 ↓
Knowledge / Ability Update
 ↓
Memory Update

因此:

学习不是简单保存数据,而是使 Individual 后续能够更有效地应用已有或新获得的资源。


18.3 能力属性

Ability 本身也应该具有属性。

一个基础 Ability 可以描述为:

Ability
├── id
├── name
├── type
├── description
├── status
├── level
├── enabled
├── priority
└── metadata

例如:

id          = ability.reasoning
name        = Reasoning
type        = cognition
description = 根据事实和规则进行推理
status      = ready
level       = 1
enabled     = true
priority    = 10

这些属性描述的是:

这个能力是什么?
是否可用?
当前处于什么状态?
能力等级如何?
调用优先级是多少?

18.4 能力方法

Ability 不仅描述属性,还可以拥有方法。

例如:

<?php

namespace SAI\Individual;

class Ability
{
    protected $id;
    protected $name;
    protected $type;
    protected $enabled = true;

    public function __construct($id, $name, $type)
    {
        $this->id   = $id;
        $this->name = $name;
        $this->type = $type;
    }

    public function enable()
    {
        $this->enabled = true;
    }

    public function disable()
    {
        $this->enabled = false;
    }

    public function isEnabled()
    {
        return $this->enabled;
    }

    public function getId()
    {
        return $this->id;
    }

    public function getName()
    {
        return $this->name;
    }

    public function getType()
    {
        return $this->type;
    }
}

这个 Ability 类主要负责描述:

ID
Name
Type
Enabled

真正的推理、记忆、决策等处理,则应该交给相应 Engine。

因此:

Ability
   │
   ├── 属性
   │
   └── 能力描述
          │
          ▼
       Engine
          │
          ▼
       实际处理

18.5 能力调用

Individual 使用 Ability 时,并不是直接把所有处理逻辑写进 Individual。

更合理的方式是:

Individual
    ↓
Ability
    ↓
检查能力
    ↓
调用对应 Engine
    ↓
获得结果

例如:

$ability = $individual->getAbility('reasoning');

if ($ability && $ability->isEnabled()) {
    $result = $reasoningEngine->process($facts);
}

运行过程:

Individual
    ↓
查找 Reasoning Ability
    ↓
Ability 可用
    ↓
ReasoningEngine
    ↓
处理 Facts / Rules
    ↓
Conclusion

这里有一个重要关系:

Individual 决定“我是否具有这种能力”
Engine 负责“具体怎么处理”

18.6 能力组合

一个 Individual 通常不是只有一个 Ability。

例如一个环境控制 Individual:

Individual
│
├── Perception Ability
├── Cognition Ability
├── Memory Ability
├── Reasoning Ability
├── Decision Ability
├── Behavior Ability
└── Learning Ability

这些能力可以组合起来形成完整运行能力。

例如:

感知能力
    ↓
认知能力
    ↓
记忆能力
    ↓
推理能力
    ↓
决策能力
    ↓
行为能力
    ↓
学习能力

形成:

Information
 ↓
Perception Ability
 ↓
Cognition Ability
 ↓
Memory Ability
 ↓
Reasoning Ability
 ↓
Decision Ability
 ↓
Behavior Ability
 ↓
Feedback
 ↓
Learning Ability

因此:

Individual 的智能表现不是来自某一个 Ability,而是多个 Ability 按照关系和生命周期组合产生的。


18.7 能力状态

Ability 本身也可能存在状态。

例如:

Ability State
├── unavailable
├── disabled
├── ready
├── running
├── blocked
├── failed
└── updating

例如:

Reasoning Ability

status = ready

调用之后:

ready
 ↓
running
 ↓
completed
 ↓
ready

如果出现错误:

ready
 ↓
running
 ↓
failed

也可以通过维护机制进行:

failed
 ↓
Detection
 ↓
Diagnosis
 ↓
Repair
 ↓
Verification
 ↓
ready

这说明 Ability 与 Individual State 之间存在联系,但二者不能混为一谈。

Individual State
    ↓
描述 Individual 当前状态

Ability State
    ↓
描述某一个能力当前状态

18.8 能力更新

Ability 并不是永远固定不变。

在 SAI Framework 中,学习系统可以根据反馈和经验更新 Ability。

基本过程:

Behavior
 ↓
Action
 ↓
Feedback
 ↓
Experience
 ↓
Learning
 ↓
Ability Update

例如:

原能力:

Reasoning Ability
level = 1

经过学习后,可以形成:

Reasoning Ability
level = 2

或者增加新的能力配置:

Reasoning Ability
├── temperature_rule
├── occupancy_rule
└── device_state_rule

也可以更新能力状态:

disabled
 ↓
updated
 ↓
verified
 ↓
enabled

这里需要特别区分:

Learning
    ↓
产生更新结果

Ability
    ↓
保存并应用更新后的能力资源

学习不是 Ability 本身。


18.9 Individual Ability

Ability 最终需要归属于 Individual。

因此 Individual 可以拥有一个 Ability 集合:

Individual
│
├── Identity
├── State
├── Ability
│   ├── Perception
│   ├── Cognition
│   ├── Memory
│   ├── Reasoning
│   ├── Decision
│   ├── Behavior
│   └── Learning
├── Memory
├── Cognition
├── Learning
└── Behavior

可以设计一个 AbilityManager:

<?php

namespace SAI\Individual;

class AbilityManager
{
    protected $abilities = array();

    public function add(Ability $ability)
    {
        $this->abilities[$ability->getId()] = $ability;
    }

    public function get($id)
    {
        if (!isset($this->abilities[$id])) {
            return null;
        }

        return $this->abilities[$id];
    }

    public function has($id)
    {
        return isset($this->abilities[$id]);
    }

    public function all()
    {
        return $this->abilities;
    }
}

Individual:

<?php

namespace SAI\Individual;

class Individual
{
    protected $id;
    protected $abilityManager;

    public function __construct($id)
    {
        $this->id = $id;
        $this->abilityManager = new AbilityManager();
    }

    public function addAbility(Ability $ability)
    {
        $this->abilityManager->add($ability);
    }

    public function getAbility($id)
    {
        return $this->abilityManager->get($id);
    }

    public function getAbilities()
    {
        return $this->abilityManager->all();
    }
}

创建 Individual:

$individual = new Individual('SAI-001');

$individual->addAbility(
    new Ability(
        'ability.perception',
        'Perception',
        'perception'
    )
);

$individual->addAbility(
    new Ability(
        'ability.reasoning',
        'Reasoning',
        'reasoning'
    )
);

$individual->addAbility(
    new Ability(
        'ability.decision',
        'Decision',
        'decision'
    )
);

于是:

SAI-001
│
├── Perception Ability
├── Reasoning Ability
└── Decision Ability

以上 PHP 代码是本章的设计示例,用于说明 SAI Framework 的 OOP 结构,未作为实际项目代码执行验证。


18.10 Ability 实际案例

下面使用一个简单的“房间环境 Individual”说明 Ability 如何参与完整运行。

初始 Individual

Individual
ID = SAI-001
Name = Room Assistant

具有:

Ability
├── Perception
├── Cognition
├── Memory
├── Reasoning
├── Decision
├── Behavior
└── Learning

第一步:接收信息

传感器提供:

Room.temperature = 32
Person.state = PRESENT
Fan.state = OFF

进入:

Information

第二步:感知能力

Information
    ↓
Perception Ability
    ↓
PerceptionEngine

得到:

Object: Room
Property: temperature
Value: 32

Object: Person
State: PRESENT

Object: Fan
State: OFF

第三步:认知能力

Perception
    ↓
Cognition Ability
    ↓
CognitionEngine

形成:

房间温度较高
房间有人
风扇没有运行

第四步:记忆能力

Cognition
    ↓
Memory Ability
    ↓
MemoryEngine

查询历史经验:

temperature > 30
+
person present
+
fan off

过去曾经出现:

开启风扇

并取得良好结果。


第五步:推理能力

Facts
+
Rules
+
Memory
    ↓
Reasoning Ability
    ↓
ReasoningEngine

规则:

IF temperature > 30
AND person = PRESENT
AND fan = OFF

THEN
fan should be ON

得到:

Conclusion = Fan should turn on

第六步:决策能力

Conclusion
    ↓
Decision Ability
    ↓
DecisionEngine

候选行为:

1. TurnOnFan
2. KeepFanOff

最终:

Decision = TurnOnFan

第七步:行为能力

Decision
    ↓
Behavior Ability
    ↓
BehaviorEngine
    ↓
Action

形成:

Action = Fan.turnOn()

第八步:外部执行

Action
 ↓
Adapter
 ↓
Fan
 ↓
ON

设备状态变化:

Fan.state

OFF
 ↓
ON

第九步:反馈

设备或者环境再次提供信息:

temperature = 29
fan = ON

形成:

Feedback

第十步:学习能力

Feedback
    ↓
Experience
    ↓
Learning Ability
    ↓
LearningEngine
    ↓
Memory / Ability Update

形成新的经验:

场景:
temperature > 30
person = PRESENT
fan = OFF

行为:
TurnOnFan

结果:
temperature 32 → 29

Individual 将这次运行结果作为后续能力应用的资源。


Ability 的完整关系

本章可以把 Ability 总结成下面的结构:

                    Individual
                         │
                      Ability
                         │
        ┌────────────────┼────────────────┐
        │                │                │
   Perception       Cognition        Memory
        │                │                │
        └────────────────┼────────────────┘
                         │
                     Reasoning
                         │
                      Decision
                         │
                      Behavior
                         │
                       Action
                         │
                    External World
                         │
                      Feedback
                         │
                      Learning
                         │
                  Ability Update
                         │
                         └──────→ Individual

因此,Ability 在 SAI Framework 中处于一个非常重要的位置:

Engine
 ↓
提供处理机制

Ability
 ↓
组织 Individual 能够应用的处理能力

Individual
 ↓
组合多个 Ability

Central
 ↓
协调这些 Ability 的运行

External World
 ↓
产生反馈

Learning
 ↓
更新 Ability / Memory

本章小结

Ability 的核心不是“列出几个功能名称”,而是建立 Individual 与 Engine、Memory、Learning、Behavior 之间的能力关系

核心关系可以概括为:

Ability = Individual 可应用的能力资源

进一步:

Engine  = 怎么处理
Ability = 能做什么
Individual = 谁拥有这些能力
Central = 如何协调这些能力
Learning = 如何更新这些能力

因此:

Individual
    │
    ├── Identity → 我是谁
    ├── State → 我现在怎么样
    ├── Ability → 我能做什么
    ├── Memory → 我记住了什么
    ├── Cognition → 我如何理解
    ├── Learning → 我如何更新
    └── Behavior → 我如何行动

到这里,IdentityStateAbility 已经形成 Individual 的三个基础结构:

Identity
   ↓
我是谁

State
   ↓
我现在怎么样

Ability
   ↓
我能做什么

这三个部分共同构成了后续 Memory、Cognition、Learning、Behavior 等系统进入 Individual 的基础。

Leave a Reply

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