昨天查到了结果,B题H奖。我个人对这个结果还是很满意的。我是第一次参加美赛,也会是最后一次参加美赛了。
我大四,在考完研的寒假参加的美赛。三个队友都是数学学院的。
不是经验分享,只是记录生活。
赛前
我就读于西南某985,本校的数学建模成绩一向比不过同城的其他几所学校,不知道今年的情况如何。学校从我大三下半学期开始组织国赛培训,大四上学期开学还组织了为期一个礼拜的集训。我都是水过去的。因为有C语言的基础,所以Matlab对我来说不成问题。而短短一周的时间又学不会太多的模型算法,个人感觉研读往期优秀论文,建构自己的算法模型库可能比参加培训更有效。
我在大四上参加了国赛,是的,就是我考研最关键的大四上。这也间接导致了我真正准备考研是从十一月份开始,好在最后两个月的努力让我成功考上了研究生。
国赛没有取得任何奖项,连省奖都没有评上。国赛之前,我对自己的建模水平还是很有自信,教练组的一个老师也特别欣赏我,说我可以拿国奖。国赛最后的成果也警醒了我,不管别人如何夸赞,一定要知道自己几斤几两。
所以我对美赛取得H奖,非常的高兴。
我学的是基础数学,严格意义上,国赛美赛对我的用处,可能就是申请一个创新学分吧。如果没有同组的组员,也是我的女朋友的热忱,我根本不会报名参加比赛。
所以整个建模的准备期间,Matlab是早已学会的,LaTex也早已非常熟练(给女朋友出了两本课后习题答案)。而模型,只打算比赛的时候现学。
不打无准备之仗。
如果说美赛的赛前准备过程中,除过学校的培训,我们自己做的最有意义的事,应该就是提前模拟了一次美赛建模。我是从网上预先下到往年的题目,然后和我的两个队友一起在三到四天的时间内写一篇论文。
这两次模拟的过程中,没有夸张到每晚熬夜严格按时间模拟。模拟的目的主要是确定每个组员的分工。因为国赛的失败,我们总结了原因,发现主要还是时间不够。我一个人既要编程,也要负责模型设计,最后还要抓论文的结构。所以模型不够细致,最终也是没有任何可用的成果。所以才有了美赛之前的模拟。(主要的原因是,我的两个队友都是大三的,之前没有编程和建模的经验,也没写过论文)
通过模拟,我们最终确定了美赛各个队员的分工,以及时间的安排方式。我主要负责编程和建模,一个同学负责写英语作文,一个同学负责查资料和辅助。并且我们预先谈好,我绝对不插手论文的写作,最后写成什么样子,就什么样子交上去。我必须保证自己能够专心思考模型该如何确立,程序该如何编写。
完成模拟之后,我们每个人的电脑上都装上了比赛用的软件,Matlab,latex,ps等等。
然而,由于我的考研和期末考试,队友的期末考试。我们关于美赛的所有准备,也就只有这次模拟。没有学过什么模型,没有准备什么算法,没有读过优秀的论文。所以就像我之前说过的一样,我对H奖的结果非常高兴。
比赛进程
我们学校没有提供场地,甚至报名费都没有报销。我为美赛花费的钱,包括报名费和租房费(我的两个队员是女生)伙食费,前后加起来将近1k.
我们提前一天晚上到了校外出租的小房间,睡上一晚,第二天早起读题。
选题
分析优势劣势,然后坚持自己的选择。
ABCDEF题,除了B题是收费站出口设计,A题是修水利大坝,C还是D是安检流程,其他的题都在第一时间被排除掉了。我们的英文文献阅读能力不行,自然没法选需要读很多英文资料的开放题目了。
我们知道做B题的人一定很多,事实上确实如此。然而在经过艰难的选择后,我们在第一天的中午前仍然选择了B题。
我的主要想法是,我参加美赛建模的原因,很大部分是想借此来提高自己的能力。而收费站出口设计比较好下手,也可以用更多的时间打磨模型程序论文。其他几道题没有明显的思路,或者用到了完全没有基础的知识(社会学、水利),也许到最后只是草草建个模型了事。
虽然第一天结束,我们也没有建立出B题的模型。虽然查资料的过程中,我们无数次考虑要不要选EF题瞎编点东西上去好了。但最终还是坚持了下来。
模型
先做出个东西,不管好坏。
第二天的时候,我决定先用元胞自动机模型来动手做。再不开始动手,队友的情绪也有些崩溃了。
事实上,在之后的三天,我们做的全部工作,就是让元胞自动机更贴近现实。
我负责建立模型和编写程序,所以必须马不停蹄的开始做。而我的两个队友,也在电脑上不停的查着新泽西州高速公路的资料,各种公路建设手册,各种相关论文。在百度了元胞自动机的介绍之后,我便不再抱希望能找到现成的算法。
最终在第二天的中午,我领悟到元胞自动机其实就是按照一定的顺序,按照一定的规则,改变一个矩阵中每个元素的值的方法而已。于是我做出了第一个非常简陋的模型。
其实上图就是一个n\times m 的矩阵,其中除了右上角的块设值-1表示是障碍物,其他的块都设成0.而车辆,就是简单的把对应位置的块设成1,表示这个地方有车辆。再做个循环,一行行刷新矩阵。
用Matlab实现,也就是一两百行代码。实际运行起来,看着那些小灰块一步步向前跑,还是很有成就感。
之后的几天里面,每当碰到Bug,或者很难的问题,我都会默默开始跑自动机,看这些小灰块服从我写的几条简单的规则,慢慢的跑下去,就像小时候修了一个小小的机械,在旁边呆呆看半天。
这个简单的自动机,花费了我半天的时间。第二天的晚上,我才开始想有什么改进的方法。最后,我给小车赋予了速度和加速度,给小车更复杂的变道逻辑,对上面的矩阵做了不少变形,最后在第四天的下午之前,完成了论文主体的写作(因为一个队员要赶飞机回家)。
论文
选好队友,然后放心把事情交给他。
美赛的论文由一个队友主笔,我只给她说了我建立的模型,我跑出来的结果,她来组织语言写作论文,另一个队友在一旁辅助。我很感激我的两个队友能认真的整理论文结构,规范符号的用法,最后完成一篇二十多页的文章。写作英语论文的难度和工作量不亚于编程建模,甚至有过之无不及。
美赛结束,我的电脑里找不到论文的Figure,也找不到tex文件。
在最后一个晚上,我好好睡了个觉,然后半夜爬起来把论文提交了。这也意味这我的建模之路就此结束。
所以关于论文如何写作,我没办法详细的记录。然而最终,我还是逃不开写英语论文的宿命。半年之后现在,我又在头疼英语毕业论文该怎么写。
总结
建模的四天多里,我们的神经始终高度紧绷。各种摩擦和冲突不断,但好在最终还是做了一个成品出来。最终拿到了一个我非常满意的结果,也不枉这一程。
至于应该抱何种心态参加数学建模竞赛,我觉得我的老师们的态度可以说明一些事实。导师在面试我的时候,说什么建模竞赛什么数学竞赛,都是扯淡。
从我的体验来看,确实如此。四天的时间甚至连好好看懂这个问题都不够,更不用说能给什么好的结果了。沉迷于此且花很多时间的话,个人看来,真不如多读两本经典教材,真正学点知识。所以建模的意义,在我看来,应该就是三个优秀的人在一起为了某个问题绞尽脑汁通力合作的过程,非常有意思吧。
有些风景,只能看一次。
所以我不会再参加建模比赛了。