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

第219章 Behavior Runtime|行为运行时

第219章 Behavior Runtime|行为运行时

第218章已经建立:

Behavior
↓
Behavior State
↓
Dynamic Action
↓
Observation
↓
Feedback

第219章进一步解决:

如何让一个 Behavior 真正持续运行,而不是创建一次、执行一次就结束。

因此,本章建立:

Behavior Runtime

核心循环正式确定为:

State
↓
Method
↓
Behavior
↓
Action
↓
Feedback
↓
State
↺

219.1 Behavior Runtime 的定义

Behavior Runtime 不是一个新的 Behavior。

它是:

负责加载、运行、监控、更新和结束 Behavior 的运行时系统。

因此:

Behavior
=
被运行的行为对象

Behavior Runtime
=
运行 Behavior 的机制

必须保持:

Behavior ≠ Behavior Runtime

219.2 为什么需要 Runtime

如果没有 Runtime:

Method
↓
Behavior
↓
Action
↓
Result

执行到这里就结束。

而有 Runtime:

State
 ↓
Method
 ↓
Behavior
 ↓
Action
 ↓
Feedback
 ↓
State Update
 ↓
Method
 ↓
Behavior
 ↓
Action
 ↓
...

因此 Runtime 的核心不是“执行一次”。

而是:

持续运行
持续观察
持续反馈
持续调整

219.3 Behavior Runtime 的核心循环

正式定义:

State
↓
Method
↓
Behavior
↓
Action
↓
Feedback
↓
State Update
↺

其中:

State

提供当前系统状态。

Method

根据当前 State 提供处理方法。

Behavior

形成当前行为过程。

Action

执行具体动作。

Feedback

获取执行结果和环境变化。

然后:

Feedback
↓
State Update

重新形成新的:

State

从而进入下一轮。


219.4 Runtime 是连续计算过程

因此可以表示为:

Sₜ
↓
Mₜ
↓
Bₜ
↓
Aₜ
↓
Fₜ
↓
Sₜ₊₁

下一轮:

Sₜ₊₁
↓
Mₜ₊₁
↓
Bₜ₊₁
↓
Aₜ₊₁
↓
Fₜ₊₁
↓
Sₜ₊₂

于是:

S₀
→ S₁
→ S₂
→ S₃
→ ...

Behavior Runtime 实际运行的是:

State Transition Process

219.5 Runtime 不等于无限循环

这里必须明确:

Continuous
≠
Infinite

Behavior Runtime 可以持续运行,但每个 Behavior 都应该有结束条件。

例如:

Behavior
↓
Complete

或者:

Behavior
↓
Failure
↓
Recovery

或者:

Behavior
↓
Timeout
↓
Terminate

所以 Runtime 是:

while Behavior is active

而不是:

while true

219.6 Behavior Runtime 生命周期

一个 Behavior Runtime 可以定义为:

Created
↓
Initialized
↓
Running
↓
Paused
↓
Resumed
↓
Completed

异常:

Running
↓
Failure
↓
Recovery

终止:

Running
↓
Terminated

因此:

Behavior Runtime
│
├── initialized
├── running
├── paused
├── completed
├── failed
└── terminated

219.7 Runtime 的核心职责

Behavior Runtime 第一版只负责六件事情:

1. Load Behavior
2. Read State
3. Execute Action
4. Receive Feedback
5. Update State
6. Continue / Stop

形成:

Load
 ↓
State
 ↓
Behavior
 ↓
Action
 ↓
Feedback
 ↓
State Update
 ↓
Continue?

如果:

Continue = Yes

则:

如果:

Complete = Yes

则:

Stop

219.8 Behavior Runtime Class

建立:

class BehaviorRuntime
{
    protected ?Behavior $behavior = null;

    protected ?BehaviorState $state = null;

    protected string $status = 'created';

    protected array $history = [];

    protected array $feedback = [];

    public function load(
        Behavior $behavior
    ): void {
        $this->behavior = $behavior;
        $this->status = 'initialized';
    }

    public function run(): void
    {
        if (!$this->behavior) {
            return;
        }

        $this->status = 'running';

        while ($this->shouldContinue()) {

            $this->step();
        }
    }

    protected function step(): void
    {
        // State
        // Behavior State
        // Action
        // Feedback
        // State Update
    }

    protected function shouldContinue(): bool
    {
        return $this->status === 'running';
    }
}

这里的 run() 是 Runtime 的入口。

但真正重要的是:

step()

219.9 Runtime Step

Behavior Runtime 不应该一次性完成整个 Behavior。

应该采用:

Runtime Step

每一步:

Read State
↓
Determine Behavior State
↓
Determine Action
↓
Execute
↓
Receive Feedback
↓
Update

即:

protected function step(): void
{
    $state = $this->readState();

    $action = $this->resolveAction(
        $state
    );

    $result = $this->executeAction(
        $action
    );

    $this->processFeedback(
        $result
    );
}

于是 Runtime 变成:

step()
step()
step()
step()
...

219.10 为什么 Step 很重要

因为 Dynamic Action 需要:

实时状态

如果:

run()

一次把所有动作提前计算:

Action 1
Action 2
Action 3
Action 4

那么它就无法真正动态响应。

正确方式:

Step 1
State₁
↓
Action₁
↓
Feedback₁

Step 2
State₂
↓
Action₂
↓
Feedback₂

Step 3
State₃
↓
Action₃
↓
Feedback₃

因此:

Runtime Step 是 Dynamic Action 能够真正动态运行的基础。


219.11 State → Method

每一个 Runtime Cycle 首先读取当前 State:

Sₜ

然后确定当前 Method:

Mₜ = SelectMethod(Sₜ)

因此:

State
↓
Method Evaluation
↓
Method Selection
↓
Method

这里直接连接第214、215章。

如果状态没有变化:

Sₜ = Sₜ₊₁

Method 可能保持不变。

如果状态发生变化:

Sₜ ≠ Sₜ₊₁

则可能:

Mₜ ≠ Mₜ₊₁

219.12 Method → Behavior

确定 Method 后:

Method
↓
Behavior

但是不能每个 Runtime Step 都无条件创建新 Behavior。

否则:

Step 1 → Behavior A
Step 2 → Behavior B
Step 3 → Behavior C

Behavior 永远无法持续。

因此 Runtime 必须判断:

Current Behavior
+
Current State

是否仍然有效。

如果有效:

继续当前 Behavior

如果失效:

重新生成 Behavior

这是 Behavior Runtime 的核心职责之一。


219.13 Behavior Continuity

建立:

Behavior Continuity

例如:

Behavior A
↓
Approach
↓
Contact
↓
Grasp

Runtime 不应该在每一步重新创建:

Behavior B
Behavior C
Behavior D

而应该:

同一个 Behavior
↓
State Transition
↓
State Transition
↓
State Transition

所以:

Behavior
=
持续存在的运行对象

而:

Behavior State
=
该 Behavior 当前所处的位置

219.14 Runtime 中的 Action

当前 Behavior State:

Move

Runtime 找到:

Action = MoveAction

然后:

Observe
↓
Calculate
↓
Execute

得到:

Feedback

例如:

distance = 5

下一 Step:

distance = 2

Action 自动重新计算:

speed

所以:

Behavior Runtime

实际上给:

Dynamic Action

提供了一个持续运行环境。


219.15 Feedback → State

Action 执行后:

Feedback

不能直接丢弃。

必须进入:

State Update

例如:

Feedback:
contact_detected = true

则:

Behavior State:
Approach
↓
Contact

或者:

Feedback:
grasp_failed = true

则:

Grasp
↓
Failure

因此:

Feedback
↓
State Transition

成为 Runtime 的关键连接。


219.16 Runtime 的完整循环

最终:

             ┌──────────────┐
             │    State     │
             └──────┬───────┘
                    ↓
             ┌──────────────┐
             │    Method    │
             └──────┬───────┘
                    ↓
             ┌──────────────┐
             │   Behavior   │
             └──────┬───────┘
                    ↓
             ┌──────────────┐
             │    Action    │
             └──────┬───────┘
                    ↓
             ┌──────────────┐
             │   Feedback   │
             └──────┬───────┘
                    ↓
             ┌──────────────┐
             │ State Update │
             └──────┬───────┘
                    │
                    └──────────→ State

这就是第219章的核心架构。


219.17 Runtime 与 Behavior State Machine

第217章已经建立:

Behavior State Machine

第219章则让它真正运行:

Behavior Runtime
        ↓
Behavior State Machine
        ↓
Current State
        ↓
Action
        ↓
Feedback
        ↓
Transition

所以:

State Machine
=
定义状态如何转换

Runtime
=
推动状态不断运行

二者不能合并。


219.18 Runtime 与 Dynamic Action

第218章:

Dynamic Action

负责:

根据实时数据调整 Action

第219章:

Behavior Runtime

负责:

持续提供实时运行循环

因此:

Runtime
    ↓
提供 State / Observation
    ↓
Dynamic Action
    ↓
Execute
    ↓
Feedback
    ↓
Runtime

两者形成上下层关系。


219.19 Runtime 与 Failure

如果 Action 返回:

Failure

Runtime 不应该简单:

exit

而应该:

Feedback
↓
Failure State
↓
Evaluate

然后根据系统逻辑:

Recovery

或者:

Re-evaluation

例如:

Move
↓
Obstacle
↓
Failure
↓
Method Evaluation
↓
Avoidance Method
↓
New Behavior

因此 Runtime 成为:

Failure
↓
Recovery

的执行载体。


219.20 Runtime 与 Complete

如果:

Behavior State = Complete

Runtime:

stop current behavior

然后可以把结果交给更高层:

Feedback
↓
State Update
↓
Next Cognition

因此:

Complete

意味着:

Current Behavior Runtime
结束

而不是:

ICAI
结束

219.21 Runtime Context

为了让 Runtime 保持完整,可以建立:

class BehaviorRuntimeContext
{
    protected array $state = [];

    protected array $observation = [];

    protected array $feedback = [];

    protected array $environment = [];

    protected array $variables = [];

    public function setState(
        array $state
    ): void {
        $this->state = $state;
    }

    public function getState(): array
    {
        return $this->state;
    }

    public function setObservation(
        array $observation
    ): void {
        $this->observation = $observation;
    }

    public function getObservation(): array
    {
        return $this->observation;
    }

    public function setFeedback(
        array $feedback
    ): void {
        $this->feedback = $feedback;
    }

    public function getFeedback(): array
    {
        return $this->feedback;
    }
}

Runtime:

BehaviorRuntime
        ↓
BehaviorRuntimeContext
        ↓
State
Observation
Feedback
Environment

这样 Runtime 不需要把所有状态直接塞进 Behavior。


219.22 Runtime History

行为持续运行后,必须保留运行历史。

例如:

Behavior Runtime History

t1
State = Approach

t2
State = Contact

t3
State = Grasp

t4
State = Move

t5
State = Failure

可以保存:

[
    [
        'time' => 1,
        'state' => 'approach'
    ],
    [
        'time' => 2,
        'state' => 'contact'
    ],
    [
        'time' => 3,
        'state' => 'grasp'
    ]
]

这样以后才能实现:

Behavior History
↓
Learning

这一点会直接连接 ICAI 后面的学习体系。


219.23 Runtime 不负责 Learning

这里必须保持边界。

Behavior Runtime:

运行

Learning:

学习

Runtime 可以产生:

Execution History
Feedback History
Failure History

但不应该在第219章直接实现:

Learning Algorithm

正确关系:

Behavior Runtime
↓
History
↓
Learning System

219.24 第219章最核心的工程结构

可以形成:

BehaviorRuntime
│
├── RuntimeContext
│
├── Behavior
│
├── StateMachine
│
├── Action
│
├── Feedback
│
├── History
│
└── Lifecycle

整体:

                 Behavior Runtime
                       │
          ┌────────────┼────────────┐
          ↓            ↓            ↓
       Context     StateMachine    History
          │            │
          ↓            ↓
        State       Behavior
                       │
                       ↓
                     Action
                       │
                       ↓
                   Feedback
                       │
                       └──────→ State

219.25 第219章核心公式

可以正式定义 Runtime:

Rₜ:
Sₜ
→ Mₜ
→ Bₜ
→ Aₜ
→ Fₜ
→ Sₜ₊₁

即:

Sₜ₊₁
=
Update(
    Sₜ,
    Mₜ,
    Bₜ,
    Aₜ,
    Fₜ
)

不断重复:

R₀ → R₁ → R₂ → R₃ → ...

直到:

Complete

或:

Terminate

219.26 第219章最终架构

现在 ICAI 的运行链已经形成:

                 Cognition
                     ↓
                Current State
                     ↓
              Method Evaluation
                     ↓
              Method Selection
                     ↓
                   Method
                     ↓
                  Behavior
                     ↓
              Behavior State
                     ↓
             Dynamic Action
                     ↓
                  Execute
                     ↓
                Observation
                     ↓
                 Feedback
                     ↓
               State Update
                     │
                     └──────────────┐
                                    ↓
                              Current State
                                    ↺

因此第219章真正建立的是:

Behavior Runtime 使 Behavior 从一个静态对象变成一个持续运行中的过程。


219.27 最终定义

Behavior

Behavior = 行为过程

Behavior State

Behavior State = 行为当前阶段

Action

Action = 具体动作

Dynamic Action

Dynamic Action = 根据实时状态调整的动作

Behavior Runtime

Behavior Runtime
=
驱动 Behavior 持续运行的运行时机制

最终:

State
 ↓
Method
 ↓
Behavior
 ↓
Action
 ↓
Feedback
 ↓
State
 ↺

这一步之后,ICAI 的 Behavior 不再是一个被调用后立即结束的对象,而拥有了自己的 Runtime、State、Action、Feedback 和 Continuity

更重要的是,Runtime 本身不创造 Cognition,也不替代 Method、Behavior 或 Action;它只是让这些对象按照 ICAI 的机器逻辑持续运行起来。

Leave a Reply

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