实体
定义
实 体是系统仿真模型中具有属性和行为的主体,包括Agent,Cell,Link
个体和群体
种群
实体是由一个或多个个体组成的集合,也被称为“种群”
观察者
- 统一指挥个体按照逻辑顺序行动
- 承载公共属性和行为,如一个交易者群体的平均收益率可以保存在观察者的变量中;再如一个采用风险池模型的DeFi借贷协议(如Compound)可以建模为一个Agent,它的公共资金池可以建模为该Agent观察者的容器对象,各种不同资产的存借规则虽然由各种资产的智能合约个体控制,而资产却保存在该公共资金池中
- 控制个体产生和消亡,如一个初始个体数量为0的产品用户群体Agent,可以由观察者按规则控制老用户的流失和新用户的出现,再如研究一个鸟群Agent系统飞行时需要实时控制鸟群规模时
- 全局观察者是全局流程执行者,全局属性的所有者
- 观察者永远存在,即便该种群的所有个体都已被销毁
属性和行为的归属
-
个体属性和行为,每个个体都拥有一份自己的实例
例子一个由100个个体组成的名为“交易者”Agent,有名为“钱包”的个体容器,有名为“交易下单的”个体流程,这意味着每个个体都有自己的独立钱包和独立交易下单行为
-
创建行为和属性时需要区分归属于观察者还是个体(默认),相应的画布对象图标也有区别,重影表示属于观察者


各种实体的共同点和差异
共同点
Agent、Cell、Link组成了系统,都拥有自己的行为和属性、都有个体和观察者、都可以和其它实体交互,都可以定义为块,都是模拟统计口径的基本单位
差异
在各自功能、具有的能力、对外部依赖性、内置属性和内置行为等方面都不同
Agent

拥有在Cell空间中运动的能力、可以与另一个Agent产生Link关系,可以被创建和销毁,且存在不依赖于外部
- 交易用户、EOA实体
- 智能合约
- 协议(智能合约集合)等
Link

没有运动能力,实体存在依赖于Agent的存在,毕竟没有个体就不存在他们间的关系,在已经有Agent实体下,可以被创建和销毁,但在Agent消亡后相关Link一定会消亡
- 投票者之间可能存在相互影响观点的关系
- 投票者和社区提案存在支持和反对的单向关系
- 社区提案间存在相互矛盾或促进关系
Cell

代表空间,是Agent运动的场所,存在不依赖外部,永远不会消亡(没有内置Die方法),即种群数量在初始设定好后,空间的分割颗粒度不会再改变
- 元胞自动机NFT
- 狼吃羊、羊吃草的游戏中的草原
可以理解Agent是一种通用智能体,而Cell和Link是专门应用在模拟物理空间和连接网络领域的特殊智能体。
实体行为的自发性
- 实体的行为分为主动与被动,由其行为流程的开始事件决定
- 主动行为是自发(系统Tick触发)的,无需依赖他人
- 被动行为依赖外部触发,如被调用而触发,或父级流程触发,或接收到消息
- 各类实体都可以有主动行为和被动行为,并非Agent都是主动行为、Cell与Link都是被动行为
- 无论主 动和被动,动作的执行者主体都是流程所在的实体(的观察者或个体)
- 用户间的关系Link强度(
Weight内置属性)可能随着他们的财富差值变化而变化 - 房间(Cell群)中某个点(Cell个体)的化学信息素浓度会随时间发生扩散
- 草原的每个地块(Cell)的草可能被食草动物吃掉,也会随时间而自发生长
内置属性
内置属性是实体具有的固有属性,如Agent的外形(Shape),一条Link的两个Agent起止端点列表(Ends)、一个二维空间中某个格子的中心坐标(Coordinates)等,实体内置属性章节提供了技术细节说明
-
固有性
- 内置属性由系统自带,创建一个实体时就会同时被创建,无法删除
- 内置属性是实体固有的,无论是否添加引用到画布中
-
查看

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

-
图形化建模
内置属性没有画布原型对象,所以你可以使用引用对象用于图形化建模
-
创建内置属性引用
通常引用有三种创建方式,但方式2略有不同,而需点击相应内置属性的添加按钮(如下图),其它方式都适用

内置行为
也叫内置方法、内置流程,是实体具有的固有的流程,如:Agent有死亡方法Die
-
固有性
内置行为由系统自带,创建一个实体时就会同时被创建,不能被删除
-
查看
模型对象树中对象的内置菜单中可以看到内置行为,如上图
-
建模使用
-
实体的内置行为章节提供了技术细节 说明
继承
概念
实体可以继承自一个实体定义,从而获得其行为和属性,例如:羊和狼可以继承哺乳动物(块),套利交易者和技术指标交易者可以继承普通交易者(块)等
图形化建模实现
-
在实体对象内画布拖入放置块(定义)代表继承,例如新建一个狼Agent,从库中拖拽放置“哺乳动物”块到其内部画布,如下图

-
也可以从组件栏拖拽放置一个Agent对象到当前 Agent画布,代表继承一个空定义
取消继承
删除上述Block实例即可
同类定义才能被继承
如一个Cell(块)不能放入Agent对象中被继承