第31章 复杂行为形成理论
31.1 简单行为
简单行为(Simple Behavior)是由一个基本行为单元或少量具有直接关系的动作构成,并能够在相对明确的条件下完成一个局部目标的行为结构。
简单行为是复杂行为形成的基础。
在第28章中,行为被定义为主体针对对象,在一定条件下,为实现目标而形成的结构化活动。因此,简单行为可以表示为:
Bs=(Sub,O,G,C,A,R,S)B_s=(Sub,O,G,C,A,R,S)
其中:
- BsB_s:简单行为;
- SubSub:行为主体;
- OO:行为对象;
- GG:行为目标;
- CC:行为条件;
- AA:动作;
- RR:行为结果;
- SS:行为状态。
例如:
打开(门)打开(门)
可以构成一个简单行为。
其结构为:
主体+门+打开目标+关闭状态→打开动作→门打开主体 + 门 + 打开目标 + 关闭状态 \rightarrow 打开动作 \rightarrow 门打开
简单行为通常具有以下特点:
第一,目标比较明确。
第二,行为对象相对集中。
第三,动作数量较少。
第四,动作之间的依赖关系较简单。
第五,行为结果比较直接。
因此可以表示为:
简单目标→简单行为→直接结果简单目标 \rightarrow 简单行为 \rightarrow 直接结果
简单行为并不是没有内部结构,而是其内部结构相对有限。
例如:
拿起杯子拿起杯子
本身可能包含识别、接近、抓取等多个动作,但从行为组织层面,它仍然可以作为一个相对独立的行为单元。
因此:
简单行为→行为单元简单行为 \rightarrow 行为单元
而多个简单行为进一步组合:
B1+B2+⋯+Bn→复杂行为B_1+B_2+\cdots+B_n \rightarrow 复杂行为
这构成复杂行为形成的基础。
31.2 行为组合
行为组合(Behavior Composition)是将两个或两个以上相对独立的行为单元按照目标、对象、条件、状态或结果关系组织成一个更高层行为结构的过程。
设存在:
B1,B2,…,BnB_1,B_2,\ldots,B_n
通过行为关系:
RBR_B
可以形成:
CB={B1,B2,…,Bn,RB}CB=\{B_1,B_2,\ldots,B_n,R_B\}
其中:
- CBCB:复杂行为;
- BiB_i:子行为;
- RBR_B:子行为之间的关系。
行为组合不是简单地把多个行为放在一起,而是建立它们之间的结构关系。
例如:
寻找杯子→拿起杯子→饮水寻找杯子 \rightarrow 拿起杯子 \rightarrow 饮水
三个行为通过目标和过程关系组合起来,可以形成:
喝水行为喝水行为
因此:
行为组合=行为集合+行为关系行为组合 = 行为集合 + 行为关系
行为之间可以形成多种关系。
31.2.1 顺序组合
B1→B2B_1\rightarrow B_2
表示 B1B_1 完成后进入 B2B_2。
31.2.2 条件组合
B1→Condition→B2B_1 \rightarrow Condition \rightarrow B_2
表示 B2B_2 是否发生取决于条件。
31.2.3 替代组合
B1→{B2B3B_1 \rightarrow \begin{cases} B_2\\ B_3 \end{cases}
表示根据不同条件选择不同子行为。
31.2.4 并行组合
B1∥B2B_1\parallel B_2
表示两个行为可以在同一整体行为结构中同时存在或协同推进。
因此复杂行为的组合关系可以表示为:
CB=Compose(B1,B2,…,Bn,RB)CB=Compose(B_1,B_2,\ldots,B_n,R_B)
行为组合使行为结构获得层级性。
31.3 行为序列
行为序列(Behavior Sequence)是多个行为按照一定先后关系排列形成的动态行为结构。
最基本的行为序列为:
B1→B2→B3→⋯→BnB_1\rightarrow B_2\rightarrow B_3\rightarrow\cdots\rightarrow B_n
其中:
Bi→Bi+1B_i\rightarrow B_{i+1}
表示前一个行为与后一个行为存在过程上的先后关系。
行为序列不是简单的时间排列,而是存在一定的逻辑依赖。
例如:
打开门→进入房间打开门 \rightarrow 进入房间
“进入房间”依赖于“门已经打开”的状态。
因此:
Result(B1)⊨Condition(B2)Result(B_1)\models Condition(B_2)
才可以形成有效行为序列。
行为序列可以表示为:
BS=(B,Rs)BS=(B,R_s)
其中:
- BB:行为集合;
- RsR_s:行为顺序关系。
进一步:
Bi→ResultSi→ConditionBi+1B_i \xrightarrow{Result} S_i \xrightarrow{Condition} B_{i+1}
因此:
行为→状态→下一行为行为 \rightarrow 状态 \rightarrow 下一行为
构成行为序列的动态连接。
如果前一个行为未达到要求:
Result(Bi)⊭Condition(Bi+1)Result(B_i)\not\models Condition(B_{i+1})
则:
Bi+1B_{i+1}
不能正常进入执行状态。
所以行为序列具有状态连续性:
Si→Bi+1S_i\rightarrow B_{i+1}
行为序列最终形成:
B1→S1→B2→S2→B3→⋯→BnB_1 \rightarrow S_1 \rightarrow B_2 \rightarrow S_2 \rightarrow B_3 \rightarrow \cdots \rightarrow B_n
31.4 条件行为
条件行为(Conditional Behavior)是根据当前对象、状态、环境、目标或其他条件决定是否发生、发生哪一种或以何种方式发生的行为结构。
条件行为的核心是:
Condition→BehaviorCondition\rightarrow Behavior
可以表示为:
C→BC\rightarrow B
当:
C=1C=1
则:
BB
可以形成或执行。
当:
C=0C=0
则:
BB
不能形成或进入当前执行状态。
更复杂的条件行为可以表示为:
C1∧C2∧C3→B1C_1\land C_2\land C_3 \rightarrow B_1
或者:
C1→B1C_1 \rightarrow B_1 ¬C1→B2\neg C_1 \rightarrow B_2
形成行为选择结构:
Condition→BehaviorSelection→BehaviorCondition \rightarrow BehaviorSelection \rightarrow Behavior
例如:
对象=门对象=门
并且:
门状态=关闭门状态=关闭
则:
打开门行为打开门行为
可以成立。
如果:
门状态=打开门状态=打开
则“打开门”不再是当前必要行为,系统可能进入:
通过门行为通过门行为
因此:
状态→条件→行为选择状态 \rightarrow 条件 \rightarrow 行为选择
条件行为使复杂行为能够根据当前情况产生不同路径。
31.5 状态驱动行为
状态驱动行为(State-Driven Behavior)是由当前对象状态、环境状态或场景状态决定行为形成、选择和变化的行为结构。
状态驱动行为的核心关系为:
State→BehaviorState\rightarrow Behavior
设当前状态为:
StS_t
则行为可以表示为:
Bt=f(St,G,O,C)B_t=f(S_t,G,O,C)
其中:
- StS_t:当前状态;
- GG:目标;
- OO:对象;
- CC:条件。
执行行为后:
Bt→St+1B_t\rightarrow S_{t+1}
因此形成:
St→Bt→St+1S_t \rightarrow B_t \rightarrow S_{t+1}
然后:
St+1→Bt+1S_{t+1} \rightarrow B_{t+1}
形成连续状态驱动过程:
S0→B1→S1→B2→S2→⋯S_0 \rightarrow B_1 \rightarrow S_1 \rightarrow B_2 \rightarrow S_2 \rightarrow \cdots
例如:
门=关闭→打开门行为→门=打开门=关闭 \rightarrow 打开门行为 \rightarrow 门=打开
新的状态:
门=打开门=打开
又成为:
进入房间行为进入房间行为
的前置条件。
因此:
State1→Behavior2State_1 \rightarrow Behavior_2
状态成为行为之间的连接结构。
状态驱动行为与固定行为序列的区别在于:
固定序列:B1→B2→B3固定序列: B_1\rightarrow B_2\rightarrow B_3
而状态驱动结构是:
St→Bi→St+1S_t\rightarrow B_i\rightarrow S_{t+1}
下一行为由新的状态决定。
因此状态驱动行为具有动态性。
31.6 多对象协同行为
多对象协同行为(Multi-Object Coordinated Behavior)是一个行为过程中存在两个或两个以上相互关联的对象,并且多个对象之间的关系共同影响行为形成、动作组织和最终结果的行为结构。
设:
O={O1,O2,…,On}O=\{O_1,O_2,\ldots,O_n\}
其中:
n≥2n\geq2
行为可以表示为:
B=(Sub,O,G,C,M,A,P,S,R)B=(Sub,O,G,C,M,A,P,S,R)
其中:
O={O1,O2,…,On}O=\{O_1,O_2,\ldots,O_n\}
多个对象之间存在关系:
RO=(Oi,R,Oj)R_O=(O_i,R,O_j)
因此:
O1+O2+⋯+On+RO→CoordinatedBehaviorO_1+O_2+\cdots+O_n + R_O \rightarrow CoordinatedBehavior
例如,一个主体将杯子放到桌子上。
这里至少存在:
主体主体 杯子杯子 桌子桌子
行为并非只作用于一个对象,而是涉及:
杯子→桌子杯子\rightarrow桌子
的位置关系。
因此行为可以表示为:
移动(杯子)+目标位置(桌子)→放置行为移动(杯子) + 目标位置(桌子) \rightarrow 放置行为
多对象协同行为的关键不是对象数量,而是对象之间存在行为上的依赖关系。
例如:
O1→RelationO2O_1 \xrightarrow{Relation} O_2
可能决定动作参数:
Relation(O1,O2)→Parameter→ActionRelation(O_1,O_2) \rightarrow Parameter \rightarrow Action
进一步:
Action(O1,O2)→BehaviorAction(O_1,O_2) \rightarrow Behavior
因此,多对象关系可以影响:
- 动作对象;
- 动作参数;
- 动作顺序;
- 行为条件;
- 行为结果;
- 场景状态。
31.7 多对象协同中的对象关系
多对象协同行为通常不是多个对象分别执行独立行为,而是多个对象在同一个行为结构中相互约束。
例如:
对象A=杯子对象A=杯子 对象B=桌子对象B=桌子
行为目标:
G=杯子放在桌子上G=杯子放在桌子上
则形成:
杯子→移动→桌子→位置关系改变杯子 \rightarrow 移动 \rightarrow 桌子 \rightarrow 位置关系改变
最终:
Relation(Cup,Table)=OnRelation(Cup,Table)=On
因此:
Rt→BehaviorRt+1R_t \xrightarrow{Behavior} R_{t+1}
多对象行为实际上可以通过改变对象关系产生行为结果。
因此:
多对象协同→关系约束→动作组织→关系变化多对象协同 \rightarrow 关系约束 \rightarrow 动作组织 \rightarrow 关系变化
31.8 复杂行为形成机制
复杂行为形成机制(Complex Behavior Formation Mechanism)是指简单行为、行为组合、行为序列、条件关系、状态变化和多对象关系共同作用,形成复杂行为的结构化过程。
复杂行为可以形式化表示为:
CB=F(G,O,C,S,M,B,RB,P,Sc)CB=F(G,O,C,S,M,B,R_B,P,Sc)
其中:
- GG:目标;
- OO:对象集合;
- CC:条件集合;
- SS:状态;
- MM:方法;
- BB:行为集合;
- RBR_B:行为关系;
- PP:行为过程;
- ScSc:场景。
复杂行为形成的第一步是确定目标:
GoalGoal
第二步确定相关对象:
Goal→ObjectGoal\rightarrow Object
第三步判断当前状态:
Object→StateObject\rightarrow State
第四步判断行为条件:
State+Condition→BehaviorConditionState+Condition\rightarrow BehaviorCondition
第五步选择或形成方法:
Goal+Object+Condition→MethodGoal+Object+Condition \rightarrow Method
第六步形成简单行为:
Method→SimpleBehaviorMethod\rightarrow SimpleBehavior
第七步进行行为组合:
B1+B2+⋯+Bn→BehaviorCompositionB_1+B_2+\cdots+B_n \rightarrow BehaviorComposition
第八步建立行为之间的顺序和条件关系:
BehaviorComposition→BehaviorSequenceBehaviorComposition \rightarrow BehaviorSequence
第九步根据状态变化动态调整:
StateChange→BehaviorUpdateStateChange \rightarrow BehaviorUpdate
最终形成:
ComplexBehaviorComplexBehavior
完整过程可以表示为:
目标→对象→状态→条件→方法→简单行为→行为组合→行为序列→复杂行为目标 \rightarrow 对象 \rightarrow 状态 \rightarrow 条件 \rightarrow 方法 \rightarrow 简单行为 \rightarrow 行为组合 \rightarrow 行为序列 \rightarrow 复杂行为
在动态运行过程中:
复杂行为→行为执行→状态变化→行为重新判断复杂行为 \rightarrow 行为执行 \rightarrow 状态变化 \rightarrow 行为重新判断
因此形成:
Scenet→Goalt→Behaviort→Statet+1→Behaviort+1Scene_t \rightarrow Goal_t \rightarrow Behavior_t \rightarrow State_{t+1} \rightarrow Behavior_{t+1}
31.9 复杂行为的分层形成
复杂行为不是一次性产生的,而可以按照层级逐步形成。
第一层:
ActionAction
基本动作。
第二层:
SimpleBehaviorSimpleBehavior
简单行为。
第三层:
BehaviorSequenceBehaviorSequence
行为序列。
第四层:
BehaviorCompositionBehaviorComposition
行为组合。
第五层:
ComplexBehaviorComplexBehavior
复杂行为。
因此:
Action→SimpleBehavior→BehaviorSequence→BehaviorComposition→ComplexBehaviorAction \rightarrow SimpleBehavior \rightarrow BehaviorSequence \rightarrow BehaviorComposition \rightarrow ComplexBehavior
也可以存在:
SimpleBehavior→ComplexBehaviorSimpleBehavior \rightarrow ComplexBehavior
因为某些简单行为本身就可以作为复杂行为中的独立组成单元。
复杂行为还可以继续向上组合:
ComplexBehavior1+ComplexBehavior2→ComplexBehavior3ComplexBehavior_1 + ComplexBehavior_2 \rightarrow ComplexBehavior_3
因此行为系统可以形成层级结构:
行为单元→子行为→复杂行为→高级复杂行为行为单元 \rightarrow 子行为 \rightarrow 复杂行为 \rightarrow 高级复杂行为
31.10 复杂行为的动态形成
复杂行为形成后,并不意味着结构永久固定。
对象可能变化:
Ot→Ot+1O_t\rightarrow O_{t+1}
状态可能变化:
St→St+1S_t\rightarrow S_{t+1}
条件可能变化:
Ct→Ct+1C_t\rightarrow C_{t+1}
场景可能变化:
Sct→Sct+1Sc_t\rightarrow Sc_{t+1}
因此:
CBt→CBt+1CB_t\rightarrow CB_{t+1}
复杂行为可能继续:
CBt→CBt+1CB_t\rightarrow CB_{t+1}
也可能暂停:
CBt→PauseCB_t\rightarrow Pause
也可能替换:
CBt→CBt′CB_t\rightarrow CB’_t
或者终止:
CBt→EndCB_t\rightarrow End
因此复杂行为不是固定的行为列表,而是一个能够随着认知条件变化而调整的动态结构。
31.11 复杂行为的统一形成模型
综合本章,可以建立复杂行为形成模型:
CBF=Goal+Object+Condition+State+Method+BehaviorSet+BehaviorRelation+SceneCBF= Goal + Object + Condition + State + Method + BehaviorSet + BehaviorRelation + Scene
其结果为:
CBF→ComplexBehaviorCBF\rightarrow ComplexBehavior
行为形成过程:
Goal→Object→State→Condition→Method→SimpleBehaviorGoal \rightarrow Object \rightarrow State \rightarrow Condition \rightarrow Method \rightarrow SimpleBehavior
进一步:
SimpleBehavior→BehaviorComposition→BehaviorSequence→ComplexBehaviorSimpleBehavior \rightarrow BehaviorComposition \rightarrow BehaviorSequence \rightarrow ComplexBehavior
运行过程:
ComplexBehavior→Behavior1→State1→Behavior2→State2→⋯ComplexBehavior \rightarrow Behavior_1 \rightarrow State_1 \rightarrow Behavior_2 \rightarrow State_2 \rightarrow \cdots
场景反馈:
ComplexBehavior→SceneChangeComplexBehavior \rightarrow SceneChange
最终形成:
Scenet→Goalt→Methodt→SimpleBehaviort→BehaviorCompositiont→ComplexBehaviort→Statet+1→Scenet+1Scene_t \rightarrow Goal_t \rightarrow Method_t \rightarrow SimpleBehavior_t \rightarrow BehaviorComposition_t \rightarrow ComplexBehavior_t \rightarrow State_{t+1} \rightarrow Scene_{t+1}
因此,复杂行为是一个由简单行为逐层组合,并通过条件、状态、对象关系和行为关系不断组织形成的动态行为结构。
31.12 复杂行为形成的基本规则
为了使复杂行为具有明确的结构,可以建立以下基本规则。
规则一:目标一致规则
参与同一复杂行为的子行为,应当服务于总体目标或其子目标:
Goal(Bi)⊆Goal(CB)Goal(B_i)\subseteq Goal(CB)
规则二:行为连接规则
相邻行为之间必须存在明确的过程、条件或状态关系:
Relation(Bi,Bi+1)≠∅Relation(B_i,B_{i+1})\neq\varnothing
规则三:状态连续规则
前一行为产生的状态应能够作为后一行为的输入:
Result(Bi)→Statei+1Result(B_i)\rightarrow State_{i+1}
规则四:条件满足规则
下一行为必须满足其执行条件:
Statei⊨Condition(Bi+1)State_i\models Condition(B_{i+1})
规则五:对象关系规则
涉及多个对象时,必须明确对象之间的关系:
R(Oi,Oj)R(O_i,O_j)
规则六:结果一致规则
复杂行为最终结果必须与总体目标保持一致:
Match(Result(CB),Goal(CB))=1Match(Result(CB),Goal(CB))=1
因此复杂行为形成条件可以统一表示为:
CBFormation=GoalMatch∧BehaviorRelation∧StateContinuity∧ConditionMatch∧ObjectRelation∧ResultMatchCBFormation= GoalMatch \land BehaviorRelation \land StateContinuity \land ConditionMatch \land ObjectRelation \land ResultMatch
31.13 复杂行为的工程映射
在认知工程中,可以将复杂行为设计为独立对象,并通过行为组合和行为关系进行管理。
基本对象结构:
ComplexBehavior
├── Goal
├── Subject
├── Objects
├── Conditions
├── Method
├── Behaviors
├── BehaviorRelations
├── State
├── Process
├── Parameters
├── Result
└── Scene
对应工程对象可以包括:
SimpleBehavior
Behavior
ComplexBehavior
BehaviorSequence
BehaviorCondition
BehaviorRelation
BehaviorComposer
BehaviorBuilder
BehaviorStateManager
BehaviorController
其中:
SimpleBehavior表示基本行为单元。
Behavior表示一般行为结构。
ComplexBehavior表示由多个行为组成的高级行为结构。
BehaviorSequence负责管理行为顺序。
BehaviorCondition负责管理条件行为。
BehaviorRelation负责管理行为之间的关系。
BehaviorComposer负责将多个行为组合成复杂行为。
BehaviorBuilder负责根据目标、方法、对象和状态形成行为。
BehaviorStateManager负责维护行为状态。
BehaviorController负责管理复杂行为运行过程。
工程流程可以表示为:
Goal→Method→SimpleBehavior→BehaviorComposer→ComplexBehaviorGoal \rightarrow Method \rightarrow SimpleBehavior \rightarrow BehaviorComposer \rightarrow ComplexBehavior
运行过程中:
ComplexBehavior→BehaviorSequence→BehaviorCondition→BehaviorState→NextBehaviorComplexBehavior \rightarrow BehaviorSequence \rightarrow BehaviorCondition \rightarrow BehaviorState \rightarrow NextBehavior
最终:
Behavior→Action→Result→State→SceneBehavior \rightarrow Action \rightarrow Result \rightarrow State \rightarrow Scene
这样,理论中的复杂行为形成机制可以对应到实际的软件对象和模块结构。
31.14 本章总结
复杂行为形成理论研究的核心问题,是说明多个行为如何从简单结构逐步形成具有目标、顺序、条件、状态和对象关系的高级行为结构。
简单行为是基本行为单元:
SimpleBehaviorSimpleBehavior
行为组合建立行为之间的结构关系:
B1+B2+⋯+Bn→BehaviorCompositionB_1+B_2+\cdots+B_n \rightarrow BehaviorComposition
行为序列建立过程关系:
B1→B2→⋯→BnB_1\rightarrow B_2\rightarrow\cdots\rightarrow B_n
条件行为建立条件约束:
Condition→BehaviorCondition\rightarrow Behavior
状态驱动行为建立动态关系:
Statet→Behaviort→Statet+1State_t \rightarrow Behavior_t \rightarrow State_{t+1}
多对象协同行为建立对象关系:
O1+O2+⋯+On+RO→CoordinatedBehaviorO_1+O_2+\cdots+O_n + R_O \rightarrow CoordinatedBehavior
最终形成:
简单行为→行为组合→行为序列→条件行为→状态驱动→多对象协同→复杂行为简单行为 \rightarrow 行为组合 \rightarrow 行为序列 \rightarrow 条件行为 \rightarrow 状态驱动 \rightarrow 多对象协同 \rightarrow 复杂行为
更加完整地表示:
目标→对象→状态→条件→方法→简单行为→行为组合→行为序列→复杂行为目标 \rightarrow 对象 \rightarrow 状态 \rightarrow 条件 \rightarrow 方法 \rightarrow 简单行为 \rightarrow 行为组合 \rightarrow 行为序列 \rightarrow 复杂行为
复杂行为执行之后:
复杂行为→动作→结果→状态变化→场景变化复杂行为 \rightarrow 动作 \rightarrow 结果 \rightarrow 状态变化 \rightarrow 场景变化
并根据新的状态重新形成下一阶段行为:
Scenet→Goalt→ComplexBehaviort→Statet+1→Scenet+1→ComplexBehaviort+1Scene_t \rightarrow Goal_t \rightarrow ComplexBehavior_t \rightarrow State_{t+1} \rightarrow Scene_{t+1} \rightarrow ComplexBehavior_{t+1}
因此,复杂行为不是预先固定的动作或行为列表,而是由目标驱动、行为组合、条件约束、状态变化、多对象关系和场景变化共同形成的动态结构。
本章建立了从“简单行为”向“复杂行为”的形成机制,为后续研究复杂行为的匹配、选择、分解、调整以及行为控制提供理论基础。