元胞自动机实战:从上海地铁早高峰大客流演练看疏散建模
元胞自动机实战从上海地铁早高峰大客流演练看疏散建模8 月 4 日交通运输部联合上海申通地铁开展了一次超大客流疏散应急演练现场调动 4 个站点、12 列地铁、6000 名模拟乘客重点检验大客流场景下的如何 5 分钟疏散 3000 人到站外。演练视频里最让人震撼的是闸机口、扶梯口、通道口三处瓶颈同时出现成片蓝色小人缓慢流动的画面。这种把每一平方米站厅看作一个格子、把人看作移动格子的方法正是数学建模里最经典、也最常出现在国赛交通类赛题中的工具——元胞自动机。一、元胞自动机是什么把世界切成格子元胞自动机的核心思想非常朴素把平面或空间切成一个个大小相同的格子每个格子在每个时刻有自己的状态并按照局部规则决定下一刻的状态。最常见的格子是二维正方形或六边形蜂巢每个格子在每个时刻的状态一般是空、有人或障碍。时间以步为单位每一步所有格子同步更新。本质上元胞自动机是用一组最简单的局部规则模拟出非常复杂的群体行为。用一个最熟悉的例子讲明白——生命游戏。每个格子有两种状态生/死规则只有四条根据八个邻居中生的格子数量决定下一刻是生还是死。就这样四条规则就能演化出闪烁、滑翔机、自复制等复杂图案。疏散问题相当于生命游戏 一些额外约束。概念含义疏散场景的对应元胞最小格子站厅内每一块地砖大小的空间状态格子在某个时刻的属性空、有人、障碍、出口邻居当前格子周围的格子上下左右、或者上下左右加对角规则状态转移的逻辑一个人怎么决定下一步走向哪个邻居步一次全局同步更新1 秒钟或 0.5 秒钟刷新一次二、为什么地铁疏散题几乎只能用元胞自动机国赛里交通类、应急类赛题经常出现医院、地铁、商场、体育馆等场景问多少时间能疏散完、哪里是瓶颈、加几个出口能不能快一倍。这种题如果用微分方程流体力学宏观方程建模需要假设人流是连续流体但实际人流是离散的人、密度超过某个阈值就会几乎停止。而元胞自动机把每个人当作一个粒子既保留了离散性又能算出密度场、速度场是一种折中的建模工具。8 月 4 日上海地铁演练视频里地铁公司公开的数据是早高峰某站 5 分钟内进站 4800 人、出站 3200 人。如果用元胞自动机建模我们只要知道每个闸机每秒通过 1.2 人、每个扶梯每秒上 30 人、通道每米宽每秒通过 1.6 人就可以估出整站的疏散时间。这种格子粒度 局部规则的方法比流体力学直观得多也比纯排队论灵活得多。三、一个完整的疏散建模五步走第一步场景数字化。把站厅平面图导入划分网格一般是 0.4 米×0.4 米一个格子因为成年人肩宽约 0.4 米商场可以用 0.5 米。出口、闸机、扶梯、楼梯口标记为出口格子柱子、售票机、墙体标记为障碍格子其余为空格子。第二步初始化人群。按演练方案在站内撒入若干人每个人的位置、目的地出口、移动速度都是属性。第三步定义局部规则。最经典的是场强法 邻居选择每个格子计算到最近出口的场强值距离越近场强越大每个有人的格子从 8 个邻居中选场强最大且不冲突的格子作为下一步去向如果所有邻居都被占就原地等待。第四步时间步进。每秒或每 0.5 秒执行一次全局更新记录每个时刻的人数、密度、瓶颈。第五步结果输出。给出疏散完成时间、各通道最大人流密度、瓶颈位置、改造前后对比。步骤关键操作输出场景数字化平面图网格化网格地图初始化人群撒入 N 个模拟乘客初始人群图规则定义场强法冲突处理局部规则代码时间步进同步更新 N 步每步快照结果输出统计疏散时间、密度可视化图表四、从演练到算例60×40 网格疏散模拟假设一个 60 列 × 40 行的网格站厅左下角和右下角各有一个出口即 8 个出口格子中间有 4 根 2×2 的柱子障碍初始随机撒入 1500 个模拟乘客目的地随机选择两个出口之一。规则采用场强法曼哈顿距离倒数加权。下面用文字描述 200 步约 100 秒的模拟过程。第 1 步所有模拟乘客计算到两个出口的曼哈顿距离距离倒数作为场强。第 1 至 20 步出口附近的模拟乘客迅速向出口移动平均速度达到每秒 1.2 格也就是 0.48 米/秒出口附近 5 米范围内密度从 0 人/平方米迅速升到 2.5 人/平方米。第 30 步第一个拥堵带出现在距离出口约 8 米处因为出口格子已饱和4 个出口格子同时只能有 4 人离开后方人群挤压前面又走不了密度升到 4.5 人/平方米。第 60 步柱子障碍后方出现第二个拥堵带因为部分模拟乘客绕柱路径被柱体挡住必须排队通过一个仅 2 米宽的瓶颈走廊密度升到 5.2 人/平方米。第 120 步800 多人已疏散到站外剩余 700 人主要分布在 4 个柱子周围及中心区域。第 200 步所有模拟乘客已疏散出站总用时约 100 秒。时刻(秒)已疏散站内剩余最大密度位置最大密度(人/m²)10801420出口附近2.1303201180出口附近 8 米4.560580920柱子后方5.2100970530中心区3.81301380120边缘1.6这个算例给出了三个重要结论。第一最大密度出现在柱子后方与出口附近 8 米处提示改造应该从这里入手。第二疏散完成时间约为 100 秒但前 60 秒已疏散 39% 的人数提示早期疏散效率最高越往后越慢。第三如果把两个出口扩成 4 个出口格子左右各加 2 个相同人数疏散时间可缩短到约 70 秒如果再加一个中央出口则可进一步缩短到 55 秒。五、元胞自动机在国赛中的常用扩展第一种多层模型。把每层楼、每个出口、每个扶梯都建成独立的网格层再通过扶梯格子在不同层之间传输人。这种扩展在地铁、医院、商场等具有竖向空间的场景里非常常用。第二种恐慌行为。给模拟乘客加上个体属性年龄、性别、是否带行李。当密度超过 4 人/平方米时部分模拟乘客会进入恐慌状态规则变为不再理性选最短路径而是随机选一个邻居这会让疏散速度显著变慢。第三种反向寻路。不只是从站内疏散出去还要研究从外面如何最快进入救人——这种双向流在火灾、地震救援建模里常见。第四种多模式切换。在格子层面允许步行、扶梯、直梯三种运动模式切换这对应真实场景里老人走扶梯、急救人员走直梯的差异化选择。扩展增加的能力适用场景多层模型竖向连接地铁、医院、商场恐慌行为真实群体行为火灾、地震、踩踏反向寻路双向流应急救援多模式切换差异化人员真实大型场所六、与连续模型、纯排队模型的对比连续模型流体力学把人当成流体好处是公式漂亮、能用偏微分方程求解坏处是当密度超过 4 人/平方米时连续性假设失效、误差急剧放大。纯排队模型排队论把人当成在节点间流动的顾客好处是公式更简洁坏处是忽略了空间分布、无法定位瓶颈位置。元胞自动机是一种折中——保留了离散粒度又能给出密度场、瓶颈图。国赛评委很喜欢这种方法选型有对比、有理由的写法。七、写作建议怎么写元胞自动机论文不翻车第一规则必须明确写出。评委最反感我们用元胞自动机建模后面接一段没具体规则的描述必须把邻居选择策略、冲突解决策略、边界处理、参数取值四条交代清楚。第二画出快照。把第 10、30、60、100 步的疏散快照画成四张小图读者一眼能看出密度场和瓶颈。第三做对照实验。把现状 vs 改造方案 vs 极端场景三种情况放在一起对比比单跑一个场景有说服力。第四验证模型。如果演练方提供了真实疏散时间数据把模拟结果与实测对比能给论文大幅加分。第五讨论局限。元胞自动机的局限在于格子粒度粗、规则简化论文里点一句反而显得严谨。八、写在最后元胞自动机看似朴素但只要把格子、状态、规则、时间步四件事讲清楚就能模拟出大客流疏散、交通流演化、疾病传播、谣言扩散等一大类国赛高频问题。8 月 4 日上海地铁演练给我们的启发是真实的疏散问题永远是局部决策、全局涌现而元胞自动机正好是讲这件事的语言。下次遇到多少时间能疏散完、哪里最堵、加几个出口有没有用这类题目记住一句话——格子会告诉你答案。