第33章 行为执行理论
一、提出背景
第31章建立了复杂行为形成理论,说明复杂行为由简单行为、行为组合、行为序列、条件行为、状态驱动行为以及多对象协同行为形成。第32章进一步建立复杂行为模拟理论,说明复杂行为可以通过行为分解、行为组合、动态调整和连续行为形成转换为结构化的机器行为。
但是,行为形成和行为模拟仍然属于行为的结构层。一个行为被确定以后,还必须解决一个更加具体的问题:行为如何转化为实际动作,动作在什么条件下可以执行,执行过程中处于什么状态,以及最终产生什么结果。
因此,本章建立行为执行理论。
行为执行的基本过程为:
行为→动作→执行条件→执行→执行状态→执行结果→状态变化
其中,行为确定执行方向,动作确定具体操作,执行条件决定动作是否能够发生,执行状态描述动作当前所处阶段,执行结果描述动作执行以后产生的实际变化。
行为执行理论由此成为行为结构进入实际运行过程的中间层。
二、行为 → 动作
2.1 行为的执行结构
行为是具有目标、对象、条件、方法、动作、过程、状态和结果的完整结构。
定义行为:
B=(Sub,O,G,C,M,A,P,S,R)
其中:
Sub:行为主体;O:行为对象;G:行为目标;C:行为条件;M:行为方法;A:行为动作;P:行为过程;S:行为状态;R:行为结果。
其中 A 是行为进入执行层之后的具体操作集合。
因此:
行为≠动作
行为表示“为了目标而进行的一项完整活动”,动作表示该行为内部可以实际执行的操作单元。
例如:
拿起杯子
是一个行为,而:
移动手→接近杯子→接触杯子→抓握→提升
是构成该行为的动作过程。
2.2 行为动作化
行为必须经过动作化才能进入执行层。
可以表示为:
B→{A1,A2,...,An}
其中:
A_i=(Sub,O,T,C,P,R,S)
T 表示动作类型。
行为动作化实际上是将行为中的方法进一步具体化:
目标→方法→动作
例如:
获得杯子
→ 抓取方法
→ 定位→接触→抓握→提升
因此,行为到动作不是简单的数据转换,而是一个行为结构向执行结构的转换过程。
2.3 行为与动作的层级关系
行为可以包含一个动作,也可以包含多个动作。
简单行为:
B→A
复杂行为:
B→A1→A2→A3→...→An
因此:
动作⊂行为
但是,行为不能简单理解为动作集合,因为行为还包含目标、条件、方法、状态和结果。
所以:
Behavior={Goal,Object,Condition,Method,Actions,State,Result}
而:
Action={Object,Type,Condition,Parameter,Result}
二者处于不同的结构层级。
三、动作 → 执行
3.1 执行的定义
动作是已经确定的操作结构,但动作本身尚未发生。
**执行(Execution)**是动作从“待执行结构”进入“实际运行过程”的过程。
因此:
Action→Execution
表示动作进入执行过程。
执行不是动作本身,而是动作发生的过程。
可以定义执行结构:
E=(A,C,S,P,R)
其中:
A:待执行动作;C:执行条件;S:执行状态;P:执行过程;R:执行结果。
由此:
动作→执行→结果
3.2 动作进入执行
动作进入执行之前必须首先经过条件判断:
Action→ConditionCheck
如果条件满足:
ConditionCheck=1
则:
Action→Executable→Executing
如果条件不满足:
Action→NotExecutable
因此:
动作形成→条件检查→执行判断→执行
这说明动作并不是生成以后立即执行,而是存在一个明确的执行入口。
3.3 执行过程
动作执行具有过程性:
Ready→Checking→Executing→Completed
其中:
Ready:动作已经准备完成;Checking:正在检查执行条件;Executing:动作正在执行;Completed:动作执行完成。
异常情况下可以形成:
Checking→Failed
或:
Executing→Failed
以及:
Executing→Paused
Executing→Cancelled
因此执行是一个状态转换过程,而不是单一事件。
四、执行条件
4.1 执行条件的定义
**执行条件(Execution Condition)**是决定一个动作当前是否具备执行资格的一组结构化条件。
定义:
C_e=(C_o,C_s,C_p,C_r,C_t)
其中:
C_o:对象条件;C_s:状态条件;C_p:参数条件;C_r:关系条件;C_t:时序条件。
因此:
Executable(A)=C_o∧C_s∧C_p∧C_r∧C_t
当结果为 1 时,表示动作满足执行条件。
4.2 对象条件
对象条件用于判断动作对象是否正确。
例如:
ActionObject=杯子
需要满足:
ObjectMatch(Target,Cup)=1
如果目标对象错误:
ObjectMatch=0
则:
Action→NotExecutable
因此:
对象匹配→动作执行资格
4.3 状态条件
动作通常依赖当前状态。
例如某个动作要求:
杯子位于桌面
则当前状态必须满足:
S⊨C_s
其中 ⊨ 表示“状态满足条件”。
如果:
S⊭C_s
则动作不能执行。
因此:
当前状态→条件判断→执行资格
4.4 参数条件
动作参数决定具体动作如何发生。
定义:
P={p1,p2,...,pn}
执行前必须判断:
ParameterMatch(P,C_p)=1
参数可能包括:
位置
距离
方向
速度
力度
等。
如果参数不满足要求:
ParameterMatch=0
则动作不能正常进入执行阶段。
4.5 关系条件
某些动作必须建立在对象之间特定关系存在的基础上。
例如:
R(O1,O2)=连接
或者:
R(O1,O2)=位于上方
如果动作要求该关系存在,则:
RelationMatch(R,C_r)=1
才可以执行。
因此:
对象→关系→动作条件
4.6 时序条件
某些动作只有在特定行为顺序下才能执行。
例如:
B1→B2→B3
只有 B1 完成以后,B2 才能开始。
因此:
Result(B1)→Condition(B2)
时序条件保证行为执行具有连续结构。
五、执行状态
5.1 执行状态的定义
**执行状态(Execution State)**是描述动作当前执行阶段的状态结构。
定义:
S_e=(A,Status,T,P,R)
其中:
A:当前动作;Status:执行状态;T:时间信息;P:执行进度;R:当前结果。
执行状态表示的是“动作现在处于什么阶段”。
5.2 基本执行状态
可以建立以下执行状态:
Ready
→ 动作已经形成,等待执行。
Checking
→ 检查执行条件。
Executable
→ 条件满足,可以执行。
Executing
→ 动作正在执行。
Completed
→ 动作已经完成。
Failed
→ 动作执行失败。
Paused
→ 动作暂时停止。
Cancelled
→ 动作被取消。
形成基本状态链:
Ready→Checking→Executable→Executing→Completed
异常路径:
Checking→Failed
Executing→Failed
Executing→Paused
Executing→Cancelled
5.3 执行状态转换
执行状态可以表示为:
S_e(t)→S_e(t+1)
例如:
Ready→Checking
表示开始检查;
Checking→Executable
表示条件满足;
Executable→Executing
表示开始实际执行;
Executing→Completed
表示执行成功完成。
因此:
执行状态变化→执行过程
5.4 执行状态与行为状态
动作状态会影响行为状态。
如果一个行为包含:
B={A1,A2,A3}
当:
A1→Completed
则可以进入:
A2
如果:
A1→Failed
则可能发生:
Behavior→Failed
或者:
Behavior→Adjustment
因此:
动作状态→行为状态→下一动作
六、执行结果
6.1 执行结果的定义
**执行结果(Execution Result)**是动作执行以后产生的实际对象变化、状态变化或结果值。
定义:
R=(Type,O,V,S_before,S_after)
其中:
Type:结果类型;O:结果相关对象;V:结果值;S_before:执行前状态;S_after:执行后状态。
核心关系:
S_before→Action→S_after
因此执行结果不是简单的“成功”或“失败”,而是对执行后状态的结构化描述。
6.2 预期结果与实际结果
动作通常具有预期结果:
R_expected
执行以后产生实际结果:
R_actual
二者进行匹配:
ResultMatch=Match(R_actual,R_expected)
如果:
ResultMatch=1
则:
ActionSuccess=1
如果:
ResultMatch=0
则:
ActionSuccess=0
因此:
执行→实际结果→结果匹配→执行判断
6.3 结果与状态变化
动作的最终意义在于产生状态变化:
S_before→Action→S_after
因此:
Result→StateChange
状态变化又成为下一行为的输入:
StateChange→NextBehavior
由此形成:
动作→执行→结果→状态变化→下一行为
6.4 执行结果的类型
执行结果可以至少分为:
Success
表示达到预期结果。
Failure
表示没有达到预期结果。
Partial
表示只完成部分目标。
Cancelled
表示执行被取消。
NoChange
表示动作执行后没有产生预期状态变化。
这些结果都可以作为下一行为判断的依据。
七、行为执行完整模型
将本章五个核心部分统一,可以建立:
B→A→C_e→E→S_e→R
即:
行为→动作→执行条件→执行→执行状态→执行结果
再加入状态变化:
B→A→C_e→E→S_e→R→S_{t+1}
其中:
B:行为;A:动作;C_e:执行条件;E:执行过程;S_e:执行状态;R:执行结果;S_{t+1}:执行后的新状态。
完整闭环为:
行为→动作→条件判断→执行→执行状态→执行结果→状态变化
并进一步进入:
状态变化→下一行为
因此:
B_t→A_t→E_t→R_t→S_{t+1}→B_{t+1}
这使行为执行形成连续动态结构。
八、复杂行为的执行
复杂行为:
CB={B1,B2,...,Bn}
每一个行为又可以进一步分解为动作:
B1→{A11,A12,...}
B2→{A21,A22,...}
因此复杂行为执行可以展开为:
CB→B1→A11→执行→R11→S1
→ A12→执行→R12→S2
→ B2→A21→执行→R21→S3
→ B3→...
最终:
CB→Result(CB)
如果某个动作失败:
Ai→Failed
则需要判断:
Retry
或:
Replace
或:
Adjust
或:
Terminate
因此复杂行为执行与第32章的动态调整机制形成直接连接。
九、行为执行中的动态变化
执行不是完全固定的。
在执行过程中:
对象可能变化
状态可能变化
参数可能变化
关系可能变化
执行结果可能变化
因此:
Execution_t→StateChange→Reevaluation
重新判断:
ObjectMatch
StateMatch
ParameterMatch
RelationMatch
如果仍然满足:
Applicable=1
则继续执行。
如果不满足:
Applicable=0
则进入:
BehaviorAdjustment
由此形成:
执行→状态变化→重新判断→继续/调整→执行
这使行为执行具有动态性。
十、行为执行工程模型
从工程角度,可以将本章理论映射为以下对象。
1. Behavior
表示完整行为。
Behavior→Method→Action
2. Action
表示基本执行单元。
Action=(Sub,O,T,C,P,R,S)
3. ExecutionCondition
表示执行条件。
包括:
ObjectCondition
StateCondition
ParameterCondition
RelationCondition
TimeCondition
4. Execution
表示动作执行过程。
Execution=(Action,Condition,State,Process,Result)
5. ExecutionState
负责管理:
Ready
Checking
Executable
Executing
Completed
Failed
Paused
Cancelled
6. ExecutionResult
负责保存:
ExpectedResult
ActualResult
ResultMatch
StateChange
7. BehaviorExecutor
负责建立:
Behavior→Action→Execution
8. ExecutionController
负责统一管理:
ConditionCheck→Execution→StateUpdate→ResultCheck
最终工程运行结构可以表示为:
BehaviorController→BehaviorExecutor→ActionExecutor→ExecutionController→ExecutionResult→BehaviorState
十一、行为执行理论与前后章节的关系
本章不是孤立理论,而是连接前面行为理论的重要一层。
第31章解决:
复杂行为如何形成
第32章解决:
复杂行为如何模拟
第33章解决:
行为如何进入执行
因此形成:
复杂行为形成→复杂行为模拟→行为执行
进一步形成完整行为链:
目标→对象→状态→方法→行为→动作→执行→结果→状态变化
如果状态发生变化:
状态变化→重新判断→下一行为
由此逐渐形成:
目标→行为→动作→执行→结果→状态→下一行为
十二、本章总结
行为执行理论研究的是行为从结构状态进入实际执行状态的过程。
行为首先必须转化为具体动作:
行为→动作
动作产生以后,不能直接执行,而必须进行执行条件判断:
动作→执行条件
当条件满足以后:
执行条件→执行
执行过程中,动作具有明确的状态变化:
Ready→Checking→Executing→Completed
或者:
Executing→Failed
执行结束以后产生实际结果:
执行→执行结果
结果进一步改变系统状态:
执行结果→状态变化
最终形成:
行为→动作→执行条件→执行→执行状态→执行结果→状态变化
而状态变化又会影响下一行为:
状态变化→下一行为
因此,行为执行理论的完整结构可以归纳为:
B→A→C→E→S→R→S'→B'
其中 B 是行为,A 是动作,C 是执行条件,E 是执行过程,S 是执行状态,R 是执行结果,S' 是新的状态,B' 是下一行为。
这意味着,行为执行不是行为结构的终点,而是行为连续运行和状态持续变化的起点。
最终形成:
行为形成→行为模拟→行为执行→结果产生→状态变化→下一行为
由此,WSaiOS的行为理论从“行为是什么”进一步进入“行为如何发生”的执行层。