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

第13章 Model

第13章 Model

本章大纲

  1. Model 定义
  2. Web Model
  3. SAI Model
  4. Element Model
  5. Object Model
  6. Property Model
  7. Relation Model
  8. State Model
  9. Memory Model
  10. Experience Model
  11. Model 与 Engine
  12. Model 实际案例

13.1 Model 定义

在软件框架中,Model主要负责对系统中的数据、对象及其状态进行组织、描述、读取、保存和管理。

在 SAI Framework 中,Model 不是“智能本身”,也不是 Cognition、Reasoning 或 Decision。

它主要解决的是:

数据是什么
 ↓
数据如何描述
 ↓
数据之间有什么关系
 ↓
数据当前是什么状态
 ↓
数据如何读取
 ↓
数据如何保存

因此可以定义:

SAI Model 是用于描述、组织、读取、保存和管理 SAI 内部对象、元素、属性、关系、状态、记忆和经验等数据资源的软件层。

Model 的核心职责可以表示为:

定义
 ↓
组织
 ↓
读取
 ↓
修改
 ↓
保存
 ↓
提供给 Engine

例如:

Object Model
      ↓
提供对象数据
      ↓
Object Engine
      ↓
对象处理

Model 提供数据,Engine 使用数据执行处理。


13.2 Web Model

在传统 Web Framework 中,Model 通常处于 MVC 的 **M(Model)**层。

典型结构:

Request
   ↓
Controller
   ↓
Model
   ↓
Database
   ↓
Model
   ↓
Controller
   ↓
View
   ↓
Response

例如一个用户系统:

User
├── id
├── name
├── email
└── status

Model 可以负责:

查询 User
创建 User
修改 User
删除 User
保存 User

因此 Web Model 通常更加关注:

数据
数据库
持久化
业务数据

但是 SAI Framework 中的 Model 范围更广。


13.3 SAI Model

SAI Model 不只是数据库 Model。

SAI 中存在大量需要被描述和管理的内部资源:

Element
Object
Property
Relation
State
Fact
Memory
Experience

因此可以形成:

SAI Model
│
├── Element Model
├── Object Model
├── Property Model
├── Relation Model
├── State Model
├── Memory Model
└── Experience Model

这些 Model 负责描述不同类型的数据。

例如:

Object Model
     │
     ├── Object ID
     ├── Object Type
     ├── Properties
     ├── State
     └── Relations

然后由相应 Engine 对这些数据进行处理。

核心关系:

Model
 ↓
数据与结构
 ↓
Engine
 ↓
计算与处理

所以:

Model 负责“有什么”,Engine 负责“怎么处理”。


13.4 Element Model

Element 是 SAI 中的基础信息元素。

例如:

temperature
32
fan
ON
room

这些信息经过组织之后,可以成为 Element。

Element Model 可以描述:

Element
├── id
├── type
├── name
├── value
├── source
└── time

PHP OOP 示例:

<?php

namespace SAI\Model;

class ElementModel
{
    protected $data = array();

    public function create($id, $type, $value)
    {
        $this->data[$id] = array(
            'id' => $id,
            'type' => $type,
            'value' => $value
        );

        return $this->data[$id];
    }

    public function get($id)
    {
        return isset($this->data[$id])
            ? $this->data[$id]
            : null;
    }
}

这里 Model 只是负责保存和读取 Element 数据。

它本身并不进行认知。


13.5 Object Model

Element 可以进一步组织成为 Object。

例如:

Element
├── fan
├── speed
├── state
└── room

经过对象组织:

Fan
├── id = fan01
├── speed = 3
├── state = OFF
└── location = room01

Object Model 可以负责:

创建对象
读取对象
修改对象
保存对象
删除对象

结构:

Object Model
      │
      ├── Identity
      ├── Property
      ├── State
      ├── Method
      └── Relation

因此 Object Model 是 SAI 对象数据的主要管理层之一。


13.6 Property Model

Property 描述 Object 的特征。

例如:

Fan
├── speed = 3
├── state = ON
├── power = 50W
└── location = room01

其中:

speed
state
power
location

都是 Property。

Property Model 可以表示:

<?php

namespace SAI\Model;

class PropertyModel
{
    protected $properties = array();

    public function set($objectId, $name, $value)
    {
        $this->properties[$objectId][$name] = $value;
    }

    public function get($objectId, $name)
    {
        if (!isset($this->properties[$objectId])) {
            return null;
        }

        if (!isset($this->properties[$objectId][$name])) {
            return null;
        }

        return $this->properties[$objectId][$name];
    }
}

例如:

$model->set('fan01', 'speed', 3);
$model->set('fan01', 'state', 'ON');

Model 保存:

fan01.speed = 3
fan01.state = ON

13.7 Relation Model

SAI 中的 Object 并不是孤立存在的。

Object 之间可以存在 Relation。

例如:

Person
   │
   └── located_in ──→ Room

或者:

Fan
   │
   └── located_in ──→ Room

Relation 可以采用:

Subject
Relation
Object

结构:

Person
  │
  │ located_in
  ↓
Room

Relation Model 负责保存这种关系:

<?php

namespace SAI\Model;

class RelationModel
{
    protected $relations = array();

    public function add($subject, $relation, $object)
    {
        $this->relations[] = array(
            'subject' => $subject,
            'relation' => $relation,
            'object' => $object
        );
    }

    public function all()
    {
        return $this->relations;
    }
}

例如:

$model->add(
    'fan01',
    'located_in',
    'room01'
);

形成:

fan01
 ↓
located_in
 ↓
room01

Relation Model 不负责推理。

它只是保存关系。


13.8 State Model

State 表示对象当前的动态状态。

例如:

Fan
state = OFF

执行:

turnOn()

之后:

Fan
state = ON

State Model 可以管理:

Object
 ↓
Current State
 ↓
State History

例如:

fan01
├── state = ON
├── speed = 3
└── updated_at = ...

状态非常重要,因为 SAI 的行为通常与状态有关。

例如:

IF
temperature > 30
AND
fan.state = OFF

THEN
fan.turnOn()

这里:

temperature
fan.state

都是推理所需要的状态或事实数据。

但执行判断的是 Reasoning / Decision 等 Engine,而不是 State Model。


13.9 Memory Model

Memory 是 SAI 的记忆机制。

Memory Model 则负责管理记忆数据。

可以包括:

Memory Model
│
├── Fact Memory
├── State Memory
├── Short Memory
├── Long Memory
└── Experience Memory

例如:

Fact
temperature = 32

或者:

State
fan = OFF

Memory Model 可以保存:

memory_id
type
content
source
time
state

示例:

<?php

namespace SAI\Model;

class MemoryModel
{
    protected $memory = array();

    public function remember($type, $content)
    {
        $this->memory[] = array(
            'type' => $type,
            'content' => $content,
            'time' => time()
        );
    }

    public function all()
    {
        return $this->memory;
    }
}

这里要特别注意:

Memory Model 是记忆数据管理层,不等于完整的 Memory Engine。

Model 保存和读取记忆。

Memory Engine 则可以进一步执行:

存储
 ↓
索引
 ↓
检索
 ↓
匹配
 ↓
调用

13.10 Experience Model

Experience 是 SAI 对过去行为过程及其结果的记录和组织。

例如:

场景:
房间温度 32℃
风扇 OFF

行为:
打开风扇

结果:
温度下降

可以形成一条经验:

Experience
├── Scene
├── Condition
├── Behavior
├── Action
├── Result
└── Time

Experience Model 可以保存:

experience_id
scene
condition
action
result
time

例如:

$experienceModel->save(array(
    'scene' => 'room01',
    'condition' => 'temperature > 30',
    'action' => 'fan.on',
    'result' => 'temperature_decreased'
));

形成:

场景
 ↓
条件
 ↓
行为
 ↓
结果
 ↓
经验

后续 Learning Engine 可以使用这些经验进行学习和更新。

因此:

Experience Model
        ↓
保存经验
        ↓
Learning Engine
        ↓
经验处理
        ↓
Knowledge / Ability / Memory Update

13.11 Model 与 Engine

Model 和 Engine 是 SAI Framework 中两个非常重要但职责不同的部分。

最简单的区分:

Model = 数据
Engine = 处理

例如:

Object Model
     ↓
保存 Fan
     ↓
Object Engine
     ↓
处理 Fan

再例如:

Memory Model
     ↓
保存 Fact
     ↓
Memory Engine
     ↓
检索 Fact

又例如:

Experience Model
     ↓
保存 Experience
     ↓
Learning Engine
     ↓
分析 Experience

可以形成:

              Model
                │
        数据 / 对象 / 状态
                │
                ▼
             Engine
                │
          计算 / 判断 / 处理
                │
                ▼
             Result

Model 不应该承担所有智能功能。

例如不应该设计成:

Model
├── 读取数据
├── 推理
├── 决策
├── 学习
├── 行动
└── 控制设备

这样会导致 Model 职责过重。

更合理的是:

Model
 ↓
提供数据
 ↓
Engine
 ↓
处理数据
 ↓
Result

13.12 Model 实际案例

下面使用一个简单的房间风扇场景说明 SAI Model 如何工作。

说明:以下 PHP 代码是本教程的示例代码,用于说明 SAI Framework 的 Model 设计,并不代表当前已经实际创建或验证运行。

场景:

Room
temperature = 32

Person
state = PRESENT

Fan
state = OFF

首先使用 Object Model 保存对象:

$objectModel->create('room01', 'room');
$objectModel->create('person01', 'person');
$objectModel->create('fan01', 'fan');

Property Model 保存属性:

$propertyModel->set(
    'room01',
    'temperature',
    32
);

$propertyModel->set(
    'person01',
    'state',
    'PRESENT'
);

$propertyModel->set(
    'fan01',
    'state',
    'OFF'
);

Relation Model 保存关系:

$relationModel->add(
    'person01',
    'located_in',
    'room01'
);

$relationModel->add(
    'fan01',
    'located_in',
    'room01'
);

此时 Model 层的数据可以理解为:

Room
├── temperature = 32

Person
├── state = PRESENT
└── located_in → Room

Fan
├── state = OFF
└── located_in → Room

然后交给 Engine:

Object Model
Property Model
Relation Model
State Model
        │
        ▼
   Cognition / Reasoning
        │
        ▼
      Decision
        │
        ▼
      Behavior
        │
        ▼
    fan.turnOn()

执行行为之后:

Fan
state = ON

State Model 更新:

OFF
 ↓
ON

随后外部环境发生变化:

temperature
32℃
 ↓
29℃

Feedback 进入 SAI:

Feedback
 ↓
Information
 ↓
Perception
 ↓
Memory
 ↓
Experience

Experience Model 保存:

Scene:
room01

Condition:
temperature > 30

Action:
fan.turnOn()

Result:
temperature decreased

最终形成一个完整的数据闭环:

Information
 ↓
Element Model
 ↓
Object Model
 ↓
Property Model
 ↓
Relation Model
 ↓
State Model
 ↓
Reasoning Engine
 ↓
Decision Engine
 ↓
Behavior Engine
 ↓
Action
 ↓
Feedback
 ↓
Memory Model
 ↓
Experience Model
 ↓
Learning Engine
 ↓
Model Update

本章小结

Model 是 SAI Framework 的数据与对象组织层,负责描述、保存、读取和管理系统中的各种数据资源。

核心 Model 可以表示为:

SAI Model
│
├── Element Model
├── Object Model
├── Property Model
├── Relation Model
├── State Model
├── Memory Model
└── Experience Model

Model 与 Engine 的关系:

Model
负责“有什么”
      ↓
Engine
负责“怎么处理”

因此,SAI Framework 中:

Model ≠ Intelligence
Model ≠ Cognition
Model ≠ Reasoning
Model ≠ Decision
Model ≠ Learning

Model 是 Individual 内部数据组织的重要基础,而真正的 SAI 运行机制需要由 Perception、Cognition、Memory、Reasoning、Decision、Behavior、Learning 等 Engine共同完成。

Leave a Reply

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