第110章 行为与动作
110.1 行为与动作区别
在ICAI理论中,**行为(Behavior)与动作(Action)**属于不同层级的运行概念。
行为是具有主体、对象、目的、条件、方法、决策、动作和结果的完整目的性过程;动作则是行为执行过程中的具体操作单位。
因此:
Action⊂BehaviorAction\subset Behavior
但:
Action≠BehaviorAction\neq Behavior
行为回答:
机器个体正在实施什么有目的的过程?
动作回答:
机器个体当前具体执行什么操作?
例如,一个机器个体需要完成“处理文件”这一行为:
Behavior=处理文件Behavior=处理文件
该行为可能包含:
Action1=打开文件Action_1=打开文件 Action2=读取文件Action_2=读取文件 Action3=检查内容Action_3=检查内容 Action4=保存结果Action_4=保存结果
因此:
Behavior→Action1→Action2→Action3→Action4Behavior \rightarrow Action_1 \rightarrow Action_2 \rightarrow Action_3 \rightarrow Action_4
行为具有完整目的,而动作具有具体执行性。
110.1.1 行为是过程,动作是执行单位
行为可以定义为:
B={Subject,Object,Goal,Purpose,Capability,Method,Decision,Condition,Action,Result,State,History}B= \{ Subject, Object, Goal, Purpose, Capability, Method, Decision, Condition, Action, Result, State, History \}
动作可以定义为:
A={Subject,Object,Behavior,MethodStep,Condition,Operation,Result,State}A= \{ Subject, Object, Behavior, MethodStep, Condition, Operation, Result, State \}
二者的主要区别在于:
| 项目 | 行为 | 动作 |
|---|---|---|
| 层级 | 过程层 | 执行层 |
| 目的 | 有完整目的 | 服务于行为目的 |
| 方法 | 包含方法 | 对应方法步骤 |
| 决策 | 通常承载最终决策 | 执行已经确定的选择 |
| 执行 | 由多个动作构成 | 直接执行 |
| 结果 | 行为整体结果 | 单个动作结果 |
| 状态 | 行为生命周期 | 动作生命周期 |
因此:
Goal→Method→Decision→Behavior→ActionGoal\rightarrow Method\rightarrow Decision\rightarrow Behavior\rightarrow Action
构成从目的到具体执行的逐级展开关系。
110.2 一个行为多个动作
一个完整行为通常不是一个单独动作,而是由一个或多个动作组成。
定义:
Behavior={Action1,Action2,…,Actionn}Behavior=\{Action_1,Action_2,\ldots,Action_n\}
其中:
- BehaviorBehavior:完整行为;
- ActioniAction_i:第 ii 个动作;
- nn:行为包含的动作数量。
最简单的行为:
Behavior→Action1Behavior\rightarrow Action_1
复杂行为:
Behavior→Action1→Action2→Action3→⋯→ActionnBehavior \rightarrow Action_1 \rightarrow Action_2 \rightarrow Action_3 \rightarrow \cdots \rightarrow Action_n
110.2.1 顺序动作
部分行为要求动作按照固定顺序执行:
A1→A2→A3A_1\rightarrow A_2\rightarrow A_3
例如:
行为:处理一个数据文件
打开文件
↓
读取数据
↓
检查数据
↓
处理数据
↓
保存数据
↓
关闭文件
如果:
A1=FailedA_1=Failed
则可能无法进入:
A2A_2
因此:
Ai→Condition→Ai+1A_i\rightarrow Condition\rightarrow A_{i+1}
前一个动作的结果可能成为后一个动作的执行条件。
110.2.2 条件动作
一个行为中的后续动作可能由前一个动作的结果决定:
A1→Result1→Condition→{A2A3A_1 \rightarrow Result_1 \rightarrow Condition \rightarrow \begin{cases} A_2\\ A_3 \end{cases}
例如:
检查文件
↓
结果判断
├── 文件正常 → 读取文件
└── 文件异常 → 异常处理
因此,行为中的动作并不一定是固定线性序列。
110.2.3 并行动作
如果两个动作互不冲突,并且条件允许,则可以并行:
A1∥A2A_1\parallel A_2
例如:
行为:准备运行环境
检查数据库
╲
→ 环境确认
╱
检查文件系统
两个检查动作可以分别执行。
但是并行执行必须满足:
Conflict(A1,A2)=FalseConflict(A_1,A_2)=False
以及:
ResourceConflict(A1,A2)=FalseResourceConflict(A_1,A_2)=False
否则必须调整为顺序执行。
110.2.4 动作依赖
动作之间可以存在依赖关系:
A1→A2A_1\rightarrow A_2
表示 A2A_2 依赖 A1A_1。
也可以:
A1→{A2,A3}A_1\rightarrow\{A_2,A_3\}
表示一个动作完成后产生两个后续动作。
进一步:
{A2,A3}→A4\{A_2,A_3\}\rightarrow A_4
表示两个动作都完成之后才能执行 A4A_4。
因此,一个行为实际上可以形成一个动作关系结构:
ActionGraph=(VA,EA)ActionGraph=(V_A,E_A)
其中:
- VAV_A:动作集合;
- EAE_A:动作之间的执行关系。
这使行为不再只是简单的动作列表,而成为一个具有顺序、条件、依赖和结果关系的执行结构。
110.3 多个行为一个任务
在ICAI中,**任务(Task)**是比行为更高一级的执行组织单位。
一个任务可能需要多个行为共同完成:
Task={Behavior1,Behavior2,…,Behaviorn}Task=\{Behavior_1,Behavior_2,\ldots,Behavior_n\}
因此:
Behavior⊂TaskBehavior\subset Task
但:
Behavior≠TaskBehavior\neq Task
任务回答:
机器个体需要完成什么完整工作?
行为回答:
完成这个任务需要实施哪些目的性过程?
动作回答:
当前具体执行什么操作?
因此形成三级结构:
Task→Behavior→Action\boxed{ Task \rightarrow Behavior \rightarrow Action }
110.3.1 一个任务多个行为
例如任务:
Task=完成数据备份Task=完成数据备份
可以形成:
Behavior1=检查数据Behavior_1=检查数据 Behavior2=整理数据Behavior_2=整理数据 Behavior3=创建备份Behavior_3=创建备份 Behavior4=验证备份Behavior_4=验证备份
形成:
任务:完成数据备份
│
├── 行为1:检查数据
│ ├── 动作1
│ └── 动作2
│
├── 行为2:整理数据
│ ├── 动作3
│ ├── 动作4
│ └── 动作5
│
├── 行为3:创建备份
│ ├── 动作6
│ └── 动作7
│
└── 行为4:验证备份
├── 动作8
└── 动作9
因此:
Task→Behavior1→Action1..nTask \rightarrow Behavior_1 \rightarrow Action_{1..n}
同时:
Task→Behavior2→Action1..nTask \rightarrow Behavior_2 \rightarrow Action_{1..n}
最终:
Task→{Behavior1,Behavior2,…,Behaviorn}Task \rightarrow \{Behavior_1,Behavior_2,\ldots,Behavior_n\}
110.3.2 行为之间的关系
多个行为之间也可能存在:
顺序关系:
B1→B2→B3B_1\rightarrow B_2\rightarrow B_3
条件关系:
B1→Result→{B2B3B_1\rightarrow Result \rightarrow \begin{cases} B_2\\ B_3 \end{cases}
并行关系:
B1∥B2B_1\parallel B_2
依赖关系:
B1→B2B_1\rightarrow B_2
因此任务本身可以建立行为关系结构:
TaskGraph=(VB,EB)TaskGraph=(V_B,E_B)
其中:
- VBV_B:任务中的行为集合;
- EBE_B:行为之间的执行关系。
110.4 行为与动作关系
行为与动作不是简单的包含关系,而是具有形成、分解、执行、结果汇总和状态传递等多种关系。
可以建立:
Behavior→MethodStep→Action→ActionResult→BehaviorResult\boxed{ Behavior \rightarrow MethodStep \rightarrow Action \rightarrow ActionResult \rightarrow BehaviorResult }
110.4.1 行为形成动作
行为形成之后,根据方法步骤生成具体动作:
Behavior→Method→MethodStep→ActionBehavior \rightarrow Method \rightarrow MethodStep \rightarrow Action
即:
Actioni=F(Behavior,MethodStepi,Conditioni)Action_i=F(Behavior,MethodStep_i,Condition_i)
动作因此不是脱离行为独立产生的。
110.4.2 行为控制动作
行为状态决定动作是否能够继续:
BehaviorState→ActionStateBehaviorState \rightarrow ActionState
例如:
Behavior=ExecutingBehavior=Executing
允许相关动作执行。
如果:
Behavior=PausedBehavior=Paused
则相关动作可以:
Action→PausedAction\rightarrow Paused
如果:
Behavior=CancelledBehavior=Cancelled
则未完成动作必须停止:
Action→CancelledAction\rightarrow Cancelled
因此:
BehaviorState→ActionPermissionBehaviorState \rightarrow ActionPermission
110.4.3 动作状态影响行为状态
关系也可以反向传递:
ActionResult→BehaviorEvaluation→BehaviorStateActionResult \rightarrow BehaviorEvaluation \rightarrow BehaviorState
例如:
A1=SuccessA_1=Success
可以使行为继续:
Behavior→ExecutingBehavior\rightarrow Executing
如果关键动作:
A2=FailedA_2=Failed
则可能:
Behavior→FailedBehavior\rightarrow Failed
如果动作只是暂时无法继续:
A3=PausedA_3=Paused
则行为可能:
Behavior→PausedBehavior\rightarrow Paused
因此:
ActionState→BehaviorStateActionState\rightarrow BehaviorState
但并不是所有动作失败都会导致整个行为失败。
必须根据动作的重要程度和行为规则判断:
BehaviorState=F(ActionResults,Rule,Condition)BehaviorState = F(ActionResults,Rule,Condition)
110.4.4 关键动作与普通动作
行为中的动作可以区分为:
ActionType∈{Critical,Normal,Optional}ActionType\in \{ Critical, Normal, Optional \}
如果关键动作失败:
CriticalActionFailed→BehaviorFailedCriticalActionFailed\rightarrow BehaviorFailed
如果普通动作失败:
NormalActionFailed→BehaviorReevaluationNormalActionFailed\rightarrow BehaviorReevaluation
如果可选动作失败:
OptionalActionFailed→BehaviorContinueOptionalActionFailed\rightarrow BehaviorContinue
因此,动作结果对行为的影响必须通过规则计算,而不能简单地“一动作失败,整个行为就失败”。
110.4.5 行为结果由动作结果形成
一个行为可能有多个动作结果:
{AR1,AR2,…,ARn}\{AR_1,AR_2,\ldots,AR_n\}
行为结果:
BR=F(AR1,AR2,…,ARn,Rule)BR= F(AR_1,AR_2,\ldots,AR_n,Rule)
例如:
AR1=SuccessAR_1=Success AR2=SuccessAR_2=Success AR3=SuccessAR_3=Success
则:
BR=SuccessBR=Success
如果:
AR1=Success,AR2=Success,AR3=FailedAR_1=Success,\quad AR_2=Success,\quad AR_3=Failed
则根据动作重要性:
BR∈{Partial,Failed}BR\in\{Partial,Failed\}
因此:
ActionResult→BehaviorResultActionResult \rightarrow BehaviorResult
是动作与行为之间非常重要的结果关系。
110.5 动作结果
动作结果是动作执行后产生的实际变化,是连接执行层与行为层的重要数据。
可以定义:
ActionResult={ActionID,BeforeState,AfterState,ExpectedResult,ActualResult,Output,Status,Difference,Time}ActionResult= \{ ActionID, BeforeState, AfterState, ExpectedResult, ActualResult, Output, Status, Difference, Time \}
其中:
- ActionIDActionID:动作标识;
- BeforeStateBeforeState:动作执行前状态;
- AfterStateAfterState:动作执行后状态;
- ExpectedResultExpectedResult:预期结果;
- ActualResultActualResult:实际结果;
- OutputOutput:动作输出;
- StatusStatus:结果状态;
- DifferenceDifference:实际结果与预期结果之间的差异;
- TimeTime:结果产生时间。
110.5.1 动作成功
当实际结果满足预期:
ActualResult≈ExpectedResultActualResult\approx ExpectedResult
则:
ActionResult=SuccessActionResult=Success
并可以:
Action→CompletedAction \rightarrow Completed
110.5.2 动作部分成功
如果动作只完成部分要求:
RequiredResult∩ActualResult≠∅RequiredResult\cap ActualResult\neq\varnothing
但:
RequiredResult⊈ActualResultRequiredResult\not\subseteq ActualResult
则:
ActionResult=PartialActionResult=Partial
此时行为系统需要重新判断:
Partial→BehaviorReevaluationPartial \rightarrow BehaviorReevaluation
可能产生新的动作。
110.5.3 动作失败
如果实际结果不满足关键要求:
ActualResult⊭ExpectedResultActualResult\not\models ExpectedResult
则:
ActionResult=FailedActionResult=Failed
失败动作进入:
Failed→DiagnosisFailed \rightarrow Diagnosis
然后根据诊断结果进入:
RepairRepair
或者:
MethodRematchingMethodRematching
或者:
DecisionReevaluationDecisionReevaluation
或者:
BehaviorReformationBehaviorReformation
110.5.4 动作阻止
动作有时根本没有真正执行,而是在执行前被条件阻止:
Condition=FalseCondition=False
因此:
ActionResult=BlockedActionResult=Blocked
这与失败不同。
Blocked≠FailedBlocked\neq Failed
Blocked表示动作没有获得执行许可;Failed表示动作已经执行或者进入执行过程,但没有达到要求。
110.5.5 动作中断
如果动作已经开始:
ExecutingExecuting
但是因为外部事件、条件变化或者资源变化而停止:
Executing→InterruptedExecuting\rightarrow Interrupted
则:
ActionResult=InterruptedActionResult=Interrupted
后续可以根据条件决定:
Interrupted→ResumeInterrupted\rightarrow Resume
或者:
Interrupted→FailedInterrupted\rightarrow Failed
或者:
Interrupted→CancelledInterrupted\rightarrow Cancelled
110.6 动作结果与行为结果
多个动作结果需要汇总为行为结果。
设一个行为:
B={A1,A2,A3}B=\{A_1,A_2,A_3\}
其动作结果:
RA={R1,R2,R3}R_A=\{R_1,R_2,R_3\}
则:
BehaviorResult=F(R1,R2,R3,Rule)BehaviorResult= F(R_1,R_2,R_3,Rule)
例如:
R1=SuccessR_1=Success R2=SuccessR_2=Success R3=SuccessR_3=Success
得到:
BehaviorResult=SuccessBehaviorResult=Success
如果:
R1=SuccessR_1=Success R2=FailedR_2=Failed R3=NotStartedR_3=NotStarted
则需要进一步判断 R2R_2 是否属于关键动作。
如果:
Critical(A2)=TrueCritical(A_2)=True
则:
BehaviorResult=FailedBehaviorResult=Failed
如果:
Critical(A2)=FalseCritical(A_2)=False
则可能:
BehaviorResult=PartialBehaviorResult=Partial
因此:
BehaviorResult≠SimpleActionResultBehaviorResult \neq SimpleActionResult
行为结果是对多个动作结果进行结构化评价之后形成的更高层结果。
110.7 任务、行为、动作三级结构
通过本章可以建立ICAI执行结构的三级模型:
Task→Behavior→Action\boxed{ Task \rightarrow Behavior \rightarrow Action }
进一步:
Task→Behavior→Action→ActionResult→BehaviorResult→TaskResult\boxed{ Task \rightarrow Behavior \rightarrow Action \rightarrow ActionResult \rightarrow BehaviorResult \rightarrow TaskResult }
其中:
**任务(Task)**规定完整工作;
**行为(Behavior)**规定完成任务所需要实施的目的性过程;
**动作(Action)**规定行为中的具体操作;
**动作结果(ActionResult)**记录具体操作产生的实际结果;
**行为结果(BehaviorResult)**综合多个动作结果;
**任务结果(TaskResult)**综合多个行为结果。
因此形成:
任务
│
├── 行为1
│ ├── 动作1
│ ├── 动作2
│ └── 动作3
│
├── 行为2
│ ├── 动作4
│ ├── 动作5
│ └── 动作6
│
└── 行为3
├── 动作7
└── 动作8
结果则反向汇总:
动作结果
↓
行为结果
↓
任务结果
由此形成:
ActionResult→BehaviorResult→TaskResultActionResult \rightarrow BehaviorResult \rightarrow TaskResult
110.8 行为—动作运行模型
ICAI机器个体运行时,可以形成如下执行结构:
任务
↓
任务目标
↓
行为形成
↓
行为
↓
方法步骤
↓
动作形成
↓
动作条件检查
├── 不满足 → 等待/阻止
└── 满足
↓
动作执行
↓
动作结果
↓
动作结果验证
├── 成功 → 下一个动作
├── 部分 → 重新判断
├── 失败 → 诊断/重新决策
├── 暂停 → 等待恢复
└── 取消 → 终止动作
↓
全部动作完成
↓
形成行为结果
↓
行为结果验证
├── 成功 → 下一个行为
├── 部分 → 行为调整
└── 失败 → 重新决策
↓
全部行为完成
↓
形成任务结果
因此:
Task→Behavior→Action→ActionResult→BehaviorResult→TaskResultTask \rightarrow Behavior \rightarrow Action \rightarrow ActionResult \rightarrow BehaviorResult \rightarrow TaskResult
构成一个完整的层级执行结构。
110.9 工程映射
在WSaiOS-ICAI工程中,任务、行为和动作应当分别建立对象模型,而不能全部混合为一个对象。
核心对象:
CognitiveTask
CognitiveBehavior
CognitiveAction
CognitiveActionResult
CognitiveBehaviorResult
CognitiveTaskResult
110.9.1 行为与动作关系对象
class BehaviorAction
{
protected $behaviorId;
protected $actionId;
protected $sequence;
protected $dependency;
protected $condition;
protected $critical;
}
其中:
$behaviorId:所属行为;$actionId:对应动作;$sequence:执行顺序;$dependency:动作依赖;$condition:动作执行条件;$critical:是否为关键动作。
110.9.2 行为执行引擎
class BehaviorExecutionEngine
{
public function buildActions($behavior)
{
return array();
}
public function checkAction($action, $context)
{
return false;
}
public function executeAction($action)
{
return null;
}
public function evaluateActionResult($action, $result)
{
return null;
}
public function evaluateBehavior($behavior, $results)
{
return null;
}
public function continueBehavior($behavior)
{
return false;
}
}
其核心流程:
Behavior→ActionBuilder→ActionExecution→ActionResult→BehaviorEvaluationBehavior \rightarrow ActionBuilder \rightarrow ActionExecution \rightarrow ActionResult \rightarrow BehaviorEvaluation
110.9.3 数据库结构
可以建立:
cognitive_tasks
cognitive_task_behaviors
cognitive_task_results
cognitive_behaviors
cognitive_behavior_actions
cognitive_behavior_results
cognitive_actions
cognitive_action_results
cognitive_action_states
cognitive_action_state_history
关系为:
Task→TaskBehavior→BehaviorAction→ActionResultTask \rightarrow TaskBehavior \rightarrow BehaviorAction \rightarrow ActionResult
这样能够保存:
任务
↓
行为
↓
动作
↓
动作结果
↓
行为结果
↓
任务结果
形成完整的机器运行历史。
110.10 行为与动作的认知意义
行为与动作的区分,使ICAI能够解决一个重要问题:
机器个体不是直接从目标跳到一个动作,而是先形成完整行为,再将行为分解为可执行动作。
因此:
Goal≠Behavior≠ActionGoal\neq Behavior\neq Action
三者分别属于不同层级:
Goal→Behavior→ActionGoal\rightarrow Behavior\rightarrow Action
目标决定方向;
行为组织目的性过程;
动作负责具体执行。
进一步结合方法与决策:
Goal→Capability→Method→Decision→Behavior→ActionGoal \rightarrow Capability \rightarrow Method \rightarrow Decision \rightarrow Behavior \rightarrow Action
这形成了从认知到实际执行的完整层级。
110.11 本章总结
本章进一步明确了ICAI中任务、行为和动作之间的层级关系。
首先:
Action⊂BehaviorAction\subset Behavior
动作是行为中的具体执行单位,行为则是具有目的、条件和结果的完整过程。
其次,一个行为可以包含多个动作:
Behavior={Action1,Action2,…,Actionn}Behavior=\{Action_1,Action_2,\ldots,Action_n\}
这些动作可以具有顺序、条件、并行和依赖关系。
再次,一个任务可以包含多个行为:
Task={Behavior1,Behavior2,…,Behaviorn}Task=\{Behavior_1,Behavior_2,\ldots,Behavior_n\}
因此建立:
Task→Behavior→Action\boxed{ Task \rightarrow Behavior \rightarrow Action }
同时,结果沿相反方向进行层级汇总:
ActionResult→BehaviorResult→TaskResult\boxed{ ActionResult \rightarrow BehaviorResult \rightarrow TaskResult }
最终形成完整的执行模型:
Task→Behavior→Action→Execution→ActionResult→BehaviorResult→TaskResult\boxed{ Task \rightarrow Behavior \rightarrow Action \rightarrow Execution \rightarrow ActionResult \rightarrow BehaviorResult \rightarrow TaskResult }
再与前面的认知、需求、目标、能力、方法和决策体系连接:
Cognition→Need→Goal→Capability→Matching→Method→Decision→Task→Behavior→Action→Result→Feedback→Learning\boxed{ Cognition \rightarrow Need \rightarrow Goal \rightarrow Capability \rightarrow Matching \rightarrow Method \rightarrow Decision \rightarrow Task \rightarrow Behavior \rightarrow Action \rightarrow Result \rightarrow Feedback \rightarrow Learning }
由此,ICAI形成了从认知对象、需求、目标,到能力、方法、决策,再到任务、行为、动作和结果的连续机器运行结构。
动作不再是孤立的程序调用,而成为行为执行结构中的基本单位;行为也不再是抽象的“做某件事情”,而成为可以由多个动作构成、能够运行、暂停、失败、恢复并产生结果的机器执行过程。
这为后续建立动作执行、动作结果验证、行为反馈、任务执行、异常处理和执行学习等理论提供了基础。