复杂系统学习(七):基于代理的模型I
目录
1. 什么是 "基于代理 "的模型?
1.1 ABM的例子——群集行为(Flocking Behaviour)
1.1.1 群集行为的‘类鸟群’模型
1.1.2 类鸟群的邻接函数
2. 代理的特征
3. 环境和交互
3.1 例子:蚁群中的觅食
3.2 NetLogo "蚂蚁 "模型
4. 代理决策
4.1 Reflexive agents
5. 摘要
1. 什么是 "基于代理 "的模型?
与细胞自动机(CA)一样,基于代理的模型(ABM)是一种对复杂系统进行建模的方法,其重点是系统的组成部分和它们之间的相互作用。
一个ABM通常有三个要素:
- 代理
- 环境(包括其他代理)
- 相互作用
ABMs与CA的不同之处在于,它们在如何表示代理行为和交互结构方面允许更大的灵活性。
1.1 ABM的例子——群集行为(Flocking Behaviour)
1.1.1 群集行为的‘类鸟群’模型
代理(类鸟群)行为包括:
- 向前运动
- 向左或向右转弯
- (可能出现的)加速和减速
1.1.2 类鸟群的邻接函数
环境由鸟群中的其他boids组成。
邻近函数是boids的感知范围(它能感知到其他代理的距离)。
相互作用:
Boids根据以下三个规则进行互动:
1. Separation(分离)
boids会转向以避免挤到附近的boids——避免碰撞。
2. Cohesion(凝聚)
boids将转向附近boids的平均位置——人多势众。
3. Alignment(对齐)
boids将转向附近boids的平均方位。
2. 代理的特征
基本特征:自成一体(self-contained)
一个代理是一个系统的模块化组件,它有一个边界,可以与其他代理明确区分并被识别。
集群模型(Flocking model):boids可以明确区分,并被其他boids识别(尽管不是唯一的)。
基本特征:自主(autonomous)
一个代理可以在其环境中独立运作,并在与其他代理的互动中独立运作(在定义的模型范围内)。
集群模型(Flocking model):每个boid的行为完全由它获得的关于其本地环境的信息定义。
基本特征:动态状态(dynamic state)
一个代理有属性,或变量,可以随着时间的推移而改变。一个代理的当前状态决定了其未来的行动和行为。
群集模型:一个boid的状态由它当前的方向和速度组成。这个状态决定了boid的运动,并根据它接收到的关于本地环境的信息进行修改。
基本特征:社会(social)
一个代理与其他代理有动态的相互作用,影响他们的行为。
群集模型:boids通过感知和反应其他boids的位置和行为而相互作用。
其他特征:适应性(adaptive)
个体可能有能力根据过去的经验学习和调整自己的行为。
例如,在捕食者——猎物模型中,被捕食者发现捕食者更多地攻击他们右边的同类,而不是他们左边的同类(因为它们的传感器/眼睛的位置),它们可能能够“学习”向捕食者的左边移动,从而逃脱检测。
其他特征:有目标的(goal-directed)
一个代理可能有它试图通过其行为来实现的目标。
例如,除了躲避捕食者,猎物还有收集材料筑巢的目,这将是影响他们行为的另一个因素。
其他特征:异质性(heterogeneous)
一个系统可能由不同类型的代理组成:这些差异可能是设计出来的(例如,捕食者和猎物),也可能是代理过去历史的结果(例如,捕食者的能量水平,基于它最近是否吃过东西。)
更复杂的ABM可能包括一系列不同类型的代理人;例如,土地使用的模型可能包括居民、规划者、基础设施提供者、企业、开发商和说客等。
3. 环境和交互
环境
- 代理监视其所处的物理或虚拟空间,并对其环境作出反应。
- CA的一维和二维网格是非常简单的环境。
- 环境可能是静态的(随着时间的推移而不变),也可能由于代理的行为而改变,也可能是独立的动态环境。
- 真实的环境通常是动态的(而且往往是随机的)。因此,我们可能无法预见环境的所有可能状态,以及代理将如何对其做出反应。
交互
- 复杂系统的一个定义特征是由代理邻域定义的代理之间的局部相互作用。
- 根据系统的结构,一个代理的邻域的组成可能是动态的(即随着时间的推移,在其环境中移动而变化)。
- 邻里关系,以及相互作用的模式,并不总是用空间术语来定义,它们也可能是具有特定拓扑结构的网络。
3.1 例子:蚁群中的觅食
蚂蚁群能够在没有首领、监督者或统治者的情况下取得非凡的组织成就,建造精致的巢穴并有效地觅食。
进化生物学家埃德蒙-O-威尔逊(Edmund O. Wilson)在20世纪60年代和70年代的工作使人们对蚂蚁社会是如何运作的有了新的认识。
单个蚂蚁根据相对简单的决策规则,执行有限的任务,捡拾和丢弃食物和建筑材料。
这些决策规则的输入是化学信号(信息素)。这些信号可以来自两个方面:
- 与附近蚂蚁的直接互动;以及
- 通过蚂蚁在环境中沉淀的信息素进行交流。
蚁群觅食:
3.2 NetLogo "蚂蚁 "模型
蚂蚁的规则
如果蚂蚁不携带食物:
- 在环境中随机移动
- 如果遇到食物信息素,朝信号最强的方向移动
如果一只蚂蚁遇到了食物:
- 捡起它
如果一只蚂蚁正在搬运食物 :
- 沿着巢穴信息素的梯度向巢穴返回
- 在移动时将食物信息素存入环境中
环境
- 有一个从巢穴中扩散出来的巢穴信息素梯度
- 食物信息素会随着时间的推移而蒸发掉
4. 代理决策
代理人通常被设计为做出理性的(rational)决定:他们会根据迄今为止收到的信息,采取行动,使其行为的预期价值最大化。
:一个代理的感知可能不能提供所有需要的信息。
:代理的行为可能不会产生预期的结果。
所以,
。
代理的决策可能源于:
- 概率性:用分布表示决策
- 基于规则:对决策过程进行建模
- 适应性:代理人可以通过强化或进化来学习
选择通常取决于模型的目的(它被用来回答什么问题?)
代理人决策的范围可以从简单到复杂。
4.1 Reflexive agents
具有内部状态的反射性代理
目标驱动的代理
功利主义代理
学习代理
5. 摘要
基于代理的模型由代理、环境以及代理与(a)其他代理和(b)环境之间的相互作用组成。
ABM的特点是分散的信息和决策,并能重现复杂系统中的涌现行为和自组织。
ABMs被广泛运用于各种领域:生态学、社会科学、经济学、政治学等。
ABMs可以比CAs复杂得多。
复杂系统学习(七):基于代理的模型I相关推荐
- 【人工智能与深度学习】基于能量的模型中的对比方法
[人工智能与深度学习]基于能量的模型中的对比方法 回顾 在自我监督学习中的对比法 Contrastive embedding 自我监督的结果(MoCo,PIRL,SimCLR) SimCLR 降噪自动 ...
- 【深度学习】基于PyTorch的模型训练实用教程之数据处理
[深度学习]基于PyTorch的模型训练实用教程之数据处理 文章目录 1 transforms 的二十二个方法 2 数据加载和预处理教程 3 torchvision 4 如何用Pytorch进行文本预 ...
- 系统学习Pytorch笔记六:模型的权值初始化与损失函数介绍
Pytorch官方英文文档:https://pytorch.org/docs/stable/torch.html? Pytorch中文文档:https://pytorch-cn.readthedocs ...
- 基于代理的西亚城市动态模拟:难民的影响
介绍 大量人口的迅速国际移徙在国家内部和国家之间产生了深远的影响.我们在这项工作中的动机是开发一个基于代理的模型(ABM),以捕捉这种移民和难民流动的存在,并探索对城市动态的影响:人口动态,隔离,房地 ...
- 初探强化学习(7)基于模型的强化学习的应用综述
本文是直接翻译一篇文章的,我先把原文地址放在这里. 原文名字为:Survey of Model-Based Reinforcement Learning: Applications on Roboti ...
- Vue.js实战之系统学习第七节
想看上一节的请点击: Vue.js实战之系统学习第六节 接下来我们要学习第七节了,时间过的好快. 组件详解 组件是Vue.js的核心功能,也是整个框架设计最精彩的地方,当然也是最难掌握的.本章节将带你 ...
- 基于adams与simulink的七自由度机械臂模型与控制仿真
基于adams与simulink的七自由度机械臂模型与控制仿真 最近在搞adams与simulink联合仿真,发现网上关于高自由度机械臂的建模与仿真中文资料很少,也没有开源模型.因此将我的学习成果开源 ...
- 基于语义嵌入模型与交易信息的智能合约自动分类系统
摘要: 作为区块链技术的一个突破性扩展,智能合约允许用户在区块链上实现个性化的代码逻辑从而使得区块链技术更加的简单易用.在智能合约代码信息迅速增长的背景下,如何管理和组织海量智能合约代码变得更具挑战性 ...
- ICML 2020 | 基于连续动态系统学习更加灵活的位置编码
论文标题: Learning to Encode Position for Transformer with Continuous Dynamical Model 论文作者: Xuanqing Liu ...
最新文章
- 测试RDA5807收音机模块
- 2018新秀杯a城轨司机调度_城市轨道交通行车调度问题与优化方式研究
- sap权限激活_宅出职场含金量!SAP 解决方案培训课程线上免费学
- OpenCV扫描图像对象的实例(附完整代码)
- git提交屏蔽某java类_git 删除某次指定的提交
- 案例:返回浏览器需要的页面http服务器-代码实现
- 分布式表格系统Google Bigtable详解
- Kotlin学习笔记 第二章 类与对象 第三节接口 第四节 函数式接口
- 案例:实现第一个Filter程序
- Leetcode143. 重排链表 (golang描述)
- zabbix-3.0.3 mysql表分区的方法
- 疯狂的程序员--绝影
- c4d安装没有出现语言文字,关于C4D以及渲染器插件安装时遇到的问题以及解决方法...
- 《沉默的真 相》的舆情分析及文本挖掘(二)——以原著小说,京东商品为例
- 复合调味品,是年轻人新的追逐吗?
- 来自尼古拉斯的编码风格
- 法国“毁容”女教师请求安乐死
- Java 生成各种 PDF 实战方案(图片、模板、表格)
- Matlab基本函数-floor函数
- 引用参考文献标准格式
热门文章
- 【Python • 项目实战】pytesseract+pyqt实现图片识别软件小项目——(二)实现QQ截图功能
- 2016年计算机维护试题,2016年计算机二级考试JAVA练习试题
- Quick MTF 照相机镜头图像质量测试程序-UPDATE
- 基于java靓车汽车销售网站计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- Busybox 命令大全~~
- 硬断点和软断点的区别
- html css javascript实现弹弹球
- 更换ros安装的opencv
- 试用了阿里云市场的验证码识别api,真的牛批,传统4位数验证码识别率超高
- tcp和icmp测速哪个好_什么是TCP和ICMP?