首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第252章 Object Model|对象模型

第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|认知引擎 提供了直接的工程输入。

Leave a Reply

Your email address will not be published. Required fields are marked *