First Glance
可以想象这道题会是一种类似于站台疏散(2014A)的题目,可以模拟消防员/受灾人员的位置,也可以模拟火灾和烟雾的变化。 题目贴心给出了6个房间一个hallway的配置,显然是提示队伍先在简单的场景上建模,再扩展到复杂的房型上去。
在第一个任务Sweep Model的建立时也提示了要找最短路径,这是一个类似TSP或者哈密尔顿环路的问题, 解法有很多,很适合比较不同算法的performance。 但要注意不要掉到找最优解的这个思路里。在数学建模比赛中,比较和分析不同算法,往往比得到一个最优解要好很多: 关键在于你怎么评估一个算法优于另一个。当然如果你使用并证明你的方法是最优的肯定也行,作为读者我肯定也想知道这个方法平均比benchmark好多少, 所以无论用不用最优算法,建立一个比较不同解法的框架是必不可少的。
题目要求分析
出题人特意留了一个Apply Your Model的小节,要求队伍显式地声明:
- 访问房间的顺序
- 最优的消防员数量(为什么不是越多越好?)
- 最短的扫楼时间
其实就是明显地提示了建模完成之后应该从哪些角度来分析,甚至可以对着这三个要求想象出应该生成的图表是啥样的。
模型扩展方向
剩下的任务是对Sweep Model的扩展,在基础假设之上:
- 如果发现某处有火灾是否会改变访问顺序?
- 人员如果不止原地待援会如何?
- 消防员不足会如何?
- 通信被切断会如何?
一些结论
- 有火灾的房间应该先去,因为去晚了就烧完了,再也去不了了
- 考虑火灾的蔓延,起火房间的周边也应该提高优先级
- 消防员人数的提升有边际效应,对于一层楼的任务来说,堆到一定数量之后再多人也提升有限
- 火势蔓延很快,如果晚到现场几分钟可能就会有些房间不能救了
LaTeX
有一支队伍在赛前决定尝试使用LaTeX写论文,除了出现了一些技术问题以外,事实证明会让他们的论文更早看上去成型, 在心理上也会更早认为自己做出了最终版的文章,最终的交付结果也相当好,应该推广。
- 应该采用git+在线渲染的方式处理未来的写论文过程
- 可以先写MD然后找个AI来改写成LaTeX,可以省很多力
赛后整理出来的文档也非常干净:
精选图例
以下是今年各队论文中值得学习的图表。好的图表应该自带信息量,不需要大段文字解释就能让读者看懂结论。
左边的图例其实只是对房间做的家具建模,伪3D;右边的图例是搜索方案。想到并排放是神来之笔。
这个搜索的可视化包含了视野、行动路径、搜救数量,如果还能比较两个不同策略,看上去就很有意思。
图论问题建图模板,注意边权用线的深度来表示了。
不要忘记比较不同策略的表现。
意义不明但看上去是在公路上开车模拟的作图 : )
自带说明的作图,不需要文字就知道他的结论。
烟雾模拟,用两个像素图做了个小动画。
这张图其实有超多信息:黑色的渐变条是不同房间着火的时间线,黑了就去不了了。 黄色的bar是搜索房间用的时间,但是team忘记做legend了。 此外比较了两个不同搜索算法的路径和搜索时间。如果不叫fastest/slowest可能会更好一点。
这一届的参赛选手确实在图表里花了心思,每一张图表里都整合了多维度的信息。 赛前给他们的启发是看NASA做的图,一张图展示旅行者号如何借助引力弹弓出太阳系:
小小的工作量证明
小篇幅,大信息量。
比赛过程 & 复盘
今年比赛在时间线上追得更紧了,不纠结选A或B,直接开干,第一天结束的时候就要求写文章。 第一周结束的时候有队伍基本具备可以交的水准了,这样第二周调整的时间也比较多。
第二周赛前做了一个check-list,把比赛要问的问题和各组目前有的情况都填进去, 这样大家会容易知道目标是什么,这个下次比赛前就应该做好:
Outstanding选讲
以下两支队伍的论文值得精读,风格截然不同:16843方法论惊艳但过度设计,17401工作量极简但结构清晰。
16843: 工作量惊人的最强作品
这支队伍提出了一个叫RACE-S的完整框架。核心想法:把建筑建模成两张图—— G1是真实状态(消防员看不到),G2是概率规划图(消防员用来决策)。 每推开一扇门,G1的信息揭示给G2,触发路径重规划。
展示为什么好
一页纸讲清整个算法架构——流程图在上,伪代码在下,读者不需要翻来翻去:
3D渲染配2D路径——先让你看懂空间,再告诉你消防员怎么走:
不同颜色代表不同消防员,一眼看出任务分配是否均衡。3D渲染用的是homestyler,零成本但效果很好。
响应者时间线——一张图看出所有人是否忙得均匀:
右上角时间线:灰色=移动、蓝色=服务。四人几乎同时完成,说明分配均衡。这种图一张顶三段话。
讨论:G1/G2框架是否必要
Fig 3.2: 左边G1是真实状态,右边G2用概率分布替代房间人数。推开门后信息从G1流向G2。
G1/G2这个想法我注意到了,但我们的搜索也是当作不知道房间里有多少人来做的,目标就是遍历完所有房间。我们的调度是根据着火的优先级——如果着火了,相邻房间也更危险,所以要早访问。我认为这比他们的方案务实,而且效果等价。
从实际效果看确实趋同:都是优先访问高危房间。区别在于"怎么表达不确定性"——你们用启发式规则(着火→邻居优先),简洁可解释;他们用概率图建模,更形式化但多了一层抽象。
不过两者不完全等价:你们的方案是出发前就定好优先级,而G1/G2允许每推开一扇门后根据实际情况动态重规划。
但重规划具体会改变什么?每个房间发现伤员就立即处理,这是贪心的。多出来的信息很难导致路径变化。
读了原文确认:隐藏的信息是每个房间的实际人数 M(0) 和 N(0)。揭示后主要影响这个房间的service time——人多就要花更多时间安抚和带出去,后续路线因此要重排。
但重排的逻辑还是贪心的:到了就处理完再走,不会出现"放弃当前房间去另一个"的反直觉决策。实际决策层面和你们的方案趋同。
再说Gillespie算法,这其实就是一个状态转移。我建立一个普通的状态转移方程有什么不一样?
Gillespie是连续时间的随机模拟:每次事件的发生时间根据转移速率随机采样,自动跳到下一个事件时刻。固定步长要么太小浪费计算,要么太大丢失事件。
而且他们模型里人会"变"——ambulatory变non-ambulatory。越晚到一个房间,service time越长。理论上这会让replanning做出非贪心选择:先去"恶化速度快"的房间。
17401: 工作量极简的特殊O奖
和16843的复杂框架相反,17401用的全是标准方法(贪心聚类、nearest-neighbor、2-opt局部搜索), 没有方法论创新,图例重复、占版面大,画得算清晰,像初中生里最好的产物。 盲选的话这篇大概率不是O。但它像一本给初学者的入门教材,不卷, 6个递进式场景,每个只加一个变量。
递进式场景设计
从简单到复杂,每一步只引入一个新挑战:
- Scenario 1: 基本6房间办公室(题目给的)
- Scenario 2: 两层学校,引入楼梯和跨层调度
- Scenario 3: 高密度办公室,引入房间类型差异
- Scenario 4: 医院,引入优先级(ICU先于储物间)
- Scenario 5: L型死胡同建筑,引入拓扑约束
- Scenario 6: 火灾场景,引入动态不可达房间
上:高密度办公室的图论抽象。下:聚类分配用颜色区分——注意蓝色消防员路径最长但分配了快速搜索的储物间,保持总工作量均衡。
优化后的路径:散布式分配但回溯极少。图论建模虽然简单,但配上清晰的可视化就很有说服力。
算法对比
对比了自己的方法和两个baseline(nearest-neighbor、顺序搜索),用柱状图展示不同消防员数量下的表现差异:
一张图同时展示:三种算法×四种消防员配置。信息密度高,结论一目了然。15-22%的改进幅度也老实地写了——没有夸大。
Letter to LEPC
给应急规划委员会的信,把数学结论翻译成决策者能直接用的东西:
具体建议:6-12房间用2-3人,12-20房间用3-5人。"接受3-8%的总时间增加,换取高优先区域40-50%的提速。" 这种量化的政策建议是很多队伍不会做的——他们只给模型输出,不翻译成人话。
两队对比
- 16843:方法复杂(G1/G2、Gillespie、UCB),但复杂度没有带来决策上的实质提升。真正的价值在展示——流程图、3D渲染、时间线图都是一流水准。
- 17401:模型很浅,贪心+nearest-neighbor+2-opt就是运筹学课本第一章的水平。6个scenario看起来递进,但每个都是同一套方法换个输入跑一遍,没有因为新约束引入新的建模思路。但它确实是Outstanding——这大概是美国队伍里最好的一篇了。对初学者来说是个好消息:不需要卷方法论,把基本功做扎实、结构写清楚,也能拿奖。