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

第218章 Dynamic Action|动态动作

第218章 Dynamic Action|动态动作

第217章已经正式确定:

Method
↓
Behavior
↓
Behavior State
↓
Action

并明确:

Behavior ≠ Action

第218章继续向下建立:

Action 不是预先固定的执行指令,而是可以根据实时 State、Observation 和 Feedback 动态调整的执行单元。

因此:

Behavior
   ↓
Behavior State
   ↓
Dynamic Action
   ↓
Execution
   ↓
Observation
   ↓
Feedback
   ↺

218.1 Dynamic Action 的定义

传统 Action:

Action
↓
执行
↓
结束

Dynamic Action:

Action
↓
执行
↓
观察
↓
判断
↓
调整
↓
继续执行

因此定义:

Dynamic Action 是能够根据实时状态和执行反馈,在执行过程中动态计算其参数、路径、强度、方向、目标或下一步操作的 Action。

核心不是“动作更多”,而是:

Action(t+1)
=
F(
    Action(t),
    State(t),
    Observation(t),
    Feedback(t)
)

218.2 Action 不再是静态指令

例如:

MoveToTarget

传统方式可能是:

目标 = B
速度 = 1.0
方向 = X

一次确定。

Dynamic Action 则是:

目标 = B

当前距离 = 10
↓
速度 = 1.0

当前距离 = 5
↓
速度 = 0.6

当前距离 = 1
↓
速度 = 0.2

因此:

同一个 Action
+
不同实时状态
=
不同执行参数

218.3 Dynamic Action 与 Behavior

必须保持:

Behavior ≠ Action

现在进一步:

Behavior
    ↓
决定行为过程

Behavior State
    ↓
决定当前行为阶段

Dynamic Action
    ↓
根据当前实时状态计算具体动作

例如:

Behavior:
MoveObject

State:
Move

Action:
MoveObjectAction

Action 执行过程中:

Observation
↓
distance
↓
obstacle
↓
velocity
↓
position

不断重新计算:

MoveObjectAction

因此:

Behavior
是连续过程

Action
是过程中的动态执行单元

218.4 Action 的实时状态输入

Dynamic Action 至少可以接收:

Current State
Observation
Target State
Environment State
Previous Action Result
Constraints

形成:

             Current State
                   │
                   ▼
Observation ──→ Dynamic Action ←── Constraint
                   │
                   ▼
              Execute
                   │
                   ▼
                Result
                   │
                   ▼
               Feedback
                   │
                   └──────→ Dynamic Action

218.5 Dynamic Action 的核心对象

可以建立:

class DynamicAction extends Action
{
    protected array $parameters = [];

    protected array $runtimeState = [];

    protected array $observations = [];

    protected array $feedback = [];

    protected string $status = 'ready';

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

    public function observe(
        array $observation
    ): void {
        $this->observations[] = $observation;
    }

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

    public function calculateParameters(): array
    {
        return $this->parameters;
    }
}

第一版不需要把复杂控制算法全部写进去。

先建立:

Action
├── parameters
├── runtimeState
├── observation
├── feedback
└── calculation

218.6 Dynamic Action 的参数计算

普通 Action:

Move(speed=1)

Dynamic Action:

speed = calculate(
    distance,
    obstacle,
    current_velocity,
    target
)

例如:

public function calculateParameters(): array
{
    $distance =
        $this->runtimeState['distance']
        ?? 0;

    if ($distance > 10) {
        $speed = 1.0;
    } elseif ($distance > 3) {
        $speed = 0.5;
    } else {
        $speed = 0.2;
    }

    return [
        'speed' => $speed
    ];
}

这里真正发生的是:

Runtime State
↓
Parameter Calculation
↓
Action Parameters

218.7 Dynamic Action 不等于随机动作

必须明确:

Dynamic ≠ Random

Dynamic Action 的变化必须具有计算依据:

State
+
Observation
+
Constraint
+
Feedback

因此:

State A → Parameter A
State B → Parameter B

而不是:

State A → 随机 Parameter

这使 ICAI 的 Dynamic Action 保持机器逻辑上的可解释性和可复现性。


218.8 Action Execution Cycle

Dynamic Action 的基本生命周期:

Prepare
   ↓
Observe
   ↓
Calculate
   ↓
Execute
   ↓
Observe
   ↓
Evaluate
   ↓
Adjust
   ↓
Execute Again

可以形成:

         ┌───────────────┐
         │   Observe     │
         └───────┬───────┘
                 ↓
         ┌───────────────┐
         │   Calculate   │
         └───────┬───────┘
                 ↓
         ┌───────────────┐
         │    Execute    │
         └───────┬───────┘
                 ↓
         ┌───────────────┐
         │    Feedback   │
         └───────┬───────┘
                 ↓
             Adjust?
              /     \
            Yes      No
             │        │
             └──→─────┘

这就是 Dynamic Action 的核心。


218.9 Action Adjustment

动作调整可以发生在不同层面。

参数调整

speed
force
duration
threshold

方向调整

direction
trajectory
target_position

执行顺序调整

Action A
↓
Action B

变成:

Action A
↓
Action C
↓
Action B

动作终止

Continue
↓
Stop

动作替换

Action A
↓
Action B

因此 Dynamic Action 不仅仅是:

调整参数

而可以调整:

执行方式

218.10 Dynamic Action 与 Behavior State

行为状态决定 Action 的上下文。

例如:

Behavior:
MoveObject

State:
Approach

Action:

MoveTowardTarget

进入:

Contact

Action 变成:

DetectContact

进入:

Grasp

Action:

EstablishControl

因此:

Behavior State
↓
Action Selection
↓
Dynamic Action

注意这里仍然不能混淆:

Behavior State

不是 Action。


218.11 Dynamic Action 可以持续调整

例如:

Move

当前:

distance = 20

执行:

speed = 1.0

实时观察:

distance = 10

调整:

speed = 0.7

再次观察:

obstacle = detected

调整:

direction = alternative
speed = 0.3

继续:

distance = 1

调整:

speed = 0.1

最终:

target_reached = true

Action:

Complete

整个过程中:

Action 没有被简单地执行一次。

Action 本身不断重新计算。

这就是:

Dynamic Action

218.12 Action 与 Feedback

第218章开始建立:

Action
↓
Feedback
↓
Action Adjustment

这意味着 Feedback 不只用于:

Behavior State

也可以直接影响:

Action

形成两个不同层级的反馈:

Feedback
   │
   ├──→ Action Adjustment
   │
   └──→ Behavior State Transition

例如:

障碍物出现

可能导致:

Action:
改变方向

而:

目标消失

可能导致:

Behavior State:
Failure

因此:

Action-level response

和:

Behavior-level response

必须保持区分。


218.13 Dynamic Action 的三个层次

可以把 Dynamic Action 分成三层:

Level 1:Parameter Adaptation

Action 不变
参数改变

例如:

Move
speed:
1.0 → 0.5 → 0.2

Level 2:Execution Adjustment

Action 类型不变
执行方式改变

例如:

Move
trajectory A
↓
trajectory B

Level 3:Action Replacement

当前 Action
↓
新 Action

例如:

Move
↓
ObstacleDetected
↓
AvoidObstacle

第三层已经开始接近:

Action Selection

因此必须为后续章节保留边界。


218.14 Dynamic Action 与 Action Selection

两者不能混为一谈。

Action Selection

解决:

当前应该执行哪个 Action?

而:

Dynamic Action

解决:

已经执行的 Action,面对实时变化应该如何调整?

例如:

Behavior State = Move

首先:

Action Selection
↓
选择 MoveAction

然后:

MoveAction
↓
实时观察
↓
调整速度
↓
调整方向
↓
继续执行

所以:

Action Selection
→ 选 Action

Dynamic Action
→ 调整 Action

218.15 Dynamic Action 与 Device

最终 Action 才与 Device 建立执行接口:

Dynamic Action
      ↓
Execution Command
      ↓
Device
      ↓
Physical / Digital Result

例如:

Dynamic Action
{
    direction: 0.42,
    speed: 0.3
}

转换为:

Device Command

然后 Device 返回:

Observation

形成:

Dynamic Action
↓
Device
↓
Observation
↓
Dynamic Action

218.16 Action Runtime

因此 Action 需要运行时状态:

Action Runtime

例如:

{
    "status": "executing",
    "start_time": 123456,
    "elapsed": 2.4,
    "progress": 0.72,
    "parameters": {
        "speed": 0.3
    },
    "observation": {
        "distance": 1.8
    }
}

这样 Action 就拥有:

Identity
+
Definition
+
Runtime State

而不是简单:

Action = function()

218.17 Dynamic Action 的基本接口

可以建立:

interface DynamicActionInterface
{
    public function observe(
        array $observation
    ): void;

    public function updateState(
        array $state
    ): void;

    public function calculateParameters():
        array;

    public function adjust(): void;

    public function execute(): array;

    public function isComplete(): bool;
}

这样任何 Dynamic Action 都遵循:

Observe
↓
Update
↓
Calculate
↓
Adjust
↓
Execute

218.18 一个完整 Dynamic Action

class MoveAction implements DynamicActionInterface
{
    protected array $state = [];

    protected array $observation = [];

    protected array $parameters = [];

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

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

    public function calculateParameters():
        array
    {
        $distance =
            $this->observation['distance']
            ?? 0;

        $speed = min(
            1.0,
            max(0.1, $distance / 10)
        );

        $this->parameters = [
            'speed' => $speed
        ];

        return $this->parameters;
    }

    public function adjust(): void
    {
        $this->calculateParameters();
    }

    public function execute(): array
    {
        return [
            'action'     => 'move',
            'parameters' => $this->parameters
        ];
    }

    public function isComplete(): bool
    {
        return
            ($this->observation['target_reached']
            ?? false) === true;
    }
}

这里已经形成最小的动态动作模型:

Observation
↓
Parameter Calculation
↓
Adjustment
↓
Execution
↓
New Observation

218.19 Dynamic Action 与实时性

这里的“实时”不一定意味着毫秒级实时。

ICAI 中:

Real-Time

更基础的定义应该是:

动作参数依据当前可获得的最新状态重新计算,而不是完全依赖动作开始之前的固定参数。

因此:

State₀
↓
Action₀
↓
Observation₁
↓
Action₁
↓
Observation₂
↓
Action₂

这是:

State-dependent Action

而不是:

Predefined Action

218.20 第218章最终模型

现在 ICAI 执行链进一步变成:

Method
   ↓
Behavior
   ↓
Behavior State
   ↓
Action Selection
   ↓
Dynamic Action
   ↓
Execution
   ↓
Observation
   ↓
Feedback
   ├──────────────→ Dynamic Action Adjustment
   │
   └──────────────→ Behavior State Transition

核心关系:

Behavior
=
行为过程

Behavior State
=
行为阶段

Action
=
具体动作

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

218.21 本章核心公式

可以正式定义:

Aₜ = F(Sₜ, Oₜ, Cₜ, Aₜ₋₁)

其中:

Aₜ  = 当前 Action
Sₜ  = 当前 State
Oₜ  = 当前 Observation
Cₜ  = 当前 Constraint
Aₜ₋₁ = 上一次 Action 状态

执行后:

Oₜ₊₁

产生新的反馈:

Feedbackₜ₊₁

于是:

Aₜ
 ↓
Execute
 ↓
Oₜ₊₁
 ↓
Feedback
 ↓
Aₜ₊₁

形成动态动作循环。


218.22 第218章最终确定的边界

Method
    ↓
“采用什么方法”

Behavior
    ↓
“进行什么行为过程”

Behavior State
    ↓
“行为现在处于哪个阶段”

Action Selection
    ↓
“当前具体执行哪个动作”

Dynamic Action
    ↓
“这个动作根据实时状态如何调整”

Device
    ↓
“实际执行”

因此第218章最核心的定义不是“动作可以变化”,而是:

Action 从一个预定义的静态执行指令,升级为一个能够读取实时状态、计算当前参数、执行、接收反馈并再次调整的动态执行对象。

最终形成:

Behavior
    ↓
Behavior State
    ↓
Dynamic Action
    ↓
Observe
    ↓
Calculate
    ↓
Execute
    ↓
Feedback
    ↺

这一步完成后,ICAI 的 Behavior → Action 已经从静态调用关系变成了一个真正的状态驱动执行循环

Leave a Reply

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