此文总结了本人参加数学建模(国赛、美赛)的经历、经验,并提供了准备数学建模的一些建议。
关于我
- 我(软院)负责编程,两个数学系的队友(伏臻,杜景南)负责建模和论文
- 校赛一等奖,校队笔试没过,但因为有ACM校赛的奖,霸面通过了(强烈建议大家参加ACM校赛,国/美赛都很缺编程队员,集训前数模群里好多喊着找编程队友的,程序猿第一次成为抢手货,而衡量你编程能力的指标又很少,ACM校赛无疑是最直接的,而ACM校赛又是很容易拿到二奖或以上的,so~)
- 国赛国家二等奖,带队老师是周水生和韩邦合
- 美赛ICM一等奖,带队老师是周水生
- 我的编程能力得益于在软院科协(SSSTA)的经历,有c语言培训以及应用开发和web开发的经历,与ssstaer的接触也开阔了视野,这些在我数模的生涯中起到一定的帮助,许多数模中的想法和创意都与这些经历有关(所以找编程队友推荐找科协的,just kidding;D)。另外数模确实让我提升了很多,尤其是三次比赛之前的集训。我觉得只要坚持下来,按照对的路去走,就能慢慢接近成功。
关于数模
- 国赛官网,下图显示了2013年国赛的结果
美赛官网,下图显示了2013年美赛的结果。不得不提一下,Outstanding Winner是美赛最高的荣誉,只有全球参赛队中非常优秀的队伍才能获得这个奖,这个奖以往都是宁缺勿滥的,2013年我们学校第一次有队伍获得了这样的殊荣,他们队的一位大神是朱宇轲(轲霸),我们队和他们队都是周水生老师带的(沾一下大神的光啊),另外轲霸也是软院科协的哦(软院科协出人才啊啊啊);Finalist是提名Outstanding的意思;M奖被称作美一,H奖被称作美二,SP成功参赛奖,美赛委员会还是挺人道的,你缴了那么多钱,非得给你个奖,除非论文真的乱写那就是失败的参赛者了。
国赛和美赛的对比
| | 时间 |时长 | 题目类型 | 模型 | 数据 | 论文写作|地点|
| – | — | | ——- |—- | | |
| 国赛 | 9月份|三天三夜 | 比较固定 |经常是一个模型用到底|提供|中文|新校区F楼|
| 美赛 | 寒假|四天四夜|灵活多样,发散|一个题可能会用到很多模型|不提供|英文|老校区|
- 美赛的题真的是五花八门,曾经出过“器官移植问题”,“棒球棒设计问题”,“全球医保的评价模型”,“U形滑雪管道设计”等等,同样的美赛对内容的安排上也没有什么限制,总之它提供参赛者很大的发挥的余地。
- 学校很重视数模,尤其美赛,但是对参赛队员的福利是逐年变差,2014年之后政策调整为:国一、美一或以上、国二必须获得美二或以上才能保内(其实这样的政策有不太科学的地方,国二明明比美一比例还小,难度还大,咋就不能保研了,被歧视了);国赛不再有成绩的加成(加成最早为“扣掉的分数加回60%”,后来改成30%,现在是一分不加);评奖学金时的对M2模块的加分并没有改变,而且力度还是很大(校一二三+321,国奖+10,省+5,国际+10,可能有偏差,具体见学生手册),这就给了学霸一个平均分破百的机会,给了学渣一个拿奖学金的机会。
我的数模历程
校赛前
  大二下开学的几周后,我组好了队,在校赛前的时间里我把概率论,数学模型两本书看了一遍,和队友找了两个练习题,完整地按照数模要求做了一边(包括论文)。
校赛
  每年5.1三天假期都是用来安排数模校赛的,学院一般在比赛前的一周才会通知,但是真正想拿奖的在学期开始的时候就开始准备了。软院对竞赛很重视,福利很好(提供实验室、学生教练、最后一天的夜宵、打印机)所以建议在软院报名(当然需要队伍里有软院的童鞋)。
国赛
  九月份正式比赛,三天三夜,暑假两个阶段,第一阶段老师带着把主要的模型过一遍,第一阶段中期就开始找带队老师了,一般老师会安排面试,我们那时候面试周老师韩老师的时候因为我之前做过一些项目引起了他们的兴趣,加上队友都拿过奖学金,所以就被录了;第二阶段带队老师给题,按国赛的标准来做,周期取决于带队老师,我们开始时6天一题,后期4天一题(也有地队伍3天一题。。。),做完带队老师组织答辩,我们最终总的练了六个题,全部代码和最终论文发在我的Github和云盘上了。
美赛
  寒假,年前或者年后,四天四夜,我们这届比赛在年后,所以集训分了两个阶段:年前、年后。第一阶段放假后的两周,打包(收拾行李)自己坐车去老校区宿舍住 ,做了两个往年题;第二阶段就是比赛前提前三天回学校,调整状态准备比赛。美赛阶段地集训主要是英语论文方面地准备,和一些高级地技术的准备,比如智能算法(神经网络,遗传算法),网络爬虫(美赛不提供数据,需要自己去查,简单的网页抓去和正则表达式能节省很多时间),美赛我们练的题和最后比赛地题的链接。
如何准备
  因为国/美赛都有老师指导,这里主要讲一下校赛前的准备。
  校赛两个选择,一般都是一个数据分析(预测)和一个图论题。所以赛前需要熟悉:预测算法(灰色预测、回归预测),图论算法(最短路等),层次分析法,智能算法(遗传算法、模拟退火)。这些算法都可以在《MATLAB数学建模算法及实例分析》(下载)中找到。除了模型和算法之外论文也很重要,《正确写作美国大学生数学建模竞赛论文》中就写到:
好的论文表达即使模型一般也能取得好的结果,但是,好的模型遇上拙劣的表达,很难被阅卷老师发现,也就不容易拿奖。
这块建议读几篇优秀的论文,模仿他们的格式和结构去写,也可以看看我们之前写过的论文,集训答辩的时候老师点评说:
你们的论文像是出版社印刷出来的一样。
当然这是我队友伏臻的功劳(他有轻微强迫症,嘘)。最后再用一个例子强调一下论文的重要性:我们校赛选的是一个图论题,结果不太容易算出来,有个别组到最后算不出来直接问来了结果然后把论文编完了,最后拿了校一等奖。因为论文是最后唯一递交的材料(虽然国/美赛要求提供所有源码,但我的代码自己再去看都看不懂了更何况阅卷老师,所以个人感觉提交源码只是个形式)。
队伍构成
  建模、编程、论文,按这三个方向去组队,分工明确,但一个人至少要能胜任两方面的任务(比如建模的队员能用matlab实现基础算法,写论文的队员懂得基本的模型,编程擅长排版等等)这样子比赛的时候配合得更好,而且任何一个角色不会压力太大。我的两个队友都是数学系的,他们模型方面都很熟悉,一个负责论文,一个负责建模+一些简单的数据处理,我专心敲代码。这样的组合挺好,另外如果两个软院+一个数学系的组合也是不错的,因为碰到一些图论题编程量还是比较大的。我们队伍从校赛一直做到国赛和美赛,配合得都挺好的。
工具选择
  编程: matlab/python(numpy),对于编程能力好的同学,建议使用python,因为Matlab有些繁琐,比如字符串数组的处理,个人感觉python更加灵活,而且使用范围更广(包括web开发、数据挖掘、机器学习)。
  论文排版:能力强的队伍可以尝试使用Latex/Texmacs,但非必须,Tex虽然是排版界的首选并且完爆word,但是用Tex上手难,数模论文word能应付。
  其他: Lingo,R,SPSS,这里推荐下R语言,统计方面非常流行的一门语言,广泛应用于数据挖掘等领域。
  参考书:首推包含超全的matlab算法以及大量源码的《MATLAB数学建模算法及实例分析》(下载)、《数学模型》(Amazon)、《python数值计算》(下载)、《python tutorial》(下载)。
  另外这边几本用过的书,有想要的就在下面留言,先到先得,送完即止。
《美国MCM/ICM竞赛指导丛书》、《正确写作美国大学生数学建模竞赛论文》、《MATLAB在数学建模中的应用》、《数学模型》、《R语言实战》
  谢谢你能看完我冗长的流水账,最后附一张我们美赛的奖状,希望参加数模的你们都能够在这个过程中成长,并且拿到大奖!