2019 MCM/ICM 总结

2019 MCM/ICM 于 2019.1.26 开始、2019.1.29结束,四天四夜的建模比赛给我和我的队友都留下了很多回忆。在此次建模竞赛之前,我参加过一次 MCM/ICM、一次 CUMCM(国赛)、一次 CAMCM(小美赛),虽然没能拿到国家级的奖,但是几个省奖倒也可以交代这段时间的努力。

想好好记录一次建模比赛的想法并不是这次才有的,但迫于时间与精力,前几次建模比赛都没能好好记录下来。不过我们的建模队伍走到现在,所有的经历都是我们宝贵的经验,体现在我们本次的竞赛中。

由于我们学校没有专门的数学建模课程与培训,我们的建模知识、软件使用都来源于自学。、感谢我的队友们,感谢他们优秀的论文写作与精妙的模型提出,和优秀的数据处理与资料搜索能力,以及陪我一起坚持做完的耐心。

这篇文章目的在于记录与反思四天四夜中我们的建模工作流程,以及其中遇到的一些有趣的问题,一些吐槽等等。

这次参赛 MCM/ICM 可能是我建模生涯的最后一次,希望能留下来给未来的自己回忆用。也可以让一些想要参与建模的同学大致了解与参考这个比赛。

Day 1

本次建模比赛,我们队伍选择在一起参与竞赛,而不是远程进行。这样方便讨论、交流。这是数学建模中数一数二的要素。根据去年失败的参赛经验,异地比赛交流非常的差,会导致队伍分工、模型讨论等等在内的很多方面受到影响,所以在一起参赛讨论是非常有必要的。

MCM/ICM 于北京时间 6:00 am. 公开 Problems。毕竟是竞赛第一天,各建模队伍都是激情满满,前一天早早睡觉,为了今天可以准时起来,第一时间读到赛题。不过对于已经放假休息了一周左右的我们来说,突然有一天起床这么早还是挺困难的,最后依然赖床到了 7:00,经过了不少比赛,大家的心态都是挺放松的。

建模遇到的第一个问题就是 Problems 下载不下来,MCM/ICM 官网服务器的质量是相当的差。许多队伍在下载问题包的过程中都遇到了崩溃。这时候就需要通过同学互相分享、群文件共享来解决。不过我们发现,如果可以翻墙的话,官网还是很流畅的,所以说估计网站爆炸也就是大陆地区。

题目分析

奇怪的 Problem A

早上 7:00 多,题目下载好之后,打开阅读完 Problem A,当时就觉得非常惊讶。Problem A 按照竞赛规则应该是连续性赛题。但是 2019 年的这道“养龙”题目,确是第一眼很难看出与连续性的关系,甚至我们一开始对 Problem A 的建模方向都没有任何思路。

数学建模是对实际问题进行分析,转化为数学模型进行计算。但是这道题本身就分析不是现实中的生物,这样得架空考虑来分析问题。

MCM/ICM 赛题对比 CUMCM,往往更加抽象。数据一般都比较难以寻找,通过不同的思路进行建模,结论变化较大。而 CUMCM 恰好相反。所以就有这么的说法:“美赛注重过程,国赛注重结论。”

我们在 2018 MCM/ICM 中选择了 Problem B,该问题涉及的数据,例如各国近十年出生率、死亡率、移民人数等等。这些数据非常难以获取,对于一些国家来说,这些数据甚至是机密。这对我们的建模进度造成了不少的影响。

我们在此之前阅读过 2016 MCM/ICM 的 Outstanding Paper,其中对埃博拉问题分析解决时,论文中直接表明了“我们找不到这些数据,但是如果能给我们准确的数据,我们的结果是可信的”。所以说 MCM/ICM 更注重队伍的分析过程与所建立的模型,应该并不太关心建模最后的结果。

MCM/ICM 题目固有的部分就是写一封信或者一篇 Memo 给问题方。这部分的用意就是对所建模型的非专业性总结,不涉及公式、数据分析、绘制结果,将实际问题数学化分析后的结果返回现实,完成数学建模的现实意义。

回归题目,题目中几乎一点数据都没有给出,反而没少提到《冰与火之歌》原作。有很多人吐槽如果没有读过原作这道题还不好下手,因为这道题的抽象程度已经不是现实的层面了。从最开始就要假设,考虑的方向也非常的广,不知道怎么下手。但是题目本身还是挺有趣的,队伍中的权游粉读完就想选择 A 题了。

难以分析的 Problem B

接着阅读 Problem B,大致了解是最短路径规划问题,但是涉及的方面又非常的多:有装箱问题、调度论、考虑不同无人机的性能还要分析地图。本题给出的地图比较难以分析,依照表格在地图中标出具体位置之后,还要将公路抽象出来。在第一天上午我们分析地图时就发现有一些问题在里面,后来 MCM/ICM 官方对题目进行了修正,不过在那时我们已经不再做 Problem B 了。

至于不选择 Problem B 的原因,我们在 2018 CUMCM 中选择了 Problem B(小车调度分析),当时是我做的算法,编程写的挺累的,最后也没有拿到国家奖。所以在美赛中我们不再打算专攻算法调度问题。

中规中矩的 Problem CDEF

剩下的四道题就中规中矩了:

Problem C 的数据分析量比去年更大,分析起来更困难一些。

Problem D 从开始就遇到了问题,政府官方打不开,参赛队伍拿不到卢浮宫的建筑图,Problem D 的展开就有一些些麻烦。

Problem E 的数据依然难以获取,是环境生态相关的跨学科题目,如果中国参赛的队伍都取用当地的数据,那么 MCM/ICM 官方还是能通过这次比赛收集到相当一部分的数据。

比较有意思的就是 Problem F 了,金融相关的跨学科题目,涉及区块链,是当前现代计算金融的前沿问题之一了,

Problem F 应该是现在不少业界大牛的科研课题,要是能比较好的解决了岂不是可以拿到诺贝尔奖。

定题

经过讨论之后我们决定解决 Problem A,定题时间是在 Day 1 的下午。搜集相关资料的工作与此同时进行。题目是生态学的范畴,通过搜索相关论文,我们以 洛特卡-沃尔泰拉方程 为基础进行问题分析,开始建模。

建模强调从简到繁,不断优化,我们将捕食、耗能、迁徙等等考虑在内,分成三个阶段建立我们的模型。Day 1 我们完成了基础模型的建立,并寻找数据准备使用 Matlab 实现该模型。

基础模型本质是两个常微分方程组成的常微分方程组,我们使用四阶 Runge-Kutta 方法模拟计算该方程组,虽然精度不算高,不过在我们模型分析的情况下已经足够。算法也比较容易实现,精力主要放在数据控制,因为我们模型中涉及的很多数据都非常难量化,只能大致设定,而数据大小还比较难控制,就需要反复试验来确定参数大小。

第一天做了一个框架,几个人就没有太多精力了,选择先洗漱睡觉,明天早早起床搞。

Day 2

早上起来就着手出基础模型的图,反复调整程序与参数之后出了两张图。队伍建模同学开始着手第二模型的建立,第二模型我们大概花了半天的时间,在下午确定了第二模型。与此同时,我们的 Paper 也需要着手开始撰写。

img

在我们的队伍配置中,模型建立与论文撰写是一位同学,这样有好处也有坏处,好处在于建模的同学在写论文时对自己建立的模型有比较好的了解,论文撰写可以很好的论述我们的模型。如果建模与论文不是由一个同学控制,就需要在模型理解的对接上消耗很多的精力。这种队伍配置的缺点也很明显,建模同学需要消耗大量的时间去完成论文撰写,以至于在模型分析上的时间比较的少,模型的优化可能会比较受局限。

第二天是心态比较放松的一天,没有第一天定题的纠结,没有第三、四天时间的紧张。这一天就在第二模型建立、第二模型算法实现与论文起步中过去了。

Day 2 一般参赛队伍都已经定完了题目(或者是改完了题目),我们在这一天经常去询问认识的其他参赛队伍,了解他们的分析与定题情况。根据我们询问的结果,本次 MCM/ICM 选择 Problem A 的队伍不在少数,或许是相比剩下的 Problems,Problem A 比较容易下手分析。

大家一边吐槽今年的题目,一边缓慢的推进队伍的建模进度。建模竞赛对资料、思路共享很抵触,定性来说这种行为是学术造假的一种,而且透露思路对自己来说也不是有利的行为。所以大家在交流中都默默避开自己队伍的思考方向。

经过去年的第一次建模竞赛之后,我们就认清了网传建模思路的事实,按照对当年 Outstanding Paper 的分析,没有一个文章与网传思路相符,反倒是有不少队伍因参考网传思路被判定为 Unsuccess。所以这些方法都不是最重要的,重要的是独到的想法与见解。

到第二天中午,选择 Problem E 的队伍才纷纷拿到卢浮宫建筑图,而 Problem B 也刚刚修正。

Day 3

第三天早上起来就确定了剩下时间的任务,由于题目要求中有要求两页写给马丁老爷子的信,所以我们第四天估计要花大部分时间在信的书写和 Summary 的完成,以及论文重检。

由于写信也需要涉及一些方面的分析,该内容我们可能需要留在 Day 4 完成,所以在 Day 3 中我们要把第三模型建立完成、第三模型算法完成、论文主体部分应该写的差不多。由于我们第三模型内容量也比较大,所以 Day 3 的时间还是比较紧张的。

第三模型中我们加细了分析,参数更加敏感,所以在解决第三模型的算法问题时花费了相当长的时间去控制参数。在 Day 2 与 Day 3 中第三位同学保持寻找数据、寻找参考文献,并不时帮忙出图。

第三天是建模队伍比较疲惫的一天,应该是弃赛率比较高的一天(可能),至少我们队伍在第三天是比较疲乏的。一天时间内我们还是坚持完成了第三模型的建立与算法实现,但是参数控制与出图我留到了第四天的早上。

论文的书写也遇到了瓶颈,Summary 的书写是比较难的,因为量确实比较大。参考了历届论文,Summary 都是将队伍的模型又重新叙述了一遍放在里面,达到大概一页的长度。

Day 3 早早休息,准备明天最后的冲刺。

Day 4

早上起来,我就开始着手第三模型的参数处理与图形导出,建模同学专心撰写 Summary,另一位同学整理 References 并协助我出图。大致不到中午我们的论文主体部分完成,出图完毕。剩下的就是论文的检修与最后信的书写。对于今年的题目,我们还需要对信专门分析一些内容,这些也会减慢我们写信的时间。

基于对往届 Outstanding Paper 的研究,MCM/ICM 的信件或者备忘录写作部分对文章的评定有相当大的影响,所以这部分必须要费心好好写,我们采取先撰写中文再翻译的方法使这封信更有逻辑、更有层次。但是这种方法会占用大量的时间,我们在这一天从下午到晚上 9:00 左右由三个人协力才完成这部分的书写。

至此,其实我们的建模已经完成的差不多了,相比很多优秀队伍争分夺秒对时间的把控,我们的队伍显得相对清闲。这当然取决于模型的精细程度,我们在本次 MCM/ICM 中建立的模型比较粗糙,鉴于题目的特殊性,我们认为至此已经尚可。

在之后的两个小时内我们编译 Paper,查找错误,做出最后的校正。并于 23:00 左右完成了 Solution 的提交。确定提交无误之后我们 1:00 左右正式结束我们本次 MCM/ICM。

结尾

这次比赛给我们带来的感受不同于 2018 年 CUMCM 的紧张、与时间赛跑,有按部就班的感受。对我们结果的评判就交给评委组来完成,我们对本次 MCM/ICM 的参与是比较满意的。不论是在建模过程中的成长还是队员间羁绊的加深,都是本次参赛我们宝贵的收获。建模就是解决实际问题的过程,不论简单复杂,这些建模的经历都让我对解决问题有了不同角度的看法,或许这就是数模思想吧。