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