Agent建模讲义:复杂系统与Agent模型
导语
0. 引子
0. 引子
最近在准备这学期要开设的《ABM入门》课程。因为学时极其有限,所以将重点内容聚焦于回答“ABM是什么”和“ABM怎么用”两大基础问题。
在正式开课之前,作为一个引子,先聊一聊ABM在现代科学研究中究竟“能干什么”吧。
要弄清楚ABM在现代科学研究中的地位和作用,最好从科学研究范式发展过程说起。那么,什么是科学研究的范式呢?
范式(paradigm)一词较早由美国著名科学哲学家Thomas S. Kuhn在1962年出版的《科学革命的结构》一书中提出,指的是常规科学所赖以运作的理论基础和实践规范,是从事某一科学的科学家群体所共同遵从的世界观和行为方式。随着科学的发展,范式的基本理论和方法也在不断地发生变化。一般来说,一种新范式的产生,一方面是由于科学研究范式本身的发展,另一方面也源自于外部环境的推动。
迄今,科学研究范式经历了4个不同的发展阶段。
科学研究范式(来源:Gray 2009)
最近,也有人在此基础上提出了“第五范式”的概念。但无论如何,我们看到,不同范式都有着自己诞生和发展的特殊时代背景,他们所依赖的核心观点和方法论的不同,造就了各自的独特优势;当然,也有相当的局限性,这决定了他们具有各不相同的研究目的和适用范围。
ABM是建立在计算机仿真模拟第三范式之上的。其作为一种科学方法论的提出,较早可追溯到上个世纪中后期人们对经济学、社会科学及工程领域中广泛存在的复杂系统和复杂现象的探索。如阿瑟领导开发的人工股票市场模型、谢林的居住隔离模型、朗顿的人工生命模型等等,几乎都是在这一时期提出和发展起来的。通过借助于计算机平台,ABM允许在一个人工搭建的虚拟环境中创建若干具有自治性的、“活”的主体(Active agents),这些主体之间以及主体同它们赖以生存的环境之间彼此交互作用,进而在系统的宏观层次上涌现出较为复杂的现象及规律。据此,ABM能够帮助研究者们在微观个体行动和宏观结果之间建立起连接的“纽带”,并且其基于仿真(Simulation)的本质特征也使得人们开展一系列低成本、可控性的计算实验分析和研究成为可能。
自底向上的涌现(来源:Monostori 2008)
-
美国国家科学院在2001年10月4-6日在加利福尼亚州欧文市组织举行了一期Arthur M. Sackler座谈会,主题为“适应性Agent,智能和人类组织的涌现:通过ABM刻画复杂性”。与会各位专家学者的观点后来发表在PNAS在2002年5月份出版的一期专刊上。Steven C. Bankes在文中写到:ABM已经在社会科学各个领域日益得到人们的认可和热捧,无论在本次研讨会上仍然存在多少分歧,有一点共识是非常明确的:ABM 正在为推动社会科学理论的变革带来新的希望。 -
2009年,国际权威学术期刊Journal of Artificial Societies and Social Simulation (JASSS) 在线发表综述文章《A survey of agent-based modeling practices (January 1998 to July 2008)》,对ABM研究的十年进展作了较为全面系统的文献梳理。 -
2021年,知名学者Li An等人在Ecological Modeling杂志发表综述文章《Challenges, tasks, and opportunities in modeling agent-based complex systems》,对基于Agent的复杂系统建模当前面临的挑战、任务和新发展机遇等作了系统评述,并在文末呼吁建立一门新的基于Agent的复杂系统(Agent-based complex systems, ACS)科学,以期为应对人类社会和经济发展所面临的一系列重大挑战提供一条有效的途径。
上述文献基本勾勒了ABM及其发展应用的现状和前沿动态。我们将在下一讲介绍ABM入门参考书目,并正式开启探索ABM的神秘之旅。
1. 部分阅读材料
1. 部分阅读材料
历时一个多月,终于赶在十一假期之前做出了授课所需的全部课件ppt。虽然混迹于以ABM为首的非主流科研最边缘十几年,但是当翻出多年来的所有珍藏作一次系统的梳理,面对一篇篇经典佳作,回忆起自己一路走来的辛酸历程,感慨之余也是收获颇丰。也许这就叫温故而知新吧。
复杂系统理论基础
-
梅拉妮·米歇尔著. 唐璐译. 复杂(第2版). 湖南科学技术出版社, 2018
-
约翰·霍兰著. 周晓译. 隐秩序: 适应性造就复杂性. 上海科技教育出版社, 2000
-
约翰·霍兰著. 陈禹等译. 涌现: 从混沌到有序. 上海世纪出版集团, 2006
-
欧阳莹之著. 田宝国等译. 复杂系统理论基础. 上海科技教育出版社, 2002
-
何大韧等编著. 复杂系统与复杂网络. 高等教育出版社, 2009
-
John H. Miller. Complex Adaptive Systems : An Introduction to Computational Models of Social Life. Princeton University Press, 2011
-
Stefan Thurner, Rudolf Hanel, and Peter Klimek. Introduction to the Theory of Complex Systems. Oxford University Press, 2018
-
Averill M.Law 著,范文慧 译. 仿真建模与分析(第5版). 清华大学出版社, 2017
-
方美琪和张树人编著. 复杂系统建模与仿真(第2版). 人民大学出版社, 2011
-
Nigel Gilbert. Agent-Based Models (2nd edition). Sage Publications, 2020
-
Uri Wilensky and William Rand. An Introduction to Agent-Based Modeling: Modeling Natural, Social, and Engineered Complex Systems with NetLogo. The MIT Press, 2015
-
Steven F. Railsback and Volker Grimm. Agent-Based and Individual-Based Modeling: A Pratical Introduction(2nd edition). Princeton University Press, 2019
期刊文献
-
Davis, J. P., Eisenhardt, K. M., & Bingham, C. B. (2007). Developing Theory Through Simulation Methods. Academy of Management Review, 32(2), 480–499.
-
Macal, C. M. (2016). Everything you need to know about agent-based modelling and simulation. Journal of Simulation, 10(2), 144–156.
-
Heath, B., Hill, R., & Ciarallo, F. (2009). A Survey of Agent-Based Modeling Practices (January 1998 to July 2008). Journal of Artificial Societies and Social Simulation, 12(4).
-
Gagliolo, M. (2017). Simulate this! An Introduction to agent-based models and their power to iImprove your research practice. International Review of Social Psychology, 30(1)
-
Squazzoni, F., Polhill, J. G., Edmonds, B., Ahrweiler, P., Antosz, P., Scholz, G., Chappin, É., Borit, M., Verhagen, H., Giardini, F., & Gilbert, N. (2020). Computational Models That Matter During a Global Pandemic Outbreak: A Call to Action. Journal of Artificial Societies and Social Simulation, 23(2), 10.
-
An, L., Grimm, V., Sullivan, A., Turner II, B. L., Malleson, N., Heppenstall, A., Vincenot, C., Robinson, D., Ye, X., Liu, J., Lindkvist, E., & Tang, W. (2021). Challenges, tasks, and opportunities in modeling agent-based complex systems. Ecological Modelling, 457, 109685.
-
Axtell, R. L., & Farmer, J. D. (2023). Agent-Based Modeling in Economics and Finance: Past, Present, and Future. Journal of Economic Literature. https://doi.org/10.1257/jel.20221319
2. 复杂系统和Agent模型
2. 复杂系统和Agent模型
-
对齐规则:每一只鸟由于其群居性特征,都倾向于同附近的鸟群(如果存在的话)在飞行方向上大致保持一致; -
靠近规则:每一只鸟都主动向附近的其它鸟移动,以避免掉队; -
分离规则:如果两只鸟之间的距离太近,则选择远离以避免发生碰撞。
-
主体:是指系统中任何具有一定自治性的实体或者事物。它们通常具有特定的属性,围绕某一具体目标而开展相应的行动。这种行动是相对独立的,不受任何中心控制,而是只取决于自身的状态和目标。 -
环境:则为主体开展行动提供了一个场所。环境既可以是基于地理信息的某一物理空间,也可以是针对主体之间网络关系的具体表达。 -
互动活动:主体之间以及主体和环境之间的互动活动,可以只是以“if-then”规则为基础的“刺激-响应”,也可以包括基于经验的学习等复杂行为。此外,这种互动活动的范围也往往是有限的、局部的,并且允许主体根据自身和周围环境的历史及现状对自身行动作出调整,表现出一定的适应性特征。
概括来讲,ABM的核心优势或者适用条件包括:
-
系统拥有中等数量规模的主体,并且它们之间存在非线性作用关系;
-
主体具有自治性、异质性等特征;
-
主体之间的互动活动是相当复杂的;
-
主体和环境之间的互动活动也相当复杂;
-
通过引入时间的概念,ABM能够极大程度地展现模型结果的丰富细节。
3. NetLogo软件
3. NetLogo软件
-
一是采用通用编程语言,如Python、Java、C++等; -
二是采用面向类库方式,如基于JAR的MASON和基于Microsoft.NET框架的Repast; -
三是集成开发环境,如NetLogo; -
四是采用上述三者相混合的方式,如AnyLogic或者Repast Simphony等等。
国际学术期刊《Computer Science Review》在2017年发表了一篇文章,题为“Agent Based Modelling and Simulation tools: A review of the state-of-art software” (Abar等, 2017),对ABM相关80多种软件/工具包作了较为系统的梳理和综述。
在本课程讲义中,我们主要使用NotLogo软件。该软件由美国西北大学Uri Wilensky教授团队负责开发和维护,软件主页链接:
https://ccl.northwestern.edu/netlogo/。
为什么选用这款开发软件呢?我们在之前的一篇推文【ABM | NetLogo:打开复杂系统奇幻世界的一把钥匙】中曾简要介绍过该软件的主要特征,具体包括:
第一,相比于AnyLogic和Matlab等商业化软件,NetLogo开源免费,而且拥有强大的社区支持(如Github、Stackoverflow)。这无疑是广大初学者的福音。
第二,上手简单。NetLogo界面异常地简单而清晰,编程语法几乎完全接近自然语言。即便没有任何编程基础,也很容易轻松上手。
第三,就是NetLogo拥有丰富的案例库,内容涵盖生物、化学、复杂网络、社会科学等众多领域。既有完整示例,也有专门针对基本编程语法的code examples。可以说,不管你来自哪一研究领域,无论你是初学菜鸟还是编程高手,案例库中总有一款适合你,助你仿真编程一臂之力。
第四,NetLogo虽然界面和编程语法都极其简单,但这似乎并不影响其强大的功能,如Behavior space模块用于实验设计和仿真实验、HubNet模块用于分布式 (参与式) 仿真、System Dynamics模块用于系统动力学建模等等。
下一讲,我们将结合一个简单例子来介绍NetLogo软件的基本操作。
4. NetLogo模型库
4. NetLogo模型库
NetLogo模型库中的例子,大概可分为以下几类:
-
示例类模型,是经过严格审查的,具有规范的程序代码编写风格和详细说明文档。 -
未经验证的模型,程序代码和说明文档也是齐备的,但是在代码内容、质量和准确性等方面仍有待进一步审查。 -
教学类模型,与软件开发者团队的一些教学课程相关,可登录CCL的官方主页查阅详细课程信息,网址为https://ccl.northwestern.edu/ 。 -
代码示例,是针对特定功能和编程技术的简要说明,它们是NetLogo用户手册的补充。 -
HubNet活动,用于分布式或参与式仿真架构的编程实现。 -
IABM教材,包含了经典教材《基于主体的建模概论:使用NetLogo进行自然、社会和工程复杂系统建模》[注1] 配套的所有模型案例。 -
交互可视化,展示了一些多主体仿真模型可视化设计准则的应用。 -
扩展管理,包含了一些针对NetLogo扩展(Extensions)应用的模型案例。
[2] 参见:http://ccl.northwestern.edu/netlogo/models/community/。在该社区网页中,可以看到由NetLogo用户分享的大量模型案例。但需要注意的是,这些模型案例并没有经过严格的审查。
5. 简单随机游走的
NetLogo仿真建模示例
5. 简单随机游走的
NetLogo仿真建模示例
随机游走是概率论与随机过程领域中用于描述动态随机现象的一种基本随机过程。也是数学史上的一个著名问题。大量研究工作表明:液体中悬浮微粒的布朗运动、空气中的烟雾扩散、股票市场的价格波动等动态随机现象均可用随机游走模型进行描述。随机游走的理论和模型在物理、化学、生物学、生态学和心理学等众多领域得到了非常广泛的应用。
简单随机游走问题
接下来,我们讨论如何在NetLogo中对这一问题进行建模与仿真实现。
模型世界的初始化
第一步:在用户界面中,保持模型世界world的默认设置不变,并依次添加setup和go按钮控件;添加输入框控件创建全局变量end-time,并在编辑窗口中将其类型设置为数值型(Number)。退出输入框控件的编辑窗口后,在输入框中键入所需的仿真运行时间步数500。
第二步:切换到程序代码窗口,键入如下setup过程的程序代码。在使用原语clear-all重置系统设置后,我们可使用原语with筛选出Patch(0, 0),并通过原语ask和set对其颜色属性作出更改,以清晰标识Turtle(酒鬼)主体的初始位置。然后,创建1个Turtle(酒鬼)主体并且对其形状和颜色属性参数进行设置。
to setup
clear-all
ask patches with [ pxcor= 0 and pycor = 0 ]
[ set pcolor red ] ;; 设置Patch(0,0)的颜色属性为红色,
;; 以标识Turtle(酒鬼)主体的初始位置
create-turtles1 ;; 创建Turtle(酒鬼)主体
[ set shape "person" ;; 设置形状属性
set color yellow ;; 设置颜色属性
pen-down] ;; 设置变量pen-mode取值为down,
;; 显示Turtle主体运动轨迹
reset-ticks ;; 重置时间计数器ticks
end
切换回用户界面,点击setup按钮,将看到模型世界的初始化状态如图所示。
刻画随机行走的酒鬼
go过程的核心任务就是在每一仿真时刻,通过使用原语ask令Turtle(酒鬼)主体随机地选择某一朝向(程序代码中,表达为使用原语right随机地旋转某一角度),然后向前方行进1步(使用原语forward)。
除此之外,我们在go过程的开始位置使用原语if定义了一个条件执行语句,借助于输入框控件创建的全局变量end-time,当仿真时钟ticks >= end-time时,调用原语stop强制中断程序代码执行,从而实现了对仿真运行时间的控制。
在go过程的结束位置,使用原语tick向前推进仿真时钟,进入下一循环周期。
go过程的完整程序代码如下。某一次仿真运行至第500仿真时刻的输出结果如图。
to go
if ticks >= end-time [ stop]
ask turtles [ right random 360 ;; 将Turtle主体的朝向随机地旋转某一角度
forward 1 ] ;; 向前行进一步
tick
end
AI+Social Science读书会启动
大语言模型与多智能体系统读书会
推荐阅读
点击“阅读原文”,报名读书会
本篇文章来源于微信公众号: 集智俱乐部