导语


“Agent建模讲义”系列文章介绍复杂系统、基于主体的建模(Agent Based Model, ABM)、NetLogo仿真模拟等主题。ABM主要聚焦于构成系统的组分个体(即Agent,一般译为主体或者智能体),尝试将它们的微观互动活动和系统整体的宏观结果有机联系起来,其基本思想是:通过对若干主体、环境、主体和主体之间以及主体和环境之间互动活动的建模表达,来刻画和描述现实世界中的复杂现象。

关键词:复杂系统,计算仿真,Agent建模,NetLogo
高德华 山东工商学院副教授 | 作者
复杂系统与计算社会学 | 来源




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. 部分阅读材料



  

历时一个多月,终于赶在十一假期之前做出了授课所需的全部课件ppt。虽然混迹于以ABM为首的非主流科研最边缘十几年,但是当翻出多年来的所有珍藏作一次系统的梳理,面对一篇篇经典佳作,回忆起自己一路走来的辛酸历程,感慨之余也是收获颇丰。也许这就叫温故而知新吧。


ABM由于其自身原因而拥有着十分庞杂的知识体系。作为一门面向初学者的入门级导论课程,笔者也无意于包罗万象,而是更注重和聚焦于对ABM基本概念和基础知识的讲授。我们会在每一具体章节中结合授课内容给出相关文献阅读清单,这里则仅列出复杂系统理论和ABM的部分经典书目,并围绕其前沿进展廖举数篇文献,以期能够有助于加深学员对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


ABM方法论 


  • 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 Review32(2), 480–499. 

  • Macal, C. M. (2016). Everything you need to know about agent-based modelling and simulation. Journal of Simulation10(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 Simulation12(4). 

  • Gagliolo, M. (2017). Simulate this! An Introduction to agent-based models and their power to iImprove your research practice. International Review of Social Psychology30(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 Simulation23(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 Modelling457, 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模型




包括ABM在内的所有仿真模拟几乎都可看作是一种基于模型的活动;而模型则是根据特定研究目的而针对某一现实系统(研究问题)所作出的抽象概括和描述。
系统、模型和仿真的关系

现实世界中存在许许多多的复杂现象,如股票市场震荡、宏观经济周期、国际贸易往来、城市交通拥堵、社交网络舆情传播、新技术扩散、企业间竞争与合作等等。虽然在各个不同的学科领域里,人们围绕复杂系统给出的定义描述不尽相同,但是对其本质特征的认识则是非常一致的,即:同简单系统相比而言,复杂系统更加注重和强调构成系统的各组成部分(组分)之间的非线性交互作用。由于这种组分之间非线性交互作用的存在,系统在整体层次上所体现出的复杂现象完全迥异于各系统组分自身属性的简单累加。这就是所谓的“涌现”(Emergence),亦即:1 + 1 != 2

可以说,系统组分之间存在非线性交互作用是所有复杂系统的核心属性,而涌现则是复杂系统现象最具魅力和神奇的地方。系统在整体层次上所涌现出的这种复杂现象,既不能简单等同于任何单一组分的自身行为表现,也不是它们的线性加和,而是有着自身的独特模式及规律。这种独特模式及规律,有时可能是反直觉的,并且通常无法仅仅根据组分个体的行动来作出预测。
对涌现基本内涵的理解

比如城市道路上的车辆。尽管拥堵是每一辆车(Agent)都不愿意看到的,它们可能都以尽快到达目的地作为最根本的行动目标,但是由于前后各车辆之间彼此相互作用和影响,交通拥堵现象在许多情况下仍然真真实实地发生了。
traffic 2 lanes.nlogo模型

再比如鸟群的形成。我们仅假设每一只鸟(即Agent个体)的飞行行动遵循以下三条简单规则,就可以通过仿真模拟观察到飞鸟随时间而逐渐聚集起来的动态过程。
  • 对齐规则:每一只鸟由于其群居性特征,都倾向于同附近的鸟群(如果存在的话)在飞行方向上大致保持一致;
  • 靠近规则:每一只鸟都主动向附近的其它鸟移动,以避免掉队;
  • 分离规则:如果两只鸟之间的距离太近,则选择远离以避免发生碰撞。

flocking.nlogo模型

认识了复杂系统之后,我们再来看Agent建模(Agent-based modeling, ABM)。作为众多建模方法中的一种,ABM主要聚焦于构成系统的组分个体(即Agent,一般译为主体或者智能体)尝试将它们的微观互动活动和系统整体的宏观结果有机联系起来。其基本思想就是:通过对若干主体、环境、主体和主体之间以及主体和环境之间互动活动的建模表达,来刻画和描述现实世界中的复杂现象。这其中:
  • 主体:是指系统中任何具有一定自治性的实体或者事物。它们通常具有特定的属性,围绕某一具体目标而开展相应的行动。这种行动是相对独立的,不受任何中心控制,而是只取决于自身的状态和目标。
  • 环境:则为主体开展行动提供了一个场所。环境既可以是基于地理信息的某一物理空间,也可以是针对主体之间网络关系的具体表达。
  • 互动活动:主体之间以及主体和环境之间的互动活动,可以只是以“if-then”规则为基础的“刺激-响应”,也可以包括基于经验的学习等复杂行为。此外,这种互动活动的范围也往往是有限的、局部的,并且允许主体根据自身和周围环境的历史及现状对自身行动作出调整,表现出一定的适应性特征。

Agent模型的基本结构(来源:Li et al. 2016)

概括来讲,ABM的核心优势或者适用条件包括:

  • 系统拥有中等数量规模的主体,并且它们之间存在非线性作用关系;

  • 主体具有自治性、异质性等特征;

  • 主体之间的互动活动是相当复杂的;

  • 主体和环境之间的互动活动也相当复杂;

  • 通过引入时间的概念,ABM能够极大程度地展现模型结果的丰富细节。

但这里需要指出的是:我们总是围绕特定的研究目的来开展建模工作。包括ABMs在内的几乎所有模型,在对现实系统进行刻画和描述的过程中,总是强调某些方面,同时忽略另外一些方面。而究竟应当强调强调哪些方面、忽略哪些方面,则完全取决于研究工作的根本目的,如描述、诠释理论、解释甚至预测等。





3. NetLogo软件




ABM相关开发软件有很多,大体上可概括为以下四类:
  • 一是采用通用编程语言,如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模型库



NetLogo软件的强大优势之一就是自带丰富的模型库。用鼠标左键点击用户界面的上方菜单File,找到模型库Models Library,再点击进入模型库界面,如图所示。界面的右边部分是对模型库的一个简单说明,左边部分就是具体的案例目录。


NetLogo模型库中的例子,大概可分为以下几类:

  • 示例类模型,是经过严格审查的,具有规范的程序代码编写风格和详细说明文档。
  • 未经验证的模型,程序代码和说明文档也是齐备的,但是在代码内容、质量和准确性等方面仍有待进一步审查。
  • 教学类模型,与软件开发者团队的一些教学课程相关,可登录CCL的官方主页查阅详细课程信息,网址为https://ccl.northwestern.edu/ 。
  • 代码示例,是针对特定功能和编程技术的简要说明,它们是NetLogo用户手册的补充。
  • HubNet活动,用于分布式或参与式仿真架构的编程实现。
  • IABM教材,包含了经典教材《基于主体的建模概论:使用NetLogo进行自然、社会和工程复杂系统建模》[注1] 配套的所有模型案例。
  • 交互可视化,展示了一些多主体仿真模型可视化设计准则的应用。
  • 扩展管理,包含了一些针对NetLogo扩展(Extensions)应用的模型案例。
除此之外,在模型库界面的下方位置,还提供了访问用户社区网页的链接[注2]。
注释:
[1] 参见:Wilensky U, Rand W. An Introduction to Agent-Based Modeling: Modeling Natural, Social, and Engineered Complex Systems with NetLogo[M]. Cambridge, MA: The MIT Press, 2015

[2] 参见:http://ccl.northwestern.edu/netlogo/models/community/。在该社区网页中,可以看到由NetLogo用户分享的大量模型案例。但需要注意的是,这些模型案例并没有经过严格的审查。





5. 简单随机游走的

NetLogo仿真建模示例





随机游走是概率论与随机过程领域中用于描述动态随机现象的一种基本随机过程。也是数学史上的一个著名问题。大量研究工作表明:液体中悬浮微粒的布朗运动、空气中的烟雾扩散、股票市场的价格波动等动态随机现象均可用随机游走模型进行描述。随机游走的理论和模型在物理、化学、生物学、生态学和心理学等众多领域得到了非常广泛的应用。


简单随机游走问题


1905年,英国统计学家卡尔·皮尔逊(Karl Pearson)在《自然》杂志上公开求解随机游走(Random walk)问题:(1)如果一个喝醉的酒鬼在走路时每一步的方向和大小都完全随机(如图所示),那么经过一段时间之后,在什么地方找到他的可能性最大?(2)进而随着时间的增长,酒鬼是否还能够回到出发的地点?


接下来,我们讨论如何在NetLogo中对这一问题进行建模与仿真实现。



模型世界的初始化


第一步:在用户界面中,保持模型世界world的默认设置不变,并依次添加setup和go按钮控件;添加输入框控件创建全局变量end-time,并在编辑窗口中将其类型设置为数值型(Number)。退出输入框控件的编辑窗口后,在输入框中键入所需的仿真运行时间步数500。



第二步:切换到程序代码窗口,键入如下setup过程的程序代码。在使用原语clear-all重置系统设置后,我们可使用原语with筛选出Patch(0, 0),并通过原语ask和set对其颜色属性作出更改,以清晰标识Turtle(酒鬼)主体的初始位置。然后,创建1个Turtle(酒鬼)主体并且对其形状和颜色属性参数进行设置。

此外,这里还使用了原语pen-down来可视化显示Turtle主体的运动轨迹。需要说明的是:在模型世界world默认设置下,NetLogo会自动将通过原语create-turtles所创建的Turtle主体置于world的中心位置即Patch(0, 0)处。因此,这里不必再对其坐标参数xcor和ycor另作设置。

最后,使用原语reset-ticks对NetLogo时间计数器ticks进行重置,并以此作为setup过程的结束。

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                    ;; 重置时间计数器ticksend

切换回用户界面,点击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 ]                  ;; 向前行进一步     tickend

重复多次运行仿真程序(比如通过使用Netlogo软件的行为空间Behave space),我们便可统计计算给出经历一段仿真时间后,酒鬼(Turtle)出现在某个地方的频度(概率)。至此,我们也就回答了皮尔逊的第一个问题,即经过一段时间之后,酒鬼(Turtle)主体将出现在什么地方。

那么,接下来的第二个问题——酒鬼(Turtle)能否或者何时才能回到出发的地点?——又将如何在NetLogo中予以仿真实现呢?我们权且作为一个思考练习,留待读者自行尝试作答。



AI+Social Science读书会启动


集智俱乐部联合美国东北大学博士后研究员杨凯程、密歇根大学安娜堡分校博士候选人裴嘉欣,宾夕法尼亚大学沃顿商学院人力资本分析研究组博士后研究员吴雨桐、即将入职芝加哥大学心理学系的助理教授白雪纯子,共同发起AI+Social Science读书会,从3月24日开始,每周日晚20:00-22:00,探究大语言模型、生成式AI对计算社会科学领域带来的新思想新价值。
详情请见:
AI+Social Science:大模型怎样重塑社会科学 | 计算社会科学读书会第三季启动



大语言模型与多智能体系统读书会


集智俱乐部联合西湖大学工学院特聘研究员赵世钰、浙江大学教授任沁源、鹏城实验室高级工程师崔金强,共同发起「大语言模型与多智能体系统」读书会,探究大语言模型给机器人领域带来的新思想新价值。


详情请见:
大语言模型与多智能体系统读书会:大模型赋能机器人涌现群体智能



推荐阅读

1. 怎样入门复杂性科学?从 NetLogo 多主体建模开始
2. 多主体建模:微小个体如何产生群体智能?| 复杂系统入门与实战(Python)
3. 为何人们要互相伤害:基于多主体建模给出解释
4. 张江:第三代人工智能技术基础——从可微分编程到因果推理 | 集智学园全新课程
5. 龙年大运起,学习正当时!解锁集智全站内容,开启新年学习计划
6. 加入集智,一起复杂!



点击“阅读原文”,报名读书会

本篇文章来源于微信公众号: 集智俱乐部