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

第17章 State

第17章 State

本章大纲

  1. State 定义
  2. 自身状态
  3. 环境状态
  4. 行为状态
  5. 设备状态
  6. 状态属性
  7. 状态变化
  8. 状态历史
  9. 状态判断
  10. State 类实现
  11. 状态运行示例

17.1 State 定义

在第16章中,我们定义了 Individual 的 Identity。

Identity 解决的是:

我是谁?

而 State 解决的是:

我现在是什么状态?

**State(状态)**用于描述某一个对象、Individual、设备或环境在某一时刻所处的动态情况。

因此可以定义:

State 是 SAI Framework 用于描述对象、Individual、设备和环境当前动态状态及其变化的软件结构。

State 与 Property 有明显区别:

Property
→ 描述对象具有的属性

State
→ 描述对象当前的状态

例如:

Fan
├── Property
│   ├── name
│   ├── model
│   └── power
│
└── State
    ├── on/off
    └── speed

状态最大的特点是:

状态会随着时间、环境、行为和事件不断变化。

例如:

OFF
 ↓
ON
 ↓
OFF

17.2 自身状态

Individual 首先具有自己的自身状态。

例如:

Individual
├── status = running
├── mode = normal
├── energy = 80
└── task = monitoring

可以把自身状态分为:

自身状态
├── 运行状态
├── 工作状态
├── 能源状态
├── 当前任务
├── 当前模式
└── 当前异常状态

例如:

status = running
mode = normal
energy = 80
task = monitoring

这些状态描述的是 Individual 自己。

Individual 状态可能发生:

ready
 ↓
running
 ↓
busy
 ↓
idle

也可能:

normal
 ↓
warning
 ↓
error
 ↓
repairing
 ↓
normal

因此 State 是 Individual 生命周期的重要组成部分。


17.3 环境状态

Individual 不仅需要知道自身状态,还需要知道外部环境状态。

例如:

Room
├── temperature = 32
├── humidity = 70
├── light = low
└── people = 2

这些属于环境状态。

环境状态可以包括:

环境状态
├── 温度
├── 湿度
├── 光照
├── 空间
├── 位置
├── 人员
├── 物体
├── 距离
├── 运动
└── 其他环境条件

例如机器人:

Environment
├── road = clear
├── obstacle = detected
├── distance = 5m
└── weather = rain

这些状态可以通过:

Sensor
SceneCollector
InformationReceiver

不断获取。

然后进入:

Information
 ↓
Perception
 ↓
Object / State

因此环境状态是 Individual 认知外部世界的重要基础。


17.4 行为状态

Behavior 执行过程中也具有状态。

例如:

Behavior
├── type = move
├── target = room02
└── state = running

行为状态可以包括:

pending
running
completed
failed
cancelled
timeout

例如:

Move
 ↓
pending
 ↓
running
 ↓
completed

如果发生异常:

Move
 ↓
running
 ↓
failed

行为状态非常重要,因为 Decision 和后续 Behavior 需要知道之前的行为是否已经完成。

例如:

IF
fan.turnOn.state = completed

THEN
continue_monitoring

或者:

IF
move.state = failed

THEN
diagnose

因此:

Decision
 ↓
Behavior
 ↓
Behavior State
 ↓
Feedback

构成行为执行闭环。


17.5 设备状态

外部设备也具有自己的 State。

例如:

Fan
├── state = ON
├── speed = 3
└── temperature = 29

机器人:

Robot
├── power = ON
├── position = A01
├── speed = 2
├── direction = EAST
└── state = MOVING

车辆:

Vehicle
├── engine = ON
├── speed = 60
├── direction = EAST
└── state = DRIVING

设备状态通常来自:

Device
 ↓
Sensor
 ↓
Device Information
 ↓
InformationReceiver
 ↓
Perception
 ↓
State

也可以来自设备执行结果:

Action
 ↓
Device
 ↓
Device Response
 ↓
Feedback
 ↓
State Update

所以设备状态不是 Individual 主观设定出来的,而应该尽可能来源于实际设备信息和反馈。


17.6 状态属性

State 本身也可以具有多个属性。

例如:

State
├── name
├── value
├── source
├── time
└── confidence

一个状态可以表示为:

array(
    'name' => 'temperature',
    'value' => 32,
    'source' => 'sensor01',
    'time' => time()
);

例如:

temperature
value = 32
source = sensor01
time = 10:30:00

对于动态系统,还可以记录:

previous_value
current_value
changed_at

例如:

temperature
previous = 30
current = 32
changed_at = 10:30:00

这样系统不仅知道:

当前是多少

还知道:

之前是多少

从而能够判断状态是否发生变化。


17.7 状态变化

State 的核心特征就是变化

例如风扇:

OFF
 ↓
ON

温度:

30℃
 ↓
32℃

机器人:

STOPPED
 ↓
MOVING

状态变化可以表示为:

Old State
    ↓
Event / Action
    ↓
New State

例如:

Fan OFF
   ↓
turnOn()
   ↓
Fan ON

代码:

$state->set(
    'fan01',
    'power',
    'OFF'
);

$state->set(
    'fan01',
    'power',
    'ON'
);

更完整的状态变化记录:

fan01.power
OFF
 ↓
ON

变化本身也可以成为 Information:

State Change
 ↓
Information
 ↓
Perception
 ↓
Cognition

这样 SAI 就能够感知自身行为造成的状态变化。


17.8 状态历史

如果只保存当前状态:

temperature = 32

系统不知道它之前发生了什么。

因此可以保存状态历史:

State History

10:00 → 28℃
10:10 → 30℃
10:20 → 32℃
10:30 → 29℃

形成:

28
 ↓
30
 ↓
32
 ↓
29

State History 可以用于:

趋势分析
异常检测
经验形成
行为反馈
诊断
学习

例如:

Fan ON
 ↓
32℃
 ↓
29℃

系统可以把这一状态变化与行为联系起来:

Behavior:
fan.turnOn()

State Change:
temperature 32 → 29

然后形成 Experience:

Condition
 ↓
Action
 ↓
State Change
 ↓
Result

所以 State History 是 Experience 和 Learning 的重要数据来源之一。


17.9 状态判断

State 本身只是描述状态。

真正的判断可以由其他 Engine 完成。

例如:

temperature = 32

这是 State。

判断:

temperature > 30

则属于条件判断。

可以进入:

ReasoningEngine

例如:

State
temperature = 32
        ↓
Condition
temperature > 30
        ↓
Rule
fan.turnOn
        ↓
ReasoningEngine

也可以由 DecisionEngine 判断:

energy = 15
        ↓
Risk
        ↓
Priority
        ↓
Decision

因此必须明确:

State ≠ Reasoning
State ≠ Decision

State 提供判断所需要的数据。


17.10 State 类实现

下面设计一个简单的 State 类。

说明:以下 PHP 代码为教程示例,用于说明 State 的 OOP 设计,并非已经实际验证运行。

<?php

namespace SAI\Individual;

class State
{
    protected $states = array();

    public function set($name, $value)
    {
        $this->states[$name] = array(
            'value' => $value,
            'time' => time()
        );
    }

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

        return $this->states[$name]['value'];
    }

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

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

使用:

$state = new State();

$state->set(
    'status',
    'running'
);

$state->set(
    'energy',
    80
);

$state->set(
    'mode',
    'normal'
);

读取:

echo $state->get('status');

得到:

running

全部状态:

print_r($state->all());

逻辑结构:

State
├── status = running
├── energy = 80
└── mode = normal

17.11 状态运行示例

下面使用一个房间环境作为完整示例。

初始状态:

Individual
status = running

Room
temperature = 32

Fan
state = OFF

第一步:获取环境状态

Temperature Sensor
        ↓
temperature = 32
        ↓
Information

第二步:形成 State

Room
temperature = 32

以及:

Fan
state = OFF

第三步:状态判断

规则:

IF
Room.temperature > 30
AND
Fan.state = OFF

THEN
Fan.turnOn()

进入:

ReasoningEngine

得到:

Fan should turn on

第四步:形成 Decision

Decision
 ↓
Fan.turnOn()

第五步:形成 Behavior

Behavior
 ↓
TurnOnFan

第六步:执行 Action

fan01.turnOn()

设备状态发生变化:

OFF
 ↓
ON

State 更新:

Fan.state = ON

第七步:环境发生变化

风扇运行之后:

Room.temperature
32℃
 ↓
29℃

State History:

32℃
 ↓
29℃

第八步:反馈

Device
 ↓
Feedback
 ↓
Information
 ↓
Perception

系统获得:

Fan = ON
Temperature = 29℃

第九步:经验

最终形成:

场景:
Room.temperature = 32

状态:
Fan = OFF

行为:
Fan.turnOn()

结果:
Temperature = 29℃

可以形成:

Experience

随后:

Experience
 ↓
LearningEngine
 ↓
Memory Update

State 完整运行关系

整个过程可以表示为:

                 External World
                       │
                       ▼
                 Environment
                    State
                       │
                       ▼
                  Information
                       │
                       ▼
                   Perception
                       │
                       ▼
                    Cognition
                       │
                       ▼
                   Reasoning
                       │
                       ▼
                    Decision
                       │
                       ▼
                    Behavior
                       │
                       ▼
                     Action
                       │
                       ▼
                    Device
                       │
                       ▼
                  State Change
                       │
                       ▼
                    Feedback
                       │
                       ▼
                  Experience
                       │
                       ▼
                    Learning

与此同时,Individual 自身也存在状态:

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

所以 State 横跨整个 Individual 运行过程。


State 与其他核心概念

需要特别区分:

Identity
→ 我是谁

Property
→ 我有什么属性

State
→ 我现在是什么状态

Ability
→ 我能做什么

Memory
→ 我记住了什么

Experience
→ 我过去经历了什么

Behavior
→ 我正在做什么

例如一个机器人:

Identity
ID = ROBOT-001

Property
weight = 50kg

State
position = A01
speed = 2m/s
status = moving

Ability
navigation

Memory
previous_position = A00

Experience
A01 → B01 成功

Behavior
move_to_B01

这些概念共同构成一个完整的 Individual。


本章小结

State 是 SAI Framework 中描述动态现实状态的重要基础。

State 可以描述:

自身状态
环境状态
行为状态
设备状态

并且具有:

当前状态
状态属性
状态变化
状态历史

核心关系:

State
 ↓
状态变化
 ↓
Feedback
 ↓
Experience
 ↓
Learning

同时,State 又可以为:

Cognition
Reasoning
Decision
Behavior

提供当前运行条件。

因此:

State 不是 Individual 的静态数据,而是连接 Individual、自身环境、行为执行和外部反馈的动态数据结构。

最终可以概括为:

Identity
→ 我是谁

State
→ 我现在是什么状态

Ability
→ 我能够做什么

Memory
→ 我记住了什么

Cognition
→ 我理解了什么

Decision
→ 我决定做什么

Behavior
→ 我正在做什么

Feedback
→ 外部发生了什么变化

State 让 SAI Individual 从“拥有身份的对象”进一步成为一个能够随着时间和环境持续变化的动态个体。

Leave a Reply

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