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

第29章 动作理论

第29章 动作理论

29.1 动作的定义

动作(Action)是行为结构中能够由主体针对特定对象,在一定条件下,通过明确参数产生直接结果和状态变化的基本执行单位。

行为是由多个动作按照目标、条件、顺序和结果组织形成的活动结构,而动作是行为内部最基本的执行结构。

因此:

动作⊂行为动作\subset行为

但:

动作≠行为动作\neq行为

动作关注的是一次具体的操作活动,而行为关注的是由多个动作构成的完整活动过程。

动作可以形式化表示为:

A=(Sub,O,T,C,P,R,S)A=(Sub,O,T,C,P,R,S)

其中:

  • AA:动作(Action);
  • SubSub:动作主体(Subject),表示动作执行者;
  • OO:动作对象(Object),表示动作作用的对象;
  • TT:动作类型(Type),表示动作属于什么操作类型;
  • CC:动作条件(Condition),表示动作能够执行所必须满足的条件;
  • PP:动作参数(Parameters),表示动作执行时所需要的具体参数;
  • RR:动作结果(Result),表示动作直接产生的结果;
  • SS:动作状态(State),表示动作执行前、执行中和执行后的状态。

动作的基本形成关系为:

主体+对象+类型+条件+参数→动作主体+对象+类型+条件+参数 \rightarrow 动作

动作执行后:

动作→结果→状态变化动作\rightarrow结果\rightarrow状态变化

因此完整动作过程可以表示为:

动作条件→动作形成→动作执行→动作结果→状态变化动作条件 \rightarrow 动作形成 \rightarrow 动作执行 \rightarrow 动作结果 \rightarrow 状态变化

动作不是一个抽象的“做”,而是具有明确主体、对象、类型、条件、参数和结果的结构化操作。


29.2 动作对象

动作对象(Action Object)是动作直接作用、操作、改变、读取或控制的对象。

没有明确对象的动作通常无法形成完整的对象化动作结构。

例如:

拿取(杯子)拿取(杯子)

其中“杯子”就是动作对象。

又如:

移动(杯子,桌面)移动(杯子,桌面)

这里动作同时涉及被操作对象和目标位置。

动作对象可以表示为:

Oa=(Id,Class,Instance,State,Attributes)O_a=(Id,Class,Instance,State,Attributes)

其中:

  • IdId:对象标识;
  • ClassClass:对象类别;
  • InstanceInstance:对象实例;
  • StateState:对象当前状态;
  • AttributesAttributes:对象属性。

动作与对象之间形成:

Action→ObjectAction\rightarrow Object

但动作对象不是简单的数据引用,而是动作产生实际作用的认知对象。

例如:

A=打开(门)A=打开(门)

“门”不仅是动作对象,还需要具有:

Class=门Class=门

以及:

State=关闭State=关闭

才能判断“打开”这一动作是否适用。

因此动作对象匹配至少包括:

ObjectMatch=ClassMatch∧InstanceMatch∧StateMatchObjectMatch= ClassMatch \land InstanceMatch \land StateMatch

其中:

  • ClassMatchClassMatch:对象类别是否匹配;
  • InstanceMatchInstanceMatch:对象实例是否匹配;
  • StateMatchStateMatch:对象当前状态是否满足动作要求。

例如:

打开(门)打开(门)

如果对象实际上是“窗户”,则:

ClassMatch=0ClassMatch=0

如果对象是正确的门,但已经处于完全打开状态,则可能:

StateMatch=0StateMatch=0

因此动作的形成不仅需要找到对象,还必须确认对象适合该动作。


29.3 动作条件

动作条件(Action Condition)是动作能够形成和执行所必须满足的状态、环境、对象或能力条件。

动作不是任何时候都可以执行。

因此可以定义:

Ca=(Co,Cs,Ce,Cc,Ct)C_a=(C_o,C_s,C_e,C_c,C_t)

其中:

  • CoC_o:对象条件;
  • CsC_s:状态条件;
  • CeC_e:环境条件;
  • CcC_c:能力条件;
  • CtC_t:时间或时序条件。

动作可执行条件可以表示为:

ActionApplicable=Co∧Cs∧Ce∧Cc∧CtActionApplicable = C_o \land C_s \land C_e \land C_c \land C_t

只有当所有必要条件满足时:

ActionApplicable=1ActionApplicable=1

动作才可以进入执行阶段。

例如:

打开(门)打开(门)

其条件可能是:

对象=门对象=门 状态=关闭状态=关闭 主体具有打开能力主体具有打开能力 环境允许操作环境允许操作

于是:

门+关闭状态+操作能力+允许环境→打开动作可执行门 + 关闭状态 + 操作能力 + 允许环境 \rightarrow 打开动作可执行

如果门已经损坏:

State=故障State=故障

那么:

ActionApplicable=0ActionApplicable=0

动作不能正常执行。

因此,动作条件是连接“动作结构”和“实际执行状态”的重要结构。


29.4 动作参数

动作参数(Action Parameters)是动作执行过程中用于确定动作具体方式、范围、程度、位置、数量、速度或其他操作特征的数据。

动作类型通常只能说明“做什么”,动作参数进一步说明“具体怎么做”。

例如:

移动(杯子)移动(杯子)

只能说明存在“移动”动作。

如果进一步表示:

移动(杯子,位置=(10,20),速度=2)移动(杯子,位置=(10,20),速度=2)

则动作已经具有具体参数。

可以表示:

P=(p1,p2,…,pn)P=(p_1,p_2,\ldots,p_n)

其中每一个 pip_i 都是动作执行所需要的参数。

动作整体可以表示为:

A=(Sub,O,T,C,P,R,S)A=(Sub,O,T,C,P,R,S)

其中:

P={p1,p2,…,pn}P=\{p_1,p_2,\ldots,p_n\}

参数可以分为几类。

29.4.1 对象参数

用于指定动作作用对象:

Po=ObjectP_o=Object

例如:

抓取(杯子)抓取(杯子)

29.4.2 位置参数

用于确定动作发生的位置或目标位置:

Pp=(x,y,z)P_p=(x,y,z)

例如:

移动(杯子,桌面位置)移动(杯子,桌面位置)

29.4.3 数量参数

用于表示操作数量:

Pq=QuantityP_q=Quantity

例如:

取水(500ml)取水(500ml)

29.4.4 程度参数

用于表示动作强度、幅度或程度:

Pd=DegreeP_d=Degree

29.4.5 时间参数

用于表示动作发生时间、持续时间或执行期限:

Pt=(Start,Duration,End)P_t=(Start,Duration,End)

因此:

动作类型+动作参数→具体动作动作类型+动作参数 \rightarrow 具体动作

动作参数使抽象动作转换为具有明确执行规格的具体动作。


29.5 动作结果

动作结果(Action Result)是动作执行后直接产生的对象变化、状态变化、关系变化或其他可识别结果。

动作不能只描述“执行”,还必须能够描述执行之后发生了什么。

因此:

Action→ResultAction\rightarrow Result

动作结果可以表示为:

R=(Type,Object,Value,StateChange)R=(Type,Object,Value,StateChange)

其中:

  • TypeType:结果类型;
  • ObjectObject:结果涉及的对象;
  • ValueValue:结果值;
  • StateChangeStateChange:状态变化。

例如:

打开(门)打开(门)

执行前:

Statebefore=关闭State_{before}=关闭

执行后:

Stateafter=打开State_{after}=打开

于是:

Result:关闭→打开Result: 关闭\rightarrow打开

因此动作结果通常表现为状态变化:

Sbefore→ActionSafterS_{before} \xrightarrow{Action} S_{after}

如果动作没有产生预期结果,则需要进一步判断动作是否成功。

可以定义:

ActionSuccess=Match(Result,ExpectedResult)ActionSuccess= Match(Result,ExpectedResult)

其中:

  • ResultResult:实际结果;
  • ExpectedResultExpectedResult:预期结果。

当:

ActionSuccess=1ActionSuccess=1

表示动作结果满足预期。

当:

ActionSuccess=0ActionSuccess=0

表示动作没有达到预期结果。

因此动作结果不仅用于记录动作执行后的变化,也用于后续行为判断和状态更新。


29.6 动作状态

动作状态(Action State)表示动作在执行过程中的状态变化。

动作并不是瞬间完成的逻辑点,而可以具有完整生命周期:

准备→可执行→执行中→完成准备 \rightarrow 可执行 \rightarrow 执行中 \rightarrow 完成

也可以出现:

准备→条件不满足→等待准备 \rightarrow 条件不满足 \rightarrow 等待

或者:

执行中→失败执行中 \rightarrow 失败

因此动作状态可以定义为:

Sa=(Current,Previous,Next,Time)S_a=(Current,Previous,Next,Time)

其中:

  • CurrentCurrent:当前动作状态;
  • PreviousPrevious:动作之前的状态;
  • NextNext:动作完成后预期状态;
  • TimeTime:状态发生时间。

动作状态集合可以定义为:

AS={Ready,Applicable,Executing,Completed,Failed,Cancelled}AS=\{Ready,Applicable,Executing,Completed,Failed,Cancelled\}

分别表示:

  • Ready:准备状态;
  • Applicable:可执行状态;
  • Executing:执行中;
  • Completed:执行完成;
  • Failed:执行失败;
  • Cancelled:执行取消。

动作状态转换可以表示为:

Ready→Applicable→Executing→CompletedReady \rightarrow Applicable \rightarrow Executing \rightarrow Completed

异常情况下:

Executing→FailedExecuting \rightarrow Failed

或者:

Executing→CancelledExecuting \rightarrow Cancelled

因此,动作状态本身也是动态结构。


29.7 动作的完整结构

综合动作对象、条件、参数、结果和状态,可以建立完整动作模型:

A=(Sub,O,T,C,P,R,S)A=(Sub,O,T,C,P,R,S)

动作形成:

Sub+O+T+C+P→ASub+O+T+C+P \rightarrow A

动作执行:

A→RA \rightarrow R

动作状态:

S0→AS1S_0 \xrightarrow{A} S_1

因此完整动作过程可以统一表示为:

对象→条件判断→参数确定→动作形成→动作执行→结果→状态变化对象 \rightarrow 条件判断 \rightarrow 参数确定 \rightarrow 动作形成 \rightarrow 动作执行 \rightarrow 结果 \rightarrow 状态变化

进一步:

St→ActionR→St+1S_t \xrightarrow{Action} R \rightarrow S_{t+1}

其中 StS_t 表示动作执行前状态,St+1S_{t+1} 表示动作执行后的状态。

这说明动作是状态变化的直接操作单位。


29.8 动作与行为的结构关系

行为由一个或多个动作组成:

B={A1,A2,…,An}B=\{A_1,A_2,\ldots,A_n\}

但行为不仅是动作集合,还需要包含动作之间的结构关系。

例如:

A1→A2→A3A_1\rightarrow A_2\rightarrow A_3

表示动作顺序。

也可以存在条件分支:

A1→{A2A3A_1 \rightarrow \begin{cases} A_2\\ A_3 \end{cases}

还可以形成循环:

A1→A2→A1A_1\rightarrow A_2\rightarrow A_1

因此行为实际上是对动作进行结构化组织。

可以表示为:

Behavior=ActionSet+ActionRelation+Goal+Condition+ResultBehavior=ActionSet+ActionRelation+Goal+Condition+Result

动作解决的是:

当前执行什么具体操作?

行为解决的是:

为实现目标,需要组织哪些动作形成完整活动?

所以:

动作→行为动作\rightarrow行为

是由基本操作向完整活动的结构提升。


29.9 动作与方法的关系

方法规定实现目标的方式,动作则是方法中的具体操作单元。

因此:

Method→ActionMethod\rightarrow Action

例如一个“取水方法”:

M=寻找水源→接近水源→获取容器→取水M= 寻找水源 \rightarrow 接近水源 \rightarrow 获取容器 \rightarrow 取水

其中每一个具体操作都可以被表示为动作:

A1=寻找(水源)A_1=寻找(水源) A2=接近(水源)A_2=接近(水源) A3=获取(容器)A_3=获取(容器) A4=取水(水)A_4=取水(水)

于是:

M→{A1,A2,A3,A4}M\rightarrow \{A_1,A_2,A_3,A_4\}

方法规定动作的组织结构,而动作负责表达具体操作。

因此:

方法=动作组织规则方法=动作组织规则 动作=具体操作单元动作=具体操作单元

进一步形成:

方法→动作组织→行为方法 \rightarrow 动作组织 \rightarrow 行为


29.10 动作的动态闭环

动作执行不是认知过程的终点。

动作会产生结果,结果改变对象或场景状态,新的状态又成为后续动作的条件。

因此:

状态t→动作t→结果t→状态t+1状态_t \rightarrow 动作_t \rightarrow 结果_t \rightarrow 状态_{t+1}

然后:

状态t+1→动作t+1状态_{t+1} \rightarrow 动作_{t+1}

形成连续动作过程:

A1→S1→A2→S2→A3→S3A_1 \rightarrow S_1 \rightarrow A_2 \rightarrow S_2 \rightarrow A_3 \rightarrow S_3

这意味着后续动作是否能够执行,取决于前一个动作产生的状态。

例如:

拿起杯子→杯子状态=手中拿起杯子 \rightarrow 杯子状态=手中

只有在:

杯子状态=手中杯子状态=手中

成立后,后续动作:

饮水(杯子)饮水(杯子)

才可能满足其对象和状态条件。

因此:

动作结果→新状态→下一动作条件动作结果 \rightarrow 新状态 \rightarrow 下一动作条件

构成动作之间的重要连接机制。


29.11 动作的工程映射

在认知工程中,动作应当作为独立的结构化对象进行表示。

可以建立:

Action
├── Subject
├── Object
├── Type
├── Condition
├── Parameters
├── Result
└── State

对应的工程对象可以包括:

Action
ActionObject
ActionCondition
ActionParameter
ActionResult
ActionState
ActionMatcher
ActionBuilder
ActionExecutor
ActionStateManager

其中:

Action负责保存动作整体结构。

ActionObject负责保存动作对象。

ActionCondition负责判断动作条件。

ActionParameter负责管理动作参数。

ActionResult负责记录动作结果。

ActionState负责记录动作生命周期状态。

ActionMatcher负责动作匹配。

ActionBuilder负责根据方法和当前状态形成具体动作。

ActionExecutor负责执行动作。

ActionStateManager负责维护动作状态变化。

工程运行关系可以表示为:

Method→ActionBuilder→Action→ActionCondition→ActionExecutor→ActionResult→ActionStateMethod \rightarrow ActionBuilder \rightarrow Action \rightarrow ActionCondition \rightarrow ActionExecutor \rightarrow ActionResult \rightarrow ActionState

进一步进入行为结构:

Method→Action→Behavior→SceneStateChangeMethod \rightarrow Action \rightarrow Behavior \rightarrow SceneStateChange


29.12 动作的统一理论模型

通过本章可以建立动作的统一模型:

A=(Sub,O,T,C,P,R,S)A=(Sub,O,T,C,P,R,S)

其核心结构为:

主体+对象+动作类型+条件+参数→动作主体 + 对象 + 动作类型 + 条件 + 参数 \rightarrow 动作

执行之后:

动作→结果→状态变化动作 \rightarrow 结果 \rightarrow 状态变化

完整表示:

Actiont:(Sub,O,T,C,P,St)→Rt→St+1Action_t : (Sub,O,T,C,P,S_t) \rightarrow R_t \rightarrow S_{t+1}

而动作又属于行为:

A⊂BA\subset B

多个动作按照一定关系形成行为:

{A1,A2,…,An}+Relation+Goal→Behavior\{A_1,A_2,\ldots,A_n\} + Relation + Goal \rightarrow Behavior

因此可以建立完整层级:

知识→方法→行为→动作→结果→状态知识 \rightarrow 方法 \rightarrow 行为 \rightarrow 动作 \rightarrow 结果 \rightarrow 状态

其中:

知识=认知基础知识=认知基础 方法=实现结构方法=实现结构 行为=活动结构行为=活动结构 动作=执行单元动作=执行单元 结果=动作产生的直接变化结果=动作产生的直接变化 状态=动作结果形成的对象或环境状态状态=动作结果形成的对象或环境状态


29.13 本章总结

动作(Action)是行为中的基本执行单位,是主体针对对象,在一定条件下,根据具体参数执行某种操作并产生直接结果和状态变化的结构。

动作的核心结构为:

A=(Sub,O,T,C,P,R,S)A=(Sub,O,T,C,P,R,S)

其中对象决定“作用于什么”,条件决定“什么时候可以做”,参数决定“具体如何操作”,结果决定“产生了什么”,状态决定“动作处于什么阶段以及对象发生了什么变化”。

动作与行为的关系是:

动作⊂行为动作\subset行为

动作与方法的关系是:

方法→动作组织方法\rightarrow动作组织

动作与状态的关系是:

状态t→动作状态t+1状态_t \xrightarrow{动作} 状态_{t+1}

动作的完整动态过程为:

动作条件→动作形成→动作执行→动作结果→状态变化动作条件 \rightarrow 动作形成 \rightarrow 动作执行 \rightarrow 动作结果 \rightarrow 状态变化

多个动作进一步形成行为:

A1→A2→⋯→An→BehaviorA_1\rightarrow A_2\rightarrow\cdots\rightarrow A_n \rightarrow Behavior

因此,动作是连接方法、行为、对象、结果和状态的基础执行结构,也是后续建立“动作匹配理论”“动作选择理论”和“动作执行理论”的基础。

Leave a Reply

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