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

第101章 开发一个环境感知 SAI

第101章 开发一个环境感知 SAI

本章在第100章“简单 SAI”的基础上继续扩展。

第100章解决的是:

Individual 能够接收信息、感知、认知、记忆、推理、决策并执行行为。

第101章进一步解决:

Individual 不再只处理一个孤立对象,而是能够感知一个环境 Scene,并根据环境中的多个对象及其关系进行决策。

本章仍然采用 PHP OOP + 对象 + 属性 + 状态 + 关系 + 规则 + 离散计算实现,不使用 LLM、Transformer、Embedding、向量搜索、神经网络或生成式机制。


1. Scene

1.1 Scene 定义

Scene 是 Individual 在某一时间范围内对当前环境进行结构化组织后的场景。

可以定义:

Scene = Objects + Relations + States + Environment + Time

例如一个工业环境:

Scene_A

Machine_A
TemperatureSensor_A
Cooling_A
Operator_A

它们可能具有:

Machine_A.state = RUNNING
Machine_A.temperature = 92

Cooling_A.state = OFF

TemperatureSensor_A.value = 92

Operator_A.state = PRESENT

同时存在关系:

TemperatureSensor_A monitors Machine_A
Cooling_A cools Machine_A
Operator_A operates Machine_A

因此 Scene 不是一个简单数组。

它是 Individual 对当前环境的结构化表示


1.2 Scene 的基本结构

$scene = array(
    'id' => 'Scene_A',
    'time' => time(),

    'objects' => array(
        'Machine_A',
        'Cooling_A',
        'TemperatureSensor_A'
    ),

    'relations' => array(
        array(
            'source' => 'TemperatureSensor_A',
            'type' => 'monitors',
            'target' => 'Machine_A'
        ),
        array(
            'source' => 'Cooling_A',
            'type' => 'cools',
            'target' => 'Machine_A'
        )
    )
);

Scene 的作用是把分散的信息组织到同一个环境结构中。


1.3 Scene 与 Object 的关系

Scene
 ├── Object
 ├── Object
 ├── Object
 ├── Relation
 ├── State
 └── Environment

例如:

Scene_A
│
├── Machine_A
├── Cooling_A
├── Sensor_A
│
├── Sensor_A → monitors → Machine_A
└── Cooling_A → cools → Machine_A

因此:

Object 是场景中的对象,Scene 是组织这些对象及其关系的环境结构。


2. SceneCollector

2.1 SceneCollector 定义

Sensor 获得的是局部信息。

SceneCollector 的作用是:

把来自不同 Sensor、不同时间点、不同来源的信息收集并组织成 Scene。

基本流程:

Sensor
   ↓
Information
   ↓
SceneCollector
   ↓
Scene

2.2 多 Sensor

例如:

TemperatureSensor_A
    temperature = 92

SpeedSensor_A
    speed = 1200

LoadSensor_A
    load = 82

Individual 收到:

Information_1
Information_2
Information_3

SceneCollector 组织:

Scene_A

Machine_A
├── temperature = 92
├── speed = 1200
└── load = 82

2.3 SceneCollector 的基本结构

class SceneCollector
{
    protected $information = array();

    public function collect($information)
    {
        $this->information[] = $information;
    }

    public function buildScene()
    {
        return array(
            'id' => 'Scene_' . time(),
            'information' => $this->information,
            'created_at' => time()
        );
    }
}

它本身不负责:

  • Cognition
  • Reasoning
  • Decision
  • Learning

它负责的是:

信息收集与场景组织。


2.4 Scene 的连续变化

环境不是静止的。

例如:

t1:
Machine_A.temperature = 80

t2:
Machine_A.temperature = 86

t3:
Machine_A.temperature = 92

SceneCollector 可以得到:

Scene_1 → Scene_2 → Scene_3

并进一步形成:

temperature:
80 → 86 → 92

这就为后面的 Cognition 提供:

temperature increasing

这样的结构化信息。


3. Sensor

3.1 Sensor 定义

Sensor 是环境信息的获取设备或信息来源。

例如:

TemperatureSensor
PressureSensor
SpeedSensor
DistanceSensor
PositionSensor
Camera
WeightSensor
FlowSensor

Sensor 的核心职责只有一个:

获取信息。


3.2 Sensor 与 Perception 的区别

必须明确:

Sensor = 获取数据
Perception = 组织和识别数据

例如:

TemperatureSensor_A
        ↓
92
        ↓
Information
        ↓
Perception
        ↓
Machine_A.temperature = 92

Sensor 不理解:

92 是否危险?

也不决定:

是否停止机器?

这些属于后面的 Cognition、Reasoning、Decision。


3.3 Sensor Object

Sensor 本身也可以被表示成 SAI Object:

$sensor = array(
    'id' => 'TemperatureSensor_A',
    'type' => 'temperature_sensor',
    'state' => 'ACTIVE',
    'unit' => 'C',
    'value' => 92,
    'target' => 'Machine_A'
);

4. Object

4.1 Object 定义

Object 是 Individual 对环境实体进行结构化表示后的对象。

例如:

Machine_A
Cooling_A
Sensor_A
Operator_A

Object 可以包含:

Identity
Property
State
Position
Relation
Method
Ability

4.2 Machine Object

例如:

$machine = array(
    'id' => 'Machine_A',

    'properties' => array(
        'temperature' => 92,
        'speed' => 1200,
        'load' => 82
    ),

    'state' => 'RUNNING'
);

这里:

temperature = Property
speed       = Property
load        = Property
RUNNING     = State

4.3 Object 不等于物理实体

例如:

Physical Machine
       ↓
Sensor Information
       ↓
Perception
       ↓
Machine Object

因此:

Machine Object 是 Individual 内部的结构化对象,不是物理机器本身。


5. Relation

5.1 Relation 定义

Relation 表示两个或者多个对象之间的结构关系。

例如:

Sensor_A → monitors → Machine_A
Cooling_A → cools → Machine_A
Operator_A → operates → Machine_A
Machine_A → located_in → Factory_A

基本结构:

Source + Relation + Target

5.2 Relation 示例

$relation = array(
    'source' => 'Cooling_A',
    'type' => 'cools',
    'target' => 'Machine_A'
);

也可以表示:

Machine_A
    |
    ├── monitored_by → Sensor_A
    ├── cooled_by → Cooling_A
    └── operated_by → Operator_A

5.3 Relation 的作用

没有 Relation:

Machine_A
Cooling_A
Sensor_A

只是三个独立对象。

有 Relation:

Sensor_A → monitors → Machine_A

Cooling_A → cools → Machine_A

Individual 才能够形成环境结构。

所以:

Object 描述“有什么”,Relation 描述“它们之间是什么关系”。


6. Perception

6.1 Perception 定义

Perception 接收 SceneCollector 提供的环境信息,并把信息转换成结构化 Elements、Objects、Properties、States、Relations。

流程:

Sensor
 ↓
Information
 ↓
SceneCollector
 ↓
Scene
 ↓
Perception
 ↓
Elements
 ↓
Objects
 ↓
Properties
 ↓
States
 ↓
Relations

6.2 Perception 示例

Sensor 输入:

temperature = 92
speed = 1200
load = 82
cooling = OFF

Perception 处理后:

Object:
Machine_A

Property:
temperature = 92
speed = 1200
load = 82

State:
Machine_A = RUNNING

Object:
Cooling_A

State:
Cooling_A = OFF

6.3 Relation 识别

如果系统已有:

Cooling_A cools Machine_A
Sensor_A monitors Machine_A

Perception 可以建立:

Cooling_A
    ↓
cools
    ↓
Machine_A

以及:

Sensor_A
    ↓
monitors
    ↓
Machine_A

6.4 PerceptionResult

可以形成:

$perceptionResult = array(
    'scene_id' => 'Scene_A',

    'objects' => array(
        'Machine_A',
        'Cooling_A',
        'Sensor_A'
    ),

    'properties' => array(
        'Machine_A.temperature' => 92,
        'Machine_A.speed' => 1200,
        'Machine_A.load' => 82
    ),

    'states' => array(
        'Machine_A' => 'RUNNING',
        'Cooling_A' => 'OFF'
    ),

    'relations' => array(
        array(
            'source' => 'Cooling_A',
            'type' => 'cools',
            'target' => 'Machine_A'
        )
    )
);

Perception 的结果仍然是:

结构化环境信息。

它还没有决定应该做什么。


7. Cognition

7.1 Cognition 定义

Cognition 对 Perception 的结构进行理解。

例如 Perception 得到:

Machine_A.temperature = 92
Machine_A.load = 82
Machine_A.state = RUNNING

Cooling_A.state = OFF

Cooling_A → cools → Machine_A

Cognition 可以形成:

Machine_A 当前处于高温运行状态
Machine_A 当前负载较高
Cooling_A 当前未运行
Cooling_A 是 Machine_A 的冷却设备

7.2 Cognition 不等于 Decision

例如:

Cognition:
Machine_A temperature = 92
temperature > safe_limit
Machine_A load = 82
Cooling_A = OFF

形成:

Cognition:
HIGH_TEMPERATURE
HIGH_LOAD
COOLING_AVAILABLE
COOLING_INACTIVE

但是不能直接变成:

START COOLING

因为:

Cognition ≠ Decision

7.3 Cognition 建立环境状态

可以形成:

$cognition = array(
    'scene' => 'Scene_A',

    'understanding' => array(
        'machine_state' => 'RUNNING',
        'temperature_state' => 'HIGH',
        'load_state' => 'HIGH',
        'cooling_state' => 'OFF',
        'cooling_available' => true
    ),

    'state' => 'UNDERSTOOD'
);

8. Decision

现在 Individual 已经拥有:

Scene
Object
Property
State
Relation
Cognition

Decision 可以根据规则选择行为。


8.1 Rule

例如:

IF
Machine.temperature > 85
AND
Machine.load > 80
AND
Cooling.state = OFF

THEN
START_COOLING

这是一个离散规则。


8.2 Decision Candidates

Individual 可以产生候选:

CONTINUE
START_COOLING
REDUCE_SPEED
STOP_MACHINE

然后进行条件、风险、优先级检查。


8.3 Decision

当前:

temperature = 92
load = 82
cooling = OFF

规则成立:

92 > 85       TRUE
82 > 80       TRUE
Cooling = OFF TRUE

因此:

Decision = START_COOLING

8.4 Decision Result

$decision = array(
    'target' => 'Machine_A',
    'selected' => 'START_COOLING',

    'candidates' => array(
        'CONTINUE',
        'START_COOLING',
        'REDUCE_SPEED',
        'STOP_MACHINE'
    ),

    'state' => 'DECIDED',

    'reason' => array(
        'temperature_high',
        'load_high',
        'cooling_inactive'
    )
);

这里可以清楚看到:

Cognition
    ↓
理解当前环境
    ↓
Reasoning
    ↓
规则计算
    ↓
Decision
    ↓
选择行为

9. Behavior

Decision 选择:

START_COOLING

但这还不是完整执行过程。

需要 Behavior。


9.1 Behavior 定义

Behavior 是对一个目标行为进行组织和执行的过程。

例如:

Behavior:
Start Cooling Machine_A

可以包含:

1. Check Cooling_A state
2. Send START
3. Check Cooling_A state
4. Read Machine_A temperature
5. Verify result

9.2 Behavior 与 Action

Behavior
 ├── Action 1: CHECK_STATE
 ├── Action 2: START
 ├── Action 3: READ_STATE
 └── Action 4: VERIFY

因此:

Behavior = 执行过程
Action   = 具体操作

9.3 Behavior 执行

$behavior = array(
    'id' => 'Behavior_001',
    'type' => 'START_COOLING',
    'target' => 'Cooling_A',
    'state' => 'RUNNING',

    'actions' => array(
        'CHECK_STATE',
        'START',
        'READ_STATE',
        'VERIFY'
    )
);

执行:

CHECK_STATE
     ↓
Cooling_A = OFF
     ↓
START
     ↓
Cooling_A = ON
     ↓
READ_STATE
     ↓
Cooling_A = ON
     ↓
VERIFY

最终:

Behavior = SUCCESS

10. Feedback

Behavior 完成以后,Individual 不能认为世界已经按照自己的预期改变。

必须重新获取环境信息。

这就是 Feedback。


10.1 Feedback 定义

Feedback 是外部环境、设备、行为执行结果返回给 Individual 的结果信息。

例如:

Action:
START_COOLING

设备返回:

Cooling_A.state = ON

然后 Sensor 再次检测:

Machine_A.temperature = 88

Feedback:

$feedback = array(
    'source' => 'Cooling_A',
    'target' => 'Machine_A',

    'state' => 'SUCCESS',

    'changes' => array(
        'Cooling_A.state' => 'OFF → ON',
        'Machine_A.temperature' => '92 → 88'
    ),

    'timestamp' => time()
);

10.2 Feedback 重新进入 Individual

Feedback 不应该停留在 Behavior。

它应该重新进入:

Feedback
   ↓
Information
   ↓
Perception
   ↓
Scene
   ↓
Cognition

形成新的环境状态。


10.3 环境变化

第一次 Scene:

Scene_001

Machine_A
temperature = 92
load = 82
state = RUNNING

Cooling_A
state = OFF

Decision:

START_COOLING

执行后:

Cooling_A = ON
Machine_A.temperature = 88

形成:

Scene_002

Machine_A
temperature = 88
load = 82
state = RUNNING

Cooling_A
state = ON

继续运行:

Scene_003

Machine_A
temperature = 84
load = 80
state = RUNNING

Cooling_A
state = ON

这时候 Individual 又重新进行:

Perception
   ↓
Cognition
   ↓
Reasoning
   ↓
Decision

可能得到:

temperature = NORMAL
cooling = ON

Decision:
CONTINUE

11. 完整环境感知 SAI

现在把本章所有模块连接起来:

                 外部环境
                    │
        ┌───────────┴───────────┐
        │                       │
      Sensor                 Device
        │                       │
        └───────────┬───────────┘
                    ↓
               Information
                    ↓
             SceneCollector
                    ↓
                  Scene
                    ↓
               Perception
                    ↓
                 Element
                    ↓
          ┌─────────┴─────────┐
          ↓                   ↓
       Object              Relation
          │                   │
          └─────────┬─────────┘
                    ↓
                Cognition
                    ↓
                Reasoning
                    ↓
                 Decision
                    ↓
                 Behavior
                    ↓
                  Action
                    ↓
              External World
                    ↓
                 Feedback
                    ↓
               Information
                    ↓
                  Scene

这已经形成一个真正的环境闭环。


12. 完整运行实例

假设环境中存在:

Machine_A
Cooling_A
TemperatureSensor_A
LoadSensor_A

第一步:Sensor

TemperatureSensor_A → 92℃
LoadSensor_A → 82%

第二步:Information

Information_001

target = Machine_A
temperature = 92
source = TemperatureSensor_A
Information_002

target = Machine_A
load = 82
source = LoadSensor_A

第三步:SceneCollector

形成:

Scene_A

包含:

Machine_A
Cooling_A
TemperatureSensor_A
LoadSensor_A

第四步:Perception

识别:

Machine_A.temperature = 92
Machine_A.load = 82
Machine_A.state = RUNNING
Cooling_A.state = OFF

并建立:

Cooling_A → cools → Machine_A

第五步:Cognition

Individual 理解:

Machine_A = RUNNING
Temperature = HIGH
Load = HIGH
Cooling = OFF
Cooling_A is available

形成:

UNDERSTOOD

第六步:Reasoning

规则:

temperature > 85
AND
load > 80
AND
cooling = OFF

计算:

92 > 85 → TRUE
82 > 80 → TRUE
OFF     → TRUE

得到:

Conclusion:
Machine_A requires cooling

第七步:Decision

候选:

CONTINUE
START_COOLING
REDUCE_SPEED
STOP

经过风险与条件检查:

START_COOLING

成为:

Decision

第八步:Behavior

Behavior:
START_COOLING

执行:

CHECK
→ START
→ READ
→ VERIFY

第九步:External Action

Cooling_A
OFF → ON

第十步:Feedback

Sensor 再次获得:

Machine_A.temperature = 88

于是:

Feedback
   ↓
Information
   ↓
SceneCollector
   ↓
Scene_B

第十一步:重新感知

新的 Scene:

Machine_A.temperature = 88
Cooling_A = ON

Individual 再次:

Perception
→ Cognition
→ Reasoning
→ Decision

继续运行。

当:

temperature = 84

规则:

temperature > 85

变成:

FALSE

Individual 不再继续执行启动冷却的行为。


13. 本章完整结构

第101章建立的是:

Scene
   ↓
SceneCollector
   ↓
Sensor
   ↓
Object
   ↓
Relation
   ↓
Perception
   ↓
Cognition
   ↓
Decision
   ↓
Behavior
   ↓
Feedback
   ↓
Scene

进一步展开:

External Environment
        ↓
      Sensor
        ↓
   Information
        ↓
 SceneCollector
        ↓
      Scene
        ↓
   Perception
        ↓
 Elements
        ↓
 Objects + Properties + States + Relations
        ↓
    Cognition
        ↓
   Understanding
        ↓
    Reasoning
        ↓
     Decision
        ↓
     Behavior
        ↓
      Action
        ↓
 External Environment
        ↓
     Feedback
        ↓
   Information
        ↓
     Scene

本章核心定义

Scene

Scene 是 Individual 对当前环境中的对象、属性、状态、关系、时间和环境条件进行组织后的结构化场景。

SceneCollector

SceneCollector 是把多个来源、多个时间点的信息收集并组织成 Scene 的组件。

Sensor

Sensor 是环境信息的获取来源,不负责理解、推理和决策。

Object

Object 是 Individual 对环境实体进行结构化表示后的对象。

Relation

Relation 是 Object、Property、State 等结构之间的离散关系。

Perception

Perception 将环境信息转换为 Element、Object、Property、State、Relation 等结构。

Cognition

Cognition 对感知得到的对象、属性、状态和关系进行理解,形成当前环境认知。

Decision

Decision 根据当前认知、推理结果、条件、风险、优先级和能力选择下一步行为。

Behavior

Behavior 是对 Decision 所选择目标进行组织和执行的行为过程。

Feedback

Feedback 是外部环境和执行过程返回给 Individual 的实际结果,并重新进入下一轮感知。

因此,第101章最重要的变化是:

第100章的 SAI 能够处理信息;第101章的 SAI 开始能够处理“环境”。

最终形成:

感知环境
   ↓
建立 Scene
   ↓
识别 Object
   ↓
建立 Relation
   ↓
形成 Cognition
   ↓
Reasoning
   ↓
Decision
   ↓
Behavior
   ↓
改变环境
   ↓
Feedback
   ↓
重新感知环境

这就是环境感知型 SAI 的第一个完整闭环

Leave a Reply

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