跳到主要内容

实体

定义

实体是系统仿真模型中具有属性和行为的主体,包括AgentCellLink

个体和群体

种群

实体是由一个或多个个体组成的集合,也被称为“种群”

提示
  • 多只羊Agent组成了羊群
  • 多个离散的Cell格子个体以点阵排列组成了一个二维平面空间
  • 人们两两间的关系Link个体构成一个社交网络

观察者

  • 实体种群都有一个“观察者”,观察者也有其属性和行为,但不会出现在世界视窗网络视图中,因此可以理解为观察者名义上代表着实体种群,而不在现实世界现身
提示:观察者建模使用
  • 统一指挥个体按照逻辑顺序行动
  • 承载公共属性和行为,如一个交易者群体的平均收益率可以保存在观察者的变量中;再如一个采用风险池模型的DeFi借贷协议(如Compound)可以建模为一个Agent,它的公共资金池可以建模为该Agent观察者的容器对象,各种不同资产的存借规则虽然由各种资产的智能合约个体控制,而资产却保存在该公共资金池中
  • 控制个体产生和消亡,如一个初始个体数量为0的产品用户群体Agent,可以由观察者按规则控制老用户的流失和新用户的出现,再如研究一个鸟群Agent系统飞行时需要实时控制鸟群规模时
  • 全局观察者是全局流程执行者,全局属性的所有者
  • 观察者永远存在,即便该种群的所有个体都已被销毁

属性和行为的归属

  • 个体属性和行为,每个个体都拥有一份自己的实例

    例子

    一个由100个个体组成的名为“交易者”Agent,有名为“钱包”的个体容器,有名为“交易下单的”个体流程,这意味着每个个体都有自己的独立钱包和独立交易下单行为

  • 创建行为和属性时需要区分归属于观察者还是个体(默认),相应的画布对象图标也有区别,重影表示属于观察者

各种实体的共同点和差异

共同点

Agent、Cell、Link组成了系统,都拥有自己的行为和属性、都有个体和观察者、都可以和其它实体交互,都可以定义为,都是模拟统计口径的基本单位

差异

在各自功能、具有的能力、对外部依赖性、内置属性内置行为等方面都不同

Agent

agent

拥有在Cell空间中运动的能力、可以与另一个Agent产生Link关系,可以被创建和销毁,且存在不依赖于外部

Agent在Web3的典型用例
  • 交易用户、EOA实体
  • 智能合约
  • 协议(智能合约集合)等

link

没有运动能力,实体存在依赖于Agent的存在,毕竟没有个体就不存在他们间的关系,在已经有Agent实体下,可以被创建和销毁,但在Agent消亡后相关Link一定会消亡

Link在Web3社区治理的典型用例
  • 投票者之间可能存在相互影响观点的关系
  • 投票者和社区提案存在支持和反对的单向关系
  • 社区提案间存在相互矛盾或促进关系

Cell

cell

代表空间,是Agent运动的场所,存在不依赖外部,永远不会消亡(没有内置Die方法),即种群数量在初始设定好后,空间的分割颗粒度不会再改变

Cell在Web3链上游戏设计领域的典型用例
  • 元胞自动机NFT
  • 狼吃羊、羊吃草的游戏中的草原
提示

可以理解Agent是一种通用智能体,而Cell和Link是专门应用在模拟物理空间和连接网络领域的特殊智能体。

实体行为的自发性

  • 实体的行为分为主动与被动,由其行为流程的开始事件决定
  • 主动行为是自发(系统Tick触发)的,无需依赖他人
  • 被动行为依赖外部触发,如被调用而触发,或父级流程触发,或接收到消息
  • 各类实体都可以有主动行为和被动行为,并非Agent都是主动行为、Cell与Link都是被动行为
  • 无论主动和被动,动作的执行者主体都是流程所在的实体(的观察者或个体)
Link和Cell行为例子
  • 用户间的关系Link强度(Weight内置属性)可能随着他们的财富差值变化而变化
  • 房间(Cell群)中某个点(Cell个体)的化学信息素浓度会随时间发生扩散
  • 草原的每个地块(Cell)的草可能被食草动物吃掉,也会随时间而自发生长

内置属性

内置属性是实体具有的固有属性,如Agent的外形(Shape),一条Link的两个Agent起止端点列表(Ends)、一个二维空间中某个格子的中心坐标(Coordinates)等,实体内置属性章节提供了技术细节说明

  • 固有性

    • 内置属性由系统自带,创建一个实体时就会同时被创建,无法删除
    • 内置属性是实体固有的,无论是否添加引用到画布中
  • 查看

    Entities002+1

    在模型对象树中,点击实体的内置菜单按钮(如上图样式),会弹出内置属性和行为菜单

    Entities003

  • 图形化建模

    内置属性没有画布原型对象,所以你可以使用引用对象用于图形化建模

  • 创建内置属性引用

    通常引用有三种创建方式,但方式2略有不同,而需点击相应内置属性的添加按钮(如下图),其它方式都适用

    Entities004

内置行为

也叫内置方法、内置流程,是实体具有的固有的流程,如:Agent有死亡方法Die

  • 固有性

    内置行为由系统自带,创建一个实体时就会同时被创建,不能被删除

  • 查看

    模型对象树中对象的内置菜单中可以看到内置行为,如上图

  • 建模使用

    • 与普通行为的流程组件放置在画布上不同,内置行为没有本体对象,只能被调用组件指向
    • 建模时点击一个调用请求调用对象,在属性面板中选择要调用的内置行为
  • 实体的内置行为章节提供了技术细节说明

继承

概念

实体可以继承自一个实体定义,从而获得其行为和属性,例如:羊和狼可以继承哺乳动物(块),套利交易者和技术指标交易者可以继承普通交易者(块)等

图形化建模实现

  • 在实体对象内画布拖入放置(定义)代表继承,例如新建一个狼Agent,从库中拖拽放置“哺乳动物”块到其内部画布,如下图

    Entities005

  • 也可以从组件栏拖拽放置一个Agent对象到当前 Agent画布,代表继承一个空定义

取消继承

删除上述Block实例即可

同类定义才能被继承

如一个Cell(块)不能放入Agent对象中被继承

多继承

  • 实体(子)内画布上拖放多个同类实体(父)块时表示多继承,当前实体将拥有父级实体的行为和属性
  • 此时同名属性按子级覆盖父级、父级先创建者覆盖后创建者为优先顺序,被覆盖者会在覆盖者被删除后生效
  • 子级与父级或多个父级同名自定义行为不会被覆盖
  • 父级内置行为和内置属性均无效

多级继承

  • 继承机制可适用于多级情况,即子实体拥有所有多级继承Block的属性和行为
例子
  • 一只狼具有年龄、捕食量和毛色属性,以及繁殖、捕食和嚎叫行为,如下图1(根画布狼实体封面)
  • 利用继承建模实现如下图2(狼实体内画布),毛色和嚎叫是狼实体特有属性行为(红色,子级),而捕食量属性和捕食行为继承于食肉动物(绿色,父级),而食肉动物又继承于哺乳动物(蓝色,祖级)因此也拥有其年龄属性和繁殖行为
  • 同名属性按子级覆盖父级原则
  • 同名行为都存在,请注意区分(比如重命名)

建模操作

基本

拖拽实体组件到画布即创建实体对象,在界面右侧的对象配置面板进行设置

实体内画布

实体对象都具有内部画布,点击控制条和实体封面的进入按钮即可从根画布进入实体内画布,如下图

Entities008

为实体创建行为和属性

  • 拖放流程(块)到实体内画布,表示为实体创建行为
  • 拖放数据组件到实体内画布表示为实体创建属性
  • 拖放同类实体(组件或块)到实体内画布,表示当前实体继承拖入的父级实体对象,不同类实体不能继承,所以无法放入

实体对象封面

将实体样式设置(下图红框按钮)为展开时会显示其封面

Entities009

  • 实体对象的封面可以“透视”内部的行为和属性,你可以控制(上图红色箭头)哪些行为或属性展示或不展示
  • 系统支持直接拖拽流程(块)和数据组件放入实体封面,从而快速创建实体行为和属性,便于搭建模型框架
  • 你可以使用辅助线连接实体及其封面中的流程,因此适合绘制系统图
  • 系统支持通过拖动实体封面上的流程和属性自动调整布局

    Entities010

  • 封面内的流程不能再展开