1.2 多主体模拟
这种通过模拟微观个体的相互作用,从而实现对整个复杂系统的宏观现象模拟的技术有一个特别的名字,叫作多主体模拟(multi agents simulation,MAS),而构建这种多主体模拟模型的过程叫作多主体建模。这个工具非常厉害,它可以帮助我们解决现实世界的很多问题。
比如,大型集会的人群踩踏事件就是一个典型的复杂系统问题,而这个问题也恰恰是多主体模拟方法的用武之地。
2014年12月31日临近午夜12点的时候,很多市民和游客聚集到上海市黄浦区外滩陈毅广场东南角,准备进行跨年庆祝活动。这时,人行通道阶梯处底部突然有人失衡跌倒,继而引发多人摔倒、叠压,致使拥挤踩踏事件发生。最后,该事件造成36人死亡,49人受伤。
这种事件并非偶发,2018年9月9日,在塔那那利佛马哈马西纳体育场举行的2019年非洲国家杯足球赛预选赛,马达加斯加队对塞内加尔队的比赛正在进行,仅能容纳2万人的体育场涌进了4万余名观众。体育场外大量球迷在入口处拥挤,导致踩踏事故发生,造成1人死亡,47人受伤,如图1-1所示。
图1-1 马达加斯加体育场踩踏事故
这样的事故还有许多,在此不再一一列举。那么,我们如何防止这样的事件发生呢?一种可能的途径是通过改造现有体育场馆或人行街道的布局,例如在道路上人为设置一些引导,从而尽可能地避免踩踏事件发生。但问题是,这样的引导究竟怎么设置呢?这个问题就可以通过计算机中的多主体模拟方法来进行探索和回答。
解决这个问题的关键自然是在计算机中搭建一个可以模拟人群行动的多主体模型。只有当这个模型能够非常逼真地模拟实际情况的时候,我们才有可能在这个模型的基础之上讨论人为设置引导因素的问题。
要设计这样一个多主体模型,目前科学家们已经有了一个比较成熟的方案,叫作“社会力模型”。该模型将人群中的每个人设定为一个虚拟的智能主体(agent),它可以像人一样聪明地寻找门的位置,也可以跟其他模拟人进行互动。人和人的实际互动显然会非常复杂,比如他们可以聊天,可以手挽手,而在社会力模型中,我们显然要忽略这些复杂因素,而将人抽象成一个个粒子,将人和人之间的相互作用抽象成粒子之间的力。具体的建模过程,这里就不详细探讨了,感兴趣的读者可以去读《预知社会》这本书的第6章,也可以学习GitHub上SocialForceModel这个NetLogo程序。总之,如今这种人群模拟的多主体模型已经比较成熟了。
这样的话,我们就可以逼真地模拟人群疏散现象,并在这个模型的基础之上,进行大量模拟实验。比如,可以考察体育场馆中门的形状和位置是如何影响人群疏散效率的。那么,我们只需要在模拟世界里设定各种门的形状和位置,从而观察模拟人群疏散的效率(单位时间内的疏散人数)。总之,我们可以在这个模拟世界中做大量模拟实验,从而找到最优的门的形状和位置,如图1-2所示。
图1-2 人群疏散模拟
科学家们通过计算机模拟得出了一个有趣的结论:在房间门口立一个圆形障碍物,不但不会妨碍人群疏散,反而会在紧急情况发生时,提高人群的逃生速度。原来,当危机出现时,人们由于恐慌会盲目地涌向门口,从而导致人和人之间的摩擦力和阻塞力增大,甚至可能导致有些人卡在门口,这大大降低了疏散效率。反之,如果在门口前方立一根圆柱,更多的人就会被这根柱子挡住,从而卸掉部分人群的压力,使得更多的人能够高效地从门口逃生出去。这就是为什么很多建筑物门口立着一根“讨厌的”大柱子。
这就是典型的多主体模拟的一个应用场景。实际上,最近几年这种多主体模型大量出现,让我们可以模拟包括社会、经济、政治、文化在内的一系列复杂现象。