第92章 对象匹配
92.1 提出背景
第91章建立了ICAI通用核心理论中的认知匹配理论,定义了匹配对象、匹配条件、匹配结构、匹配过程和匹配结果。
但是,认知匹配最终必须落实到具体对象。
机器个体在运行过程中面对的并不是抽象信息,而是一个个具体对象。例如:
人
车辆
货物
设备
机器人
道路
仓库
订单
客户
企业
产品
机器个体必须判断当前发现的对象究竟是什么、是不是需要寻找的对象、这个对象具有哪些属性、当前处于什么状态、与其他对象存在什么关系。
因此,对象匹配不是单纯比较对象名称,而是一个逐层深入的结构匹配过程:
类型→对象→属性→状态→关系\boxed{ 类型 \rightarrow 对象 \rightarrow 属性 \rightarrow 状态 \rightarrow 关系 }
例如机器个体需要寻找一个“可运输货物”。
它不能只判断:
ObjectType=货物ObjectType=货物
还需要继续判断:
类型是否匹配
↓
是否为目标对象
↓
属性是否符合要求
↓
当前状态是否符合要求
↓
与相关对象的关系是否符合要求
↓
形成对象匹配结果
因此,本章建立**对象匹配(Object Matching)**理论。
92.2 对象匹配定义
**对象匹配(Object Matching)**是指机器个体根据对象的类型、身份、属性、状态、关系以及匹配条件,将当前对象与目标对象或者对象要求进行结构比较,以判断二者是否属于同一目标类别、是否对应、是否满足要求以及满足程度的计算过程。
基本形式:
ObjectA↔ObjectB→ObjectMatchResult\boxed{ Object_A \leftrightarrow Object_B \rightarrow ObjectMatchResult }
对象匹配并不要求:
ObjectA=ObjectBObject_A=Object_B
而是判断:
ObjectA∼ObjectBObject_A \sim Object_B
其中“∼\sim”表示满足指定匹配关系。
因此:
对象相同≠对象匹配\boxed{ 对象相同\neq对象匹配 }
同时:
对象不同≠对象不匹配\boxed{ 对象不同\neq对象不匹配 }
例如:
目标对象:汽车
当前对象:一辆具体汽车
两者不是同一个对象:
TargetObject≠InstanceObjectTargetObject\neq InstanceObject
但:
TypeMatch=TrueTypeMatch=True
因此可以继续进入对象结构匹配。
92.3 对象匹配的五层结构
本章将对象匹配划分为五个基本层次:
TypeMatch→ObjectMatch→AttributeMatch→StateMatch→RelationMatch\boxed{ TypeMatch \rightarrow ObjectMatch \rightarrow AttributeMatch \rightarrow StateMatch \rightarrow RelationMatch }
分别解决:
第一层:类型匹配
回答:
当前对象是不是目标类型?
第二层:对象匹配
回答:
当前具体对象是不是目标对象?
第三层:属性匹配
回答:
当前对象的属性是否满足要求?
第四层:状态匹配
回答:
当前对象的状态是否满足要求?
第五层:关系匹配
回答:
当前对象与相关对象之间的关系是否满足要求?
因此:
ObjectMatch=Type+Identity+Attribute+State+Relation\boxed{ ObjectMatch = Type + Identity + Attribute + State + Relation }
92.4 类型匹配
**类型匹配(Type Matching)**是对象匹配的第一层,用于判断当前对象的类型是否属于目标类型或者是否满足目标类型要求。
例如:
Type(ObjectA)=CarType(Object_A)=Car
目标要求:
Type(ObjectB)=CarType(Object_B)=Car
则:
TypeMatch=TrueTypeMatch=True
类型匹配可以是精确匹配:
TypeA=TypeBType_A=Type_B
也可以是继承、包含或者分类关系:
TypeA⊆TypeBType_A\subseteq Type_B
例如:
车辆
├── 汽车
│ ├── 小汽车
│ └── 卡车
└── 飞机
目标要求:
Type=车辆Type=车辆
当前对象:
Type=汽车Type=汽车
则:
汽车⊆车辆汽车\subseteq车辆
因此可以认为类型条件满足。
类型匹配主要解决:
“它属于什么?”\boxed{ “它属于什么?” }
92.5 类型匹配结构
类型本身也具有结构:
Type={ID,Name,Parent,Category,Version,Rule}Type= \{ ID, Name, Parent, Category, Version, Rule \}
因此类型匹配可以表示为:
TypeMatch=f(TypeA,TypeB,Parent,Category,Rule)TypeMatch= f( Type_A, Type_B, Parent, Category, Rule )
类型关系包括:
相同
父子
包含
从属
兼容
不兼容
例如:
Car⊂VehicleCar\subset Vehicle
则:
Match(Car,Vehicle)=TrueMatch(Car,Vehicle)=True
但:
Aircraft⊄CarAircraft\not\subset Car
则:
Match(Aircraft,Car)=FalseMatch(Aircraft,Car)=False
92.6 对象匹配
类型匹配成功以后,还需要判断具体对象。
对象匹配是指在类型满足的基础上,根据对象身份、对象标识、对象结构以及对象目标关系,判断两个对象是否属于同一目标对象或者是否符合目标对象要求。
对象:
O={ID,Type,Attribute,State,Relation,History}O= \{ ID, Type, Attribute, State, Relation, History \}
因此对象匹配:
ObjectMatch=f(ID,Type,Attribute,State,Relation)ObjectMatch= f( ID, Type, Attribute, State, Relation )
例如目标是:
ObjectID=1001ObjectID=1001
当前发现:
ObjectID=1002ObjectID=1002
虽然:
Type(1001)=Type(1002)=CarType(1001)=Type(1002)=Car
但是:
1001≠10021001\neq1002
因此:
IdentityMatch=FalseIdentityMatch=False
而如果目标要求只是:
Type=CarType=Car
那么对象1002仍然可能满足目标。
所以:
类型匹配≠身份匹配\boxed{ 类型匹配\neq身份匹配 }
92.7 对象身份匹配
**对象身份匹配(Object Identity Matching)**用于判断两个对象是否代表同一个具体对象。
基本判断:
IDA=IDBID_A=ID_B
则:
IdentityMatch=TrueIdentityMatch=True
如果:
IDA≠IDBID_A\neq ID_B
则:
IdentityMatch=FalseIdentityMatch=False
但在实际认知过程中,对象身份并不一定只有一个ID。
对象身份可能由:
唯一ID
名称
编号
序列号
地址
位置
时间
所属主体
结构特征
共同确定。
因此:
Identity=f(ID,Name,Serial,Owner,Position,Time)Identity= f(ID,Name,Serial,Owner,Position,Time)
对象身份匹配需要根据对象类型选择相应身份规则。
92.8 属性匹配
类型和对象身份满足以后,还需要判断对象属性。
**属性匹配(Attribute Matching)**是指将对象当前属性与目标属性要求进行对应、比较和判断的过程。
设:
AOA_O
为对象当前属性集合:
AO={A1,A2,…,An}A_O=\{A_1,A_2,\ldots,A_n\}
目标属性要求:
AG={G1,G2,…,Gm}A_G=\{G_1,G_2,\ldots,G_m\}
进行:
AO↔AGA_O\leftrightarrow A_G
例如:
目标:
重量≤20kg
当前对象:
重量=15kg
则:
15≤2015\leq20
因此:
AttributeMatch=TrueAttributeMatch=True
92.9 属性匹配类型
属性匹配可以根据属性值结构分为:
相等匹配
范围匹配
集合匹配
包含匹配
条件匹配
比较匹配
组合匹配
相等:
A1=A2A_1=A_2
范围:
A1∈[Amin,Amax]A_1\in[A_{min},A_{max}]
包含:
A1⊆A2A_1\subseteq A_2
比较:
A1>A2A_1>A_2
或者:
A1<A2A_1<A_2
因此:
AttributeMatch=f(Name,Type,Value,Unit,Range,Rule)AttributeMatch= f( Name, Type, Value, Unit, Range, Rule )
92.10 状态匹配
属性匹配以后,还必须判断对象当前状态。
**状态匹配(State Matching)**是指比较当前对象状态与目标要求状态,以判断对象是否处于可接受状态。
例如:
CurrentState=ReadyCurrentState=Ready
目标要求:
RequiredState=ReadyRequiredState=Ready
则:
StateMatch=TrueStateMatch=True
如果:
CurrentState=FaultCurrentState=Fault
则:
StateMatch=FalseStateMatch=False
状态匹配可以表示:
StateMatch=f(CurrentState,RequiredState,Condition,Rule)StateMatch= f( CurrentState, RequiredState, Condition, Rule )
92.11 状态匹配不是属性匹配
属性与状态必须保持区别。
例如:
对象:车辆
属性:
最大载重=1000kg
状态:
当前载重=800kg
“最大载重”属于对象能力相关属性,而“当前载重”属于对象当前状态。
因此:
Attribute≠StateAttribute\neq State
相应地:
AttributeMatch≠StateMatchAttributeMatch\neq StateMatch
完整对象匹配需要同时考虑:
AttributeMatchAttributeMatch
和:
StateMatchStateMatch
92.12 关系匹配
对象并不是孤立存在的。
对象可能与其他对象形成:
属于
拥有
连接
依赖
控制
运输
服务
包含
位于
关联
冲突
合作
因此对象匹配还需要判断其关系结构。
**关系匹配(Relation Matching)**是指比较对象与其他对象之间的关系类型、方向、主体、客体、状态和条件是否符合目标要求。
关系:
R={Subject,Type,Object,Direction,Condition,State}R= \{ Subject, Type, Object, Direction, Condition, State \}
关系匹配:
RelationMatch=f(Subject,Type,Object,Direction,Condition,State)RelationMatch= f( Subject, Type, Object, Direction, Condition, State )
92.13 关系匹配实例
例如:
目标对象:订单A
要求关系:
订单A → 属于 → 客户B
当前对象:
订单A → 属于 → 客户B
则:
RelationMatch=TrueRelationMatch=True
如果:
订单A → 属于 → 客户C
则:
RelationMatch=FalseRelationMatch=False
即使订单本身的类型、属性和状态全部正确,也不能形成完整对象匹配。
因此:
对象匹配不仅判断“对象是什么”,还判断“对象与谁存在什么关系”。\boxed{ 对象匹配不仅判断“对象是什么”,还判断“对象与谁存在什么关系”。 }
92.14 对象结构匹配
综合类型、对象、属性、状态和关系,可以建立完整对象结构:
OS={Type,Identity,Attribute,State,Relation}O_S= \{ Type, Identity, Attribute, State, Relation \}
目标对象结构:
OG={TypeG,IdentityG,AttributeG,StateG,RelationG}O_G= \{ Type_G, Identity_G, Attribute_G, State_G, Relation_G \}
进行:
OS↔OGO_S\leftrightarrow O_G
形成:
ObjectMatchResultObjectMatchResult
因此:
ObjectMatching=TypeMatching+IdentityMatching+AttributeMatching+StateMatching+RelationMatching\boxed{ ObjectMatching = TypeMatching + IdentityMatching + AttributeMatching + StateMatching + RelationMatching }
92.15 对象匹配过程
完整对象匹配过程:
目标对象要求
↓
确定目标类型
↓
确定对象身份要求
↓
读取候选对象
↓
类型匹配
↓
对象身份匹配
↓
属性匹配
↓
状态匹配
↓
关系匹配
↓
综合评价
↓
形成对象匹配结果
其中任何一个核心条件不满足,都可能影响总体结果。
例如:
类型正确
↓
对象身份正确
↓
属性正确
↓
状态异常
↓
关系正确
↓
总体结果:部分匹配/不匹配
具体结果由匹配规则确定。
92.16 对象匹配的层级关系
对象匹配具有明显的层级结构:
Type→Object→Attribute→State→RelationType \rightarrow Object \rightarrow Attribute \rightarrow State \rightarrow Relation
第一层确定:
是什么类型。
第二层确定:
是哪个对象。
第三层确定:
具有什么特征。
第四层确定:
当前处于什么状态。
第五层确定:
与其他对象存在什么关系。
因此:
对象认知→对象结构→对象匹配\boxed{ 对象认知 \rightarrow 对象结构 \rightarrow 对象匹配 }
92.17 对象匹配结果
对象匹配结果:
OMR={ID,TargetObject,CandidateObject,TypeResult,IdentityResult,AttributeResult,StateResult,RelationResult,OverallResult,Reason,Time}OMR= \{ ID, TargetObject, CandidateObject, TypeResult, IdentityResult, AttributeResult, StateResult, RelationResult, OverallResult, Reason, Time \}
其中:
TargetObject:目标对象;CandidateObject:候选对象;TypeResult:类型匹配结果;IdentityResult:身份匹配结果;AttributeResult:属性匹配结果;StateResult:状态匹配结果;RelationResult:关系匹配结果;OverallResult:总体结果;Reason:结果原因;Time:匹配时间。
92.18 对象匹配结果类型
总体结果可以采用:
OMR∈{Full,Partial,None}OMR\in \{ Full, Partial, None \}
完全匹配
FullMatchFullMatch
表示所有关键对象条件满足。
部分匹配
PartialMatchPartialMatch
表示对象满足部分要求,但仍存在未满足条件。
不匹配
NoMatchNoMatch
表示核心条件不满足。
例如:
目标:
汽车
颜色:白色
状态:可用
位置:仓库A
候选对象:
汽车
颜色:白色
状态:维修
位置:仓库A
则:
类型 → 匹配
属性 → 匹配
状态 → 不匹配
关系 → 需要继续判断
因此不能因为类型正确就直接认定对象完全匹配。
92.19 对象匹配与对象识别
对象识别和对象匹配也必须区分。
对象识别:
Input→ObjectInput\rightarrow Object
回答:
发现了什么对象?
对象匹配:
Object↔TargetObject\leftrightarrow Target
回答:
发现的对象是不是当前需要寻找或者使用的对象?
因此:
ObjectRecognition≠ObjectMatching\boxed{ ObjectRecognition\neq ObjectMatching }
完整过程:
Input→ObjectRecognition→CandidateObject→ObjectMatching→MatchedObjectInput \rightarrow ObjectRecognition \rightarrow CandidateObject \rightarrow ObjectMatching \rightarrow MatchedObject
92.20 对象匹配与场景认知
对象匹配并不只发生在单个对象内部,还可以发生在场景中。
例如:
场景
├── 车辆
├── 道路
├── 货物
├── 仓库
└── 人员
机器个体需要寻找:
“位于仓库A、状态正常、可以运输货物的车辆。”
这实际上是:
Vehicle+Attribute+State+Relation+SceneVehicle + Attribute + State + Relation + Scene
共同参与的匹配。
因此:
Scene→ObjectMatchingScene \rightarrow ObjectMatching
对象匹配结果又可以反过来帮助形成场景:
ObjectMatching→SceneStructureObjectMatching \rightarrow SceneStructure
92.21 对象匹配与知识
对象匹配需要使用知识和规则。
例如:
K={TypeRule,AttributeRule,StateRule,RelationRule}K= \{ TypeRule, AttributeRule, StateRule, RelationRule \}
当前对象:
OO
通过知识规则:
O+K→MatchResultO+K\rightarrow MatchResult
例如知识中定义:
Truck⊂VehicleTruck\subset Vehicle
那么目标类型:
VehicleVehicle
遇到:
TruckTruck
即可根据类型包含规则进行匹配。
因此:
Knowledge→MatchingRule→ObjectMatchingKnowledge \rightarrow MatchingRule \rightarrow ObjectMatching
92.22 对象匹配与动态变化
对象匹配不是永久结果。
对象属性会变化:
At→At+1A_t\rightarrow A_{t+1}
对象状态会变化:
St→St+1S_t\rightarrow S_{t+1}
对象关系也会变化:
Rt→Rt+1R_t\rightarrow R_{t+1}
因此:
ObjectMatcht→ObjectMatcht+1ObjectMatch_t \rightarrow ObjectMatch_{t+1}
例如:
10:00
车辆
状态:可用
↓
匹配成功
10:30
车辆
状态:故障
↓
重新匹配
↓
匹配失败
因此:
ObjectMatch=f(Objectt,Conditiont)\boxed{ ObjectMatch=f(Object_t,Condition_t) }
92.23 对象匹配与对象变化
对象变化会直接导致匹配变化。
如果:
AttributeChangeAttributeChange
则:
AttributeMatchChangeAttributeMatchChange
如果:
StateChangeStateChange
则:
StateMatchChangeStateMatchChange
如果:
RelationChangeRelationChange
则:
RelationMatchChangeRelationMatchChange
因此:
ObjectChange→MatchingChange\boxed{ ObjectChange \rightarrow MatchingChange }
机器个体必须在关键对象发生变化以后重新计算匹配结果。
92.24 对象匹配工程对象
PHP OOP中可以建立:
class CognitiveObjectMatch
{
protected $id;
protected $targetObjectId;
protected $candidateObjectId;
protected $typeResult;
protected $identityResult;
protected $attributeResult;
protected $stateResult;
protected $relationResult;
protected $overallResult;
protected $reason;
protected $createdAt;
}
该对象用于保存一次完整的对象匹配结果。
92.25 对象匹配引擎
建立:
ObjectMatchingEngine
负责对象匹配计算。
可以拆分为:
TypeMatcher
ObjectIdentityMatcher
AttributeMatcher
StateMatcher
RelationMatcher
ObjectMatchEvaluator
ObjectMatchRecorder
核心结构:
class ObjectMatchingEngine
{
public function match($target, $candidate)
{
return null;
}
public function matchType($target, $candidate)
{
return false;
}
public function matchIdentity($target, $candidate)
{
return false;
}
public function matchAttributes($target, $candidate)
{
return false;
}
public function matchState($target, $candidate)
{
return false;
}
public function matchRelations($target, $candidate)
{
return false;
}
public function evaluate($result)
{
return null;
}
}
92.26 对象匹配数据库
可以建立:
cognitive_object_matches
主要字段:
id
target_object_id
candidate_object_id
type_result
identity_result
attribute_result
state_result
relation_result
overall_result
reason
created_at
updated_at
匹配历史:
cognitive_object_match_history
主要字段:
id
match_id
old_result
new_result
change_reason
created_at
因此形成:
Object→ObjectMatch→ObjectMatchHistoryObject \rightarrow ObjectMatch \rightarrow ObjectMatchHistory
92.27 对象匹配完整运行流程
完整运行流程:
输入
↓
对象识别
↓
形成候选对象
↓
读取目标对象要求
↓
读取对象类型
↓
类型匹配
↓
读取对象身份
↓
对象身份匹配
↓
读取对象属性
↓
属性匹配
↓
读取对象状态
↓
状态匹配
↓
读取对象关系
↓
关系匹配
↓
读取匹配规则
↓
综合计算
↓
形成对象匹配结果
├── 完全匹配
├── 部分匹配
└── 不匹配
↓
记录匹配结果
↓
进入场景认知
↓
进入知识计算
↓
进入需求/目标计算
92.28 对象匹配统一数学模型
设目标对象:
OGO_G
候选对象:
OCO_C
其中:
OG={TG,IDG,AG,SG,RG}O_G= \{ T_G, ID_G, A_G, S_G, R_G \} OC={TC,IDC,AC,SC,RC}O_C= \{ T_C, ID_C, A_C, S_C, R_C \}
则对象匹配:
OM=f(TM,IDM,AM,SM,RM,Condition,Rule)\boxed{ OM= f( T_M, ID_M, A_M, S_M, R_M, Condition, Rule ) }
其中:
- TMT_M:类型匹配;
- IDMID_M:身份匹配;
- AMA_M:属性匹配;
- SMS_M:状态匹配;
- RMR_M:关系匹配。
最终:
OM∈{Full,Partial,None}\boxed{ OM\in\{Full,Partial,None\} }
92.29 对象匹配与认知链
对象匹配位于认知过程的重要位置。
完整链条:
Element→ObjectRecognition→ObjectElement \rightarrow ObjectRecognition \rightarrow Object
然后:
Object→TypeMatching→ObjectMatchingObject \rightarrow TypeMatching \rightarrow ObjectMatching
继续:
ObjectMatching→AttributeMatching→StateMatching→RelationMatchingObjectMatching \rightarrow AttributeMatching \rightarrow StateMatching \rightarrow RelationMatching
形成:
MatchedObjectMatchedObject
再进入:
Scene→Knowledge→Need→GoalScene \rightarrow Knowledge \rightarrow Need \rightarrow Goal
因此:
元素→对象识别→对象匹配→场景→知识→需求→目标\boxed{ 元素 \rightarrow 对象识别 \rightarrow 对象匹配 \rightarrow 场景 \rightarrow 知识 \rightarrow 需求 \rightarrow 目标 }
92.30 对象匹配与后续能力匹配
对象匹配还会直接影响能力匹配。
例如目标要求处理:
Object=货物Object=货物
机器个体先需要确认:
ObjectMatchObjectMatch
只有确定对象满足要求后,才能进一步判断:
CapabilityMatchCapabilityMatch
因此:
ObjectMatching→CapabilityMatching\boxed{ ObjectMatching \rightarrow CapabilityMatching }
完整过程:
Goal→TargetObject→ObjectMatching→CapabilityRequirement→CapabilityMatchingGoal \rightarrow TargetObject \rightarrow ObjectMatching \rightarrow CapabilityRequirement \rightarrow CapabilityMatching
例如:
目标
↓
寻找20kg货物
↓
对象匹配
↓
确认目标货物
↓
读取货物状态
↓
读取搬运能力
↓
能力匹配
↓
方法选择
所以,对象匹配是能力匹配之前的重要基础。
92.31 本章总结
第92章建立了ICAI通用核心理论中的对象匹配理论。
对象匹配不是简单比较两个对象的名称,而是按照对象的结构逐层进行匹配:
类型→对象→属性→状态→关系\boxed{ 类型 \rightarrow 对象 \rightarrow 属性 \rightarrow 状态 \rightarrow 关系 }
类型匹配回答:
“它是什么类型?”“它是什么类型?”
对象身份匹配回答:
“它是不是目标对象?”“它是不是目标对象?”
属性匹配回答:
“它具有什么特征,以及这些特征是否满足要求?”“它具有什么特征,以及这些特征是否满足要求?”
状态匹配回答:
“它当前是否处于要求状态?”“它当前是否处于要求状态?”
关系匹配回答:
“它与相关对象之间的关系是否符合要求?”“它与相关对象之间的关系是否符合要求?”
因此完整对象匹配模型为:
ObjectMatching=TypeMatching+ObjectIdentityMatching+AttributeMatching+StateMatching+RelationMatching\boxed{ ObjectMatching = TypeMatching + ObjectIdentityMatching + AttributeMatching + StateMatching + RelationMatching }
最终形成:
ObjectG↔ObjectC→{Full,Partial,None}\boxed{ Object_G \leftrightarrow Object_C \rightarrow \{ Full, Partial, None \} }
对象匹配又不是静态过程,因为对象属性、状态和关系都可能发生变化:
ObjectChange→AttributeChange+StateChange+RelationChange→ReMatching\boxed{ ObjectChange \rightarrow AttributeChange + StateChange + RelationChange \rightarrow ReMatching }
同时,对象匹配是后续认知计算的重要基础:
ObjectRecognition→ObjectMatching→Scene→Knowledge→Need→Goal→CapabilityMatching\boxed{ ObjectRecognition \rightarrow ObjectMatching \rightarrow Scene \rightarrow Knowledge \rightarrow Need \rightarrow Goal \rightarrow CapabilityMatching }
从工程角度形成:
CognitiveObject→ObjectMatchingEngine→CognitiveObjectMatch→ObjectMatchHistory\boxed{ CognitiveObject \rightarrow ObjectMatchingEngine \rightarrow CognitiveObjectMatch \rightarrow ObjectMatchHistory }
由此,ICAI的对象认知从“发现对象”进一步发展为“判断这个对象是否符合当前认知要求”。
第92章解决的是对象层面的结构匹配问题,而后续认知匹配还可以继续向属性匹配、状态匹配、关系匹配、场景匹配、知识匹配、能力匹配和方法匹配展开,最终形成完整的ICAI认知匹配体系。