回首四年|学科竞赛3·数学建模竞赛

本文于2019年5月31日发表于知乎专栏,查看原文
本文于2019年5月31日发表于微信公众号,查看原文

当我大一初涉数学建模竞赛时,我却没有想过,大四时能在这一类比赛中获得国家级一等奖。

国家一等奖

这一类比赛的特点是,会在指定时间公布一个题目,要求在3-4天内提交一份论文(及支撑材料),论文的内容即建模解决这一题目。

学校竞赛名单里的数学建模类竞赛包括以下赛事:

全国大学生数学建模竞赛,简称国赛。每年9月举行,大约7月时学校会发通知,9月初在数院报名。参赛成功后学校将退还报名费。该比赛分为省级和国家级两级,但只需提交一次作品。省级比赛由市教委主办,国家级比赛由中国工业与应用数学学会主办。省级比赛颁发一、二、三等奖,三等奖几乎等于参与奖,省级一等奖获得者将在复旦大学参与答辩,根据答辩结果决定国家级的奖项的推荐名单,并送北京审核,包括一等奖、二等奖和没有奖。因此,最终获奖情况包括:国一+省一、国二+省一、省一、省二、省三。由于参与奖(省三)的存在,该比赛性价比极高,强烈推荐参加。

美国大学生数学建模竞赛,简称美赛,每年2月举办,需要自己在网站报名(参赛费100刀)。看似是国际性的比赛,实际90%的参赛者来自中国,在中国的存在感远强于其它任何国家。S参赛即可获得,但教务处只奖励H奖以上的奖项,约占参赛总人数的50%,需要自己向院系科创负责人申报。

华东杯大学生数学建模邀请赛,是复旦大学数学科学学院举办的比赛,看似等级很低,但是教务处将之列为省部级比赛。获奖率贼低,如果不是实力无敌,确有血本无归的风险。

校赛和校热身赛,获奖率也特别低。举办时间不定期,甚至出结果的时间也完全看心情,不知之后会不会常态化举办。

国赛获奖,甚至应届毕业生落户上海都有加分,所以甚至有人在知乎上找我,说什么两万求省一……

两万求省一

我曾说过“比赛前不需要准备”,因为在我看来,这一比赛对能力的考查,远大于对知识的考查。比赛中碰到自己熟悉的题目背景的可能性几乎没有,所以掌握资料搜集能力、文献阅读能力(尤其是英文文献)和自学能力,是非常必要的。同时,用数学思维分析问题的能力,用编程解决问题的能力,以及撰写论文的能力,也是必不可少的。

是的,这些能力合起来,不就是科研能力(特别是我这个领域的科研能力)?这就是我在经过大三一年的科研训练后,在大四一开始拿到国一的原因。科研对这些能力的提升是巨大的。关于我的科研经历,另外发文叙述。

不过我想来,最重要的可能还是编程能力。在国赛题目越来越注重编程的情况下,别的能力或许都能边参赛便提高,但三天速成编程应该是不可能事件……

参赛历程

下面转载一下我去年写的参赛历程,首发于知乎:

拿到题后,根据去年的经验,很快决定做B题。一般来说,A题有固定答案,看上去简单实则很难;B题反之。决定做B题后,花了点时间,理清了B题的逻辑。个人感觉这个的模拟,和分子动力学模拟很像,于是提出先写个基于时间步长(timestep)的模拟程序,先用个最简单的策略:谁时间短,即谁最先完成加工,谁就先加工。快马加鞭,当晚便用Python写出了第一版程序,处理第一道工序的问题。

事后才知道,第一晚至少解决了一半的工作。接下来两天,主要在纠结这些事情:

1.有没有更优的策略。首先把只考虑休息的RGV改成考虑所有RGV,效率明显提高。不过我起初以为,这么简单的策略肯定不会是最优策略。后来发现,没有更优秀的策略了……最简单的反而是最好的。查阅了大量中英文文献,表明我们的方法叫动态规划,并且应该没有更优的算法了。知乎某些人说的什么遗传算法没有任何作用……

2.两道工序间怎么传送熟料。是用机械臂还是用传送带呢?题目也没说。第二天写程序的时候一直在纠结这个,最后决定两种程序都写一遍,哪个效率高就用哪个。

3.两道工序的刀具怎么选呢?本来想多试几个,后来想到可以全试一遍,一个for循环就解决了……

4.那个发生故障的概率怎么理解?题目也没说。最后决定我们自己来定义……

5.bugfix,直到确定程序和数据没有任何问题

最后一天全面进入写论文阶段。说起来我们的思想其实相当简单,所以调度策略其实没多少可写的,一句话能讲明白的调度策略硬是被队友写了好几页……模拟思路可写的倒是很多,也写了很多……最后感觉还差几页,就用visio画了张流程图,用python画了几张甘特图,凑凑页数。

下午五点,提前三小时提交,然后就回去休息了。所有内容,包括论文、数据、代码和图片,都已放在GitHub上

当时感觉状态十分良好,我们四天来既没有熬夜也没翘课,还是做得很顺利,毕竟我们的数据摆在那里(并且是用程序自动生成的)。当时的感觉是,至少比去年的奖项要高一点。

10月8日被通知入围答辩,发现大家都是用这种最简单的调度策略emmmmmm,但是我们的数据是最高的,除了因为没有像某些组死抠题目外,另一个原因就是考虑了刀片问题。于是我跟我室友说“这是我三年来离国一最近的一次了”。

和室友的对话

第二天答辩后感觉仍然良好,心里隐隐有一种对国一的期待,不过还是谦虚地跟队友说国二肯定稳了……我们学校国一每队奖5000,国二每队奖3000。于是我们开始考虑奖金怎么花……

结果出来,果然就国一了。还意外地获得了应届生就业落户上海的10分加分,大概就能到达落户的标准线了(虽然我显然并不打算本科毕业后就就业……)。

下期预告

下一期将讲一讲数学竞赛的参赛经历,说起来也没什么技巧可以分享,因为是裸考……