这一切要从一枚核弹说起
阳光明媚的五月,这是一个繁忙工作日的正午,一辆普通的小货车悄悄地开进了美国华盛顿首府的市中心。就在白宫附近的一个十字路口,突然货车中的自杀式袭击者按下了炸弹的开关。炸弹是恐怖分子几周前用劫持到的5公斤高度浓缩铀制成,并且成功地运送到了这个国家的政治中心。
瞬间,爆炸的冲击波毁掉了至少相距一公里内的所有建筑物,城市大部分街区在一个核火球中消失了,造成了成千上万的伤亡。强大的电磁脉冲还让城市中的电网和通讯设施全都瘫痪,爆炸之后的蘑菇云被风刮成了放射性尘降物,城市也陷入了大面积黑暗。惊恐的人们迅速挤满了街道:有些人朝着爆炸中心的反方向想要逃离这个地区,但更多的人在寻找失踪的亲朋好友或想办法获得医疗救助。
上图就是一个多主体仿真模型的快照。其中,**黄色表示放射性尘埃扩散的范围,蓝色柱状体表示健康人员的数量,红色柱状体**代表感染放射性疾病或者死亡人员的数量。
上面提到的这个虚构但是有着严肃意义的故事和配图来自于《Science》杂志记者 M.Mitchell Waldrop 于2018年4月13号发表的一篇文章:
这个被称为 National Planning Scenario 1 (NPS1)的核袭击模拟是一种起源于20世纪50年代的战争游戏,用来测试各个部门应急预案效果的安全方式。最初测试的方法是设定好固定的故事发展路线以及对人们行为的预测,经过几十年的发展,如今则是用计算机来模拟整个人工社会的情景。这种计算机仿真方法就是基于主体的建模(agent-based model)。
基于多主体的仿真建模
仿真是一种系统求解的方法。
熟悉编程的程序员都知道,编写程序的方式一般分为三种:面向过程、面向对象和面向函数。但随着人工智能的兴起,有一个叫做“面向主体编程”(Agent Oriented Programming)的概念也逐渐被人提起。与面向对象编程(OOP)不同的是:面向主体编程(AOP)中的主体是被投射了思维的对象,每一个主体都是一个自主的子程序**。
就像上述 NPS1 模型对该地区受影响人口的模拟场景,涉及的730000个主体都带有不同的特征,包括年龄、性别和职业等。这些主体会以接近普通人的行为方式来响应其他主体的行为和不断变化的灾难:例如恐慌、逃跑、努力寻找亲朋好友等。此外,模型还包含了主体所在环境的数字模拟:受到炸弹影响的建筑物、道路、电网、医院、手机信号塔以及受天气影响的尘降物扩散情况。
经济学和流行病学等领域中的传统方法是用固定的方程从上到下对人类的行为进行计算,但实际上金融崩溃或者疾病蔓延的发展都是自下而上的。多主体建模就是通过模拟许多个单独主体之间的相互作用,显示真实世界中事务的丰富性和自发性,为决策提供依据,这些是传统的方法难以模拟的。
例如,NPS1模型可以提醒管理者:X 点的停电很可能会导致 Y 点的交通堵塞;如果在危机早期就部署移动电话塔并恢复通讯,路上的居民数量会增多还是减少。
仿真研究循环
多主体建模可以追溯到1940年代,像阿兰•图灵(Alan Turing)这样的计算机先驱利用软件去模拟物理学和生物学中的复杂行为。但目前的多主体建模技术是指从1990年代中期才开始的一种新兴浪潮,并且目前已经成功地应用到了以下领域:
1. 社会学领域:通过模拟社会现象,了解复杂的群体行为。其中的经典案例有 Robert Axtell 和 Joshua Epstein 提出的 Sugarscape 模型。
2. 城市规划领域:传统的交通模型使用方程组将大量移动的车辆作为一种流体来描述,由美国 Los Alamos 国家实验室开发的基于多主体建模的交通仿真系统(Transims)将每辆车和每个司机都作为公路网中单独的主体。由于在预测交通堵塞和环境污染上 Transims 比传统模型表现更好,相关的模型已经成为交通规划中的标准工具。
3. 公共卫生领域:越来越多的传染病学家开始采用多主体仿真模型。例如2014年西非埃博拉(Ebola)疫情爆发期间,通过使用多主体仿真模型来识别适合建立战地医院的地点;预测分析各地的疾病感染率;估算病人在不同路况的道路上行进距离和时间等等。
4. 经济学领域:世界银行的经济学家 Stéphane Hallegatte 的研究小组建立了一个代表全球140万个家庭(大约每个国家10,000个)的多主体仿真模型,然后考察气候变化和灾害将会如何影响普通民众的健康、食物安全和劳动生产力。
5. 互联网领域**:在现实中许多缺乏前置分析经验的领域,非常适合尝试使用多主体建模进行仿真分析。例如通过模拟每个用户的微观行为,可以分析微博或者微信群聊中的虚假信息的扩散模式。
多主体仿真工具
Ⅰ. NetLogo简介

Netlogo是一个多主体仿真建模的集成环境,是由Uri Wilensy在1999年发起的,并由美国西北大学 CCL 中心负责持续开发。其最新版本为Version 6.1.1,软件完全免费,可以下载桌面版本或者在线使用。项目主页为:
http://ccl.northwestern.edu/netlogo/
NetLogo是继承了Logo语言的一款编程开发平台,但它可以在建模中控制成千上万的个体。因此能很好地模拟微观个体的行为、宏观模式的涌现及两者之间的联系,特别适合用于模拟随时间发展的复杂系统。 
Uri Wilensy
顺便一提LOGO语言也是我的启蒙编程语言,大约是1996年我还在上小学的时候。那时候去机房上机还要脱鞋,操作系统也只有DOS系统。语言最大的特点是可以通过操纵屏幕上的小海龟来学习编写程序,现在Python内置的Turtle库也复刻了这一功能。

NetLogo的主要功能有:
- 多主体建模
- 运行控制
- 仿真输出
- 实验管理
- 系统动力学仿真
- 参与式仿真
- 模型库
从主页下载安装后就可以使用:
初学者可以通过内置的模型库快速学习其功能及基础语法:
关于软件的详细使用方法,我会在后面逐步更新一份免费的系列教程,此处就不详细展开。只简单展示一下NetLogo做多主体仿真的动态效果图:
兰顿蚂蚁(Langton’s ant)
生命游戏(Game of Life)
沙堆模型(sandpile model)
Ⅱ. 其他仿真建模工具
除了NetLogo之外,还有大量的多主体仿真建模工具:
其中有免费的Swarm、JADE (Java Agent DEvelopment Framework) ,也有商用需要付费的 Anylogic。
想要了解更多其他的平台可以阅读参考文献中的[4]和[5]。参考文献中的论文都已经打包上传到云盘,在公众号后台回复“多主体”便可获得免费下载链接。
References
[1]M. Mitchell Waldrop.FREE AGENTS[J].Science,2018,360:144-147.
[2]王树义,刁海伦.基于复杂系统仿真的微博客虚假信息扩散模型研究[J].情报科学,2014,32(11):133-138.
[3]刘永丹.基于Netlogo的微信群舆情演化模型实现[J].无线互联科技,2013(11):197-198.
[4]VISUALIZATION TOOLS FOR AGENT-BASED MODELING IN NETLOGO
[5]Sameera Abar,etc.Agent Based Modelling and Simulation tools: A review of the state-of-art software[J].Computer Science Review,2017,24:13-33.
欢迎关注我的公众号“数析万变”,原创技术观点第一时间推送。
原文链接:
