第252章 Object Model|对象模型
252.1 提出背景
在第251章 Cognitive Model|认知模型 中,ICAI已经建立了对当前世界状态进行统一组织的认知模型。
但是,认知模型并不是凭空产生的。
机器要形成:
世界 → 场景 → 认知 → 方法 → 行为
首先必须回答一个更加基础的问题:
当前世界中究竟有哪些对象?这些对象分别具有什么属性、处于什么状态、与其他对象存在什么关系?
因此,在ICAI工程体系中,Object Model|对象模型 是连接现实世界与认知模型的重要基础层。
其基本结构可以表示为:
Real World
↓
Real-Time Data
↓
Element
↓
Object
↓
Object Model
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Cognitive Model
↓
Method
↓
Action
Object Model解决的是对象结构化表示问题。
Cognitive Model解决的是当前认知组织问题。
二者不能混淆。
Object Model是“对象是什么、由什么组成、有什么结构”的模型;Cognitive Model则是在对象模型基础上,结合场景、状态、关系、目标等形成的当前认知结构。
252.2 Object Model 的定义
Object Model|对象模型,是ICAI用于描述现实世界中对象及其结构、属性、关系、状态和身份信息的软件化模型。
可以定义:
OM=F(O,A,R,S,I)OM = F(O,A,R,S,I)
其中:
- OMOM:Object Model,对象模型;
- OO:Object,对象;
- AA:Attribute,属性集合;
- RR:Relation,关系集合;
- SS:State,状态集合;
- II:Identity,对象身份标识;
- FF:对象模型构造函数。
因此,一个完整对象模型至少需要能够表达:
对象身份
+
对象类型
+
对象属性
+
对象关系
+
对象状态
例如现实中的一个鸡蛋,可以形成:
Object
├── Identity
│ └── egg_001
├── Type
│ └── Egg
├── Attributes
│ ├── Position
│ ├── Size
│ ├── Weight
│ ├── Surface
│ └── Temperature
├── Relations
│ ├── On → Table
│ └── Near → Hand
└── State
├── Static
├── Contact
└── Stable
这里的 egg_001 不是“鸡蛋这个概念”,而是当前现实世界中被系统识别并建立的一个对象实例(Object Instance)。
252.3 Object Class 与 Object Model 的区别
ICAI必须区分:
Object Class
Object Model
Object Instance
三者分别处于不同层次。
Object Class|对象类
Object Class定义对象的一般结构。
例如:
Egg
├── Position
├── Weight
├── Size
├── Surface
└── State
它描述的是:
什么样的对象属于Egg。
Object Instance|对象实例
Object Instance是现实世界中某一个具体对象。
例如:
egg_001
egg_002
egg_003
三个对象都可以属于:
Egg
但是它们的位置、重量、状态、关系可能完全不同。
Object Model|对象模型
Object Model则负责把某个具体对象的运行结构完整组织起来:
Object Class
↓
Object Instance
↓
Attributes
↓
Relations
↓
State
↓
Object Model
因此:
Object Class定义对象结构,Object Instance表示具体对象,Object Model组织具体对象当前可计算的完整结构。
252.4 Object Model 的基本结构
ICAI中的Object Model可以建立为:
Object Model
│
├── Identity
│
├── Class
│
├── Type
│
├── Attributes
│
├── Relations
│
├── State
│
├── Position
│
├── Time
│
└── Source
其中:
Identity|身份
用于区分不同对象实例。
Class|对象类
表示对象属于哪个对象类别。
Type|对象类型
表示对象的具体类型信息。
Attributes|属性
描述对象当前可测量、可计算、可变化的数据。
Relations|关系
描述对象与其他对象之间的结构关系。
State|状态
描述对象当前经过状态判断后的状态。
Position|位置
描述对象在空间中的位置。
Time|时间
表示当前对象数据对应的时间。
Source|数据来源
表示对象信息由什么数据源产生。
因此,Object Model不是一个简单的数据表,而是一个动态对象结构。
252.5 静态对象与动态对象
传统程序中的对象往往被理解为:
Object
=
属性
+
方法
ICAI中的Object Model进一步强调:
对象不是静态数据,而是随现实世界变化而持续更新的运行对象。
例如一个鸡蛋:
t0
egg_001
Position = P0
Pressure = 0
Velocity = 0
State = Static
当手靠近:
t1
egg_001
Position = P0
Distance = d1
Velocity = 0
State = Near
当手接触鸡蛋:
t2
egg_001
Position = P1
Distance = 0
Pressure = p1
State = Contact
当手开始施加抓取力:
t3
egg_001
Position = P2
Pressure = p2
Force = F2
Velocity = v2
State = Grasping
因此:
OM(t0)→OM(t1)→OM(t2)→OM(t3)OM(t_0)\rightarrow OM(t_1)\rightarrow OM(t_2)\rightarrow OM(t_3)
表示同一个对象模型随时间变化。
对象身份没有改变:
egg_001
但是对象属性、关系和状态持续变化。
252.6 Object Model 与 Dynamic Attribute
第209章已经建立了 Dynamic Attribute|动态属性。
Object Model是动态属性的重要承载结构。
例如:
egg_001
当前属性:
Position = (100,200,50)
Weight = 0.055kg
Velocity = (0,0,0)
Pressure = 0
Force = 0
Temperature = 25℃
经过时间变化:
egg_001
更新为:
Position = (101,201,50)
Velocity = (1,1,0)
Pressure = 2
Force = 3
Temperature = 25℃
因此可以表示:
A(t)={a1(t),a2(t),…,an(t)}A(t)=\{a_1(t),a_2(t),…,a_n(t)\}
其中:
- A(t)A(t):对象在时间 tt 的属性集合;
- ai(t)a_i(t):第 ii 个动态属性;
- nn:属性数量。
对象模型:
OM(t)=F(I,C,A(t),R(t),S(t))OM(t)=F(I,C,A(t),R(t),S(t))
意味着:
Object Model不是一次创建后永久不变的数据,而是一个能够持续更新的运行对象模型。
252.7 Object Model 与 Relation
现实世界中的对象很少孤立存在。
例如:
Hand
Egg
Table
可能形成:
Egg
↓
On
↓
Table
同时:
Hand
↓
Near
↓
Egg
接触之后:
Hand
↓
Contact
↓
Egg
抓取之后:
Hand
↓
Grasp
↓
Egg
因此Object Model不仅保存对象自身属性,还必须能够关联其他对象。
可以表示:
R(Oi,Oj,t)R(O_i,O_j,t)
其中:
- RR:对象关系;
- OiO_i:第一个对象;
- OjO_j:第二个对象;
- tt:关系发生的时间。
例如:
R(Hand_001, Egg_001, Contact, t)
表示:
Hand_001
↓ Contact
Egg_001
关系本身也可以是动态的:
Near
↓
Contact
↓
Grasp
↓
Release
↓
Far
所以对象模型实际上也是关系网络中的一个动态节点。
252.8 Object Model 与 State
Object Model保存对象当前状态。
但必须区分:
Attribute
与:
State
属性是数据。
状态是对数据进行结构化判断后的结果。
例如:
Pressure = 0
Distance = 50
Velocity = 0
系统可以判断:
State = Static
随后:
Distance = 0
Pressure = 5
系统可以判断:
State = Contact
进一步:
Pressure > Threshold
Force > MinimumForce
Velocity ≈ 0
系统可以形成:
State = Grasping
因此:
S(t)=F(A(t),R(t),C(t))S(t)=F(A(t),R(t),C(t))
其中:
- S(t)S(t):对象当前状态;
- A(t)A(t):动态属性;
- R(t)R(t):当前关系;
- C(t)C(t):状态判断条件;
- FF:状态计算函数。
这意味着Object Model能够从:
原始属性
↓
属性计算
↓
状态判断
↓
当前对象状态
形成可计算的对象结构。
252.9 Object Model 与 Scene Model
单个对象模型不能完整表示现实世界。
例如:
Egg_001
Hand_001
Table_001
三个对象分别拥有自己的Object Model:
OM(Egg_001)
OM(Hand_001)
OM(Table_001)
通过关系和状态组合之后:
Object Model
+
Object Model
+
Object Model
+
Relations
+
States
↓
Scene Model
因此:
Scene(t)=F(OM1(t),OM2(t),…,OMn(t),R(t))Scene(t)=F(OM_1(t),OM_2(t),…,OM_n(t),R(t))
其中:
- Scene(t)Scene(t):当前场景;
- OMi(t)OM_i(t):第 ii 个对象模型;
- R(t)R(t):对象之间的关系集合。
这就是:
Object Model
↓
Object Collection
↓
Relation
↓
State
↓
Scene Model
Object Model因此成为Scene Model的基本组成单位。
252.10 Object Model 与 Cognitive Model
第251章建立的Cognitive Model位于更高层。
二者可以形成:
Real-Time Data
↓
Element
↓
Object Instance
↓
Object Model
↓
Relation
↓
State
↓
Scene Model
↓
Cognitive Model
其中:
Object Model
回答:
这个对象是什么?当前有什么数据?有什么属性?处于什么状态?与谁有什么关系?
Cognitive Model
回答:
当前整个场景是什么?目标是什么?当前应该采用什么方法?下一步应该执行什么行为?
因此:
CM(t)=F(OM(t),Scene(t),Goal(t))CM(t)=F(OM(t),Scene(t),Goal(t))
其中:
- CM(t)CM(t):Cognitive Model;
- OM(t)OM(t):Object Models;
- Scene(t)Scene(t):当前场景;
- Goal(t)Goal(t):当前目标。
Object Model是Cognitive Model的重要基础输入。
252.11 Object Model 的动态更新
现实世界不断变化,因此对象模型必须支持:
Create
↓
Update
↓
Evaluate
↓
Relate
↓
State Change
↓
Update
完整过程:
Real-Time Data
↓
Object Identification
↓
Object Instance
↓
Object Model
↓
Attribute Update
↓
Relation Update
↓
State Update
↓
Scene Update
↓
Cognitive Model Update
例如:
egg_001
第一次建立:
Create(egg_001)
之后不断:
Update(egg_001, Position)
Update(egg_001, Distance)
Update(egg_001, Pressure)
Update(egg_001, Force)
Update(egg_001, State)
因此,ICAI中的Object Model必须支持时间连续的状态更新。
252.12 Object Model 的工程对象结构
在PHP OOP工程中,可以将Object Model定义为一个独立的运行对象。
例如:
class ObjectModel
{
protected $identity;
protected $className;
protected $type;
protected $attributes = array();
protected $relations = array();
protected $state = null;
protected $position = null;
protected $timestamp;
public function __construct($identity, $className)
{
$this->identity = $identity;
$this->className = $className;
$this->timestamp = time();
}
public function setAttribute($name, $value)
{
$this->attributes[$name] = $value;
}
public function getAttribute($name)
{
return isset($this->attributes[$name])
? $this->attributes[$name]
: null;
}
public function setRelation($relation)
{
$this->relations[] = $relation;
}
public function setState($state)
{
$this->state = $state;
}
public function getState()
{
return $this->state;
}
public function getIdentity()
{
return $this->identity;
}
}
这个类并不是针对:
Egg
Glass
Bottle
Cup
分别编写。
而是建立一个通用对象模型结构。
因此:
$egg = new ObjectModel('egg_001', 'Egg');
$glass = new ObjectModel('glass_001', 'Glass');
$bottle = new ObjectModel('bottle_001', 'Bottle');
三个对象使用相同的ObjectModel工程结构。
区别来自:
Object Identity
Object Class
Attributes
Relations
State
而不是来自三个完全不同的程序。
252.13 通用对象模型的重要意义
这是ICAI对象工程中非常重要的一点。
如果机器面对:
鸡蛋
玻璃杯
瓶子
手机
工具
零件
都分别建立:
GrabEgg()
GrabGlass()
GrabBottle()
GrabPhone()
GrabTool()
GrabPart()
系统就会逐渐变成大量场景程序的集合。
这种方式无法很好地解决:
世界对象数量无限、对象组合无限、场景变化无限的问题。
ICAI采用的是:
Object Class
+
Object Instance
+
Dynamic Attribute
+
Relation
+
State
↓
Generic Object Model
然后:
Object Model
+
Current State
+
Goal
↓
Method
因此方法不是绑定某一个具体对象,而是作用于对象模型所提供的数据。
例如:
Object Model
↓
Position
Distance
Velocity
Force
Pressure
Stability
State
↓
Method
↓
Action
这样:
Egg
Glass
Bottle
虽然对象不同,但只要具有适用于当前行为的结构和参数,就可以进入同一个通用方法计算体系。
252.14 Object Model 的数学表示
进一步,可以把对象模型表示为一个状态结构:
OMt=(I,C,At,Rt,St,Pt)OM_t=(I,C,A_t,R_t,S_t,P_t)
其中:
- II:对象Identity;
- CC:Object Class;
- AtA_t:时间 tt 的属性集合;
- RtR_t:时间 tt 的关系集合;
- StS_t:时间 tt 的状态;
- PtP_t:时间 tt 的空间位置。
当现实世界发生变化:
OMt→OMt+1OM_t \rightarrow OM_{t+1}
可以进一步表示:
OMt+1=F(OMt,Dt+1)OM_{t+1}=F(OM_t,D_{t+1})
其中:
- OMtOM_t:当前对象模型;
- Dt+1D_{t+1}:下一时刻获得的实时数据;
- FF:对象模型更新函数;
- OMt+1OM_{t+1}:更新后的对象模型。
因此,ICAI不是每次重新创建一个“世界对象”,而是:
Object Instance
↓
持续接收实时数据
↓
持续更新 Object Model
↓
持续更新 Attribute
↓
持续更新 Relation
↓
持续更新 State
这就形成了对象的时间连续性。
252.15 Object Model 的运行机制
ICAI对象模型可以形成如下运行机制:
Real-Time Data
↓
Data Parser
↓
Element
↓
Object Identification
↓
Object Instance
↓
Object Model
↓
Attribute Update
↓
Relation Update
↓
State Calculation
↓
Scene Update
↓
Cognitive Model
当行为发生后:
Cognitive Model
↓
Method
↓
Action
↓
Device
↓
World Change
↓
Real-Time Data
↓
Object Model Update
因此对象模型处于整个认知闭环的核心位置之一:
世界
↓
对象模型
↓
认知模型
↓
方法
↓
行为
↓
设备
↓
世界变化
↓
对象模型更新
这意味着Object Model并不是一次性的“对象描述”。
它是一个持续存在、持续更新、持续参与计算的机器对象运行结构。
252.16 Object Model 与机器行为
机器行为最终作用于现实对象。
因此:
Actiont=M(OMt,CMt,Goalt)Action_t=M(OM_t,CM_t,Goal_t)
其中:
- ActiontAction_t:当前动作;
- OMtOM_t:当前对象模型;
- CMtCM_t:当前认知模型;
- GoaltGoal_t:当前目标;
- MM:行为方法。
执行之后:
Worldt+1=Execute(Actiont)World_{t+1}=Execute(Action_t)
然后:
OMt+1=Update(Worldt+1)OM_{t+1}=Update(World_{t+1})
形成:
Object Model(t)
↓
Cognitive Model(t)
↓
Method(t)
↓
Action(t)
↓
World(t+1)
↓
Real-Time Data(t+1)
↓
Object Model(t+1)
因此,Object Model实际上参与了:
感知 → 认知 → 行为 → 反馈 → 再认知
整个机器闭环。
252.17 Object Model 的工程分层
在ICAI工程系统中,可以进一步建立:
Object Layer
│
├── Object Class
├── Object Instance
├── Object Model
├── Attribute
├── Relation
├── State
└── Object Repository
其中:
Object Class
定义对象类别结构。
Object Instance
表示具体对象。
Object Model
维护具体对象的运行结构。
Attribute
保存对象动态数据。
Relation
维护对象之间的关系。
State
保存对象当前状态。
Object Repository
负责对象模型的保存、查询、更新和生命周期管理。
这就可以进一步形成PHP OOP工程结构:
ObjectClass
ObjectInstance
ObjectModel
Attribute
Relation
State
ObjectRepository
各个类之间通过明确接口进行调用,而不是把所有逻辑集中到一个巨大程序中。
252.18 Object Model 的核心原则
ICAI Object Model需要遵循几个核心原则。
第一,对象实例化原则
现实对象必须转换为软件对象实例:
Real Object
↓
Object Instance
第二,动态更新原则
对象模型必须随实时数据变化:
OM(t)
→
OM(t+1)
第三,属性独立原则
属性应该能够独立增加、修改和计算:
Object
↓
Attribute
而不是将所有属性写死在对象类中。
第四,关系独立原则
对象关系应该独立管理:
Object
↓
Relation
↓
Object
第五,状态计算原则
状态应该根据属性、关系和条件动态计算:
Attribute
+
Relation
+
Rule
↓
State
第六,通用对象原则
不能针对现实世界中的每一个具体对象编写一套完全独立的程序。
应该:
Generic Object Model
+
Dynamic Data
+
Generic Method
形成可复用的机器认知对象结构。
252.19 Object Model 在ICAI体系中的位置
到本章为止,可以把ICAI核心结构进一步明确为:
Real World
↓
Real-Time Data
↓
Element
↓
Object Instance
↓
Object Model
├── Identity
├── Class
├── Attribute
├── Relation
├── State
└── Position
↓
Scene Model
↓
Cognitive Model
↓
Goal
↓
Method
↓
Behavior
↓
Action
↓
Device
↓
Feedback
↓
Object Model Update
↓
Re-Cognition
这里形成了一个重要的结构关系:
ObjectModel→SceneModel→CognitiveModelObjectModel \rightarrow SceneModel \rightarrow CognitiveModel
即:
对象模型构成场景模型,场景模型构成认知模型。
因此,Object Model是ICAI从“对象工程”进入“认知工程”的基础桥梁。
252.20 本章总结
Object Model|对象模型 是ICAI机器认知对象工程中的核心基础模型。
它不是简单的数据表,也不是传统意义上的静态对象描述,而是一个能够随着现实世界变化而持续更新的动态运行对象结构。
其基本形式为:
OMt=(I,C,At,Rt,St,Pt)OM_t=(I,C,A_t,R_t,S_t,P_t)
它将:
对象身份
+
对象类别
+
动态属性
+
对象关系
+
当前状态
+
空间位置
统一组织起来。
其核心运行过程为:
Real-Time Data
↓
Object Instance
↓
Object Model
↓
Attribute Update
↓
Relation Update
↓
State Update
↓
Scene Model
↓
Cognitive Model
行为执行后又反向进入:
Action
↓
Device
↓
World Change
↓
Real-Time Data
↓
Object Model Update
从而形成:
世界
→
实时数据
→
对象
→
对象模型
→
场景
→
认知
→
方法
→
行为
→
动作
→
设备
→
世界变化
→
反馈
→
对象模型更新
→
再认知
因此,第252章真正建立的不是一个“Object对象类”,而是ICAI机器世界中对象的动态运行模型。
到这里,第251章 Cognitive Model解决“机器当前如何组织认知”,第252章 Object Model解决“机器当前如何组织现实对象”,两者开始形成上下层结构:
Object Model→Cognitive ModelObject\ Model \rightarrow Cognitive\ Model
这也为后续的 Method Model|方法模型、Behavior Model|行为模型以及 Cognitive Engine|认知引擎 提供了直接的工程输入。