知乎大神为你讲解美赛建模

来源:知乎 张浩池

写这一篇文章的目的是什么?

之前其实已经写过了一篇有关于数学建模竞赛新手入门的文章,但是那篇文章的起点还是比较高,很多同学觉得还是有一定的难度,所以简单地写一篇快速入门的办法。也就是说,有助于你获得数学建模的奖项,但是对于真实实力的提升,还是需要一定的过程。所以这是一篇有关于数学建模竞赛应试的文章。其实就是告诉你如何通过参赛论文直接暴力地入门数学建模。因为在我看来,学习任何数模书籍,看数模培训视频,甚至去学习机器学习图像处理这些过于专业的视频都是得不偿失的。因为你是去比赛不是去做科研。

在学习过程中需要准备的材料

在学习这篇文章中,只需要电脑一台就行了,如果有需要可以把一些材料打印出来阅读。如果有必要,可以买一些优秀论文相关的书籍或者一些教材。当然数学基础不好也是有必要借或者买相关数学教材来看看了。比如《线性代数》(很重要)、《常微分方程》、《运筹学》、《微积分》(基础)、《概率论与数理统计》(很重要)等。如果有赛区组委会或者前几届的参赛论文最好了,因为不能天天只看最好的文章,也需要看看一些比较薄弱的文章,这样容易看出数模的阅卷是按照什么套路进行的,更加有助于我们写好每一篇论文,注重每一篇论文的侧重点。比如,摘要是文章里面最重要的,在正文当中模型的建立与求解非常重要,并且最后一问需要好好解决,这是拉开国一和国二差距的最后一道防线。

我们来交流下怎么拿奖吧

数学建模竞赛虽然它的初衷是非常好的,需要体现一个人应用数学的能力以及创兴能力,但是实际上,经过我多年的比赛,发现其实绝大多数获奖,包括国家一等奖,也是可以通过一定的学习以及一定的技巧来获取的。对于数学建模新手来说,最大的问题是没有基础。由于这项比赛并没有限制专业,因此每年的参赛队员基本上都是五花八门的,有数学与应用数学的,各种理科的,最主要的还是工程方向和经管方向专业的学生参赛。每年国赛出题分为A题(工程)B题(经管或运筹或社会实际问题),其实多多少少考虑了主要参赛队员专业问题。但是工程方向的学生或者经管方向的学生,在大学期间学习的数学非常皮毛,即使是对数学感兴趣的同学,在大学低年级的时候,除了高等数学、线性代数和概率统计掌握较好并且有自己的独立分析能力,大多数的课程也就是应付期末考试的水平。而同学们往往去看一些数学建模培训书籍,哪怕就是一些数学建模供认的入门书籍,比如姜启源老师的《数学模型》或者司守奎老师的《数学建模算法与应用》还有一些五花八门的建模书籍。大家可能看了前几页都非常地感兴趣,等读着读着到了一些比较高大上的问题时候,就立刻开始懵逼,后面就觉得很难,不知所云了。等到了真正比赛的时候,也处于一种懵逼的状态。由于前期准备不当,对于比赛开始存在恐惧心理,或者对于比赛有一种消极应付的心态,随便画几张图,做几张表格,甚至直接去网上截图,或者随意编造出一些答案就草草了事。对于论文写作或者格式的问题,都不太关心,最后的结果可想而知。

拿奖的第一步,论文!论文!还是论文!

如果有人问我只有一个月不到的准备时间,又想获奖怎么办?(实际上不要说一个月了,就剩下一周不到的时候,还是有人会问题同样的问题)。我的建议就是,看论文吧,求你了。看论文的效率胜过一切。其实这个道理,就和参加考试一样。你参加期末考试,最好的复习就是按照往年的期末考试,多看看往年期末考试的学长学姐的解答,并且把所有的知识点勾画出来,再把这些卷子自己做一做。复习高考和考研也是必然要去做真题,并且去研究真题的解答。数学建模的答卷就是论文,论文好坏质量是直接决定你能拿到什么名次什么奖项的。虽然模型和创新都很重要,但是如果没有一篇好的论文,阅卷老师不开心了,看不懂你在说什么,甚至要去揣测你的图表想要表达什么,或许就没有耐心去研究你的论文了。基本上,在国家奖层面,大多数的论文格式都是中上或者上乘的。基本上符合一篇学术论文的排版要求。数学建模竞赛国家性质官方比赛只有全国大学生数学建模竞赛(国赛),另外一个就是美国大学生数学建模竞赛(美赛MCM/ICM)。除此之外,就是国赛组委会下的两个挑战赛:泰迪杯和深圳杯了。如果没有那么多精力和兴趣,参加前面两项就可以了。既然要看优秀论文,那么主要的官方渠道有两个,一个是中国大学生在线的数学建模板块,这里是国赛优秀论文的发布地址:数学建模-服务频道专题_教育部中国大学生在线-全国大学生数学建模竞赛组委会指定论文发布网站_教育部中国大学生在线。另外一个是美赛主委会下属杂志UMAP,这一套杂志比较贵,淘宝上有电子版本可以购买。另外高教社出了一套美赛书籍,《正确写作美国大学生数学建模竞赛》和《美国大学生数学建模竞赛题解析与研究》1-5卷。前者帮助你快速入门竞赛论文写作,后者算是国内真正可以买到的一套官方优秀论文选了。除此之外,国内还有一些比较不错的数学建模论坛和QQ群,这里就不详细介绍了,具体的数学建模论坛在附件中有介绍。一般在比赛前都会有很多好心的爱好者把一些优秀的论文放上去,包括一些没有被官方选取的国家一等优秀论文,美赛也是如此。除此之外,可以询问指导老师有无每个具体赛区的优秀论文选,有时候多看看自己赛区的优秀论文也是有一定帮助的。因为,每个赛区的评阅是决定你的论文能否推荐上全国继续被评阅。至于美赛,则没有这么多问题了。如果要参加当年的数学建模比赛,请务必通过各种手段,至少每一类问题看上近5年左右的论文5篇,虽然工作量有点大,但是由于大多数论文的创新能力有限。实际上大多数论文还是基本上在用一种方法在解决问题,只是具体的解决细节有着一定的差距。比如国赛从2014年开始,A题的出题风格都是非常的硬:2014年轨道卫星问题、2015年太阳影子定位问题、2016系泊系统的受力分析、2017第一代CT系统原理以及(逆)Radon变换应用。这些都是需要非常强大的工科甚至物理学背景才可以解决好,对于数学基础一般或者查阅文献能力一般的同学,会非常吃力。第一眼看上去基本都感觉无从下手。但是这类题目实际上也给专业性强并且基础扎实的同学吃了很多便宜。B题由于社会性比较强,并且偏统计学方法,因此入手简单,但是做好,尤其是总结出一套自己的结论还是非常之难。因此,很有可能爆出大冷门。其实等大约看了几年文章之后,结合自己小队讨论的结果,大体上知道自己擅长什么或者不擅长什么。我做这个比赛3年多以来,觉得基本上自己擅长的比较难改变,这三年我能获得一些不错的奖项都是基于国赛A题这种偏硬有答案的问题,而不是B题这种社会性和适用性强,但是无答案的问题。所以,最好在比赛前就确定好自己擅长什么不擅长什么,不要犹豫。基本上临时换题的结果都不会太好。而且尤其是美赛题目选择太多,最好不要花费太多时间在选题上面,很多美赛特等奖选手都会坚决选某道题,并且把自己队伍的特点发挥到最好。与我相反的一位董同学,非常擅长国赛B题这一类题目,他不仅在2016和2017年斩获了国家一等奖,并且在2017年深圳杯的决赛中获得了全国第二的好成绩。同时他的论文排版不仅仅是上层次了,而是顶级水平。这次优秀论文里面,我个人认为他的论文排版是最好的没有之一。优秀的排版每次都能保证他在筛选时脱颖而出并且最终夺魁。每次我都调侃他,要不要来A题玩玩,他都坚决反对,并且最终的成绩都非常骄人。基本上小董同学出征比赛我都觉得他今年国一又稳了。所以,对我与我身边水平较高的同学来说,基本上是不太喜欢选题的,从大一开始培训基本上就定了一个方向,就一直强化下去,直到有一些自己队伍才有的特色。对于美国大学生数学建模竞赛来说,创新更为重要。今天参加颁奖典礼的国防科大吴孟达教授说:“国赛重视结果,美赛重视创新。”因此有时候看一些美赛O奖的论文与国赛国家一等奖的论文对比时,觉得美赛O有点水的感觉,没有什么高大上的算法以及复杂的模型。同时反过来觉得国赛一等奖都是一个模子里面出来的,甚至很多的图都“一模一样”。所以想获奖出色,还是得有自己的特色,特色不代表就是高水平,就是高端编程和高端模型。如果还是没有想好定什么题目,没有关系,多看看论文,总会有一些思路的。这里我想谈谈如何来看一篇论文。

如何看一篇数学建模论文呢?

数学建模论文和一般的科研论文不一样的地方在于,文章都比较冗长,短的十几页,长的二三十页。基本上大家约定俗成,数学建模论文在20-25页上下最好,带上附页最好也别超过40页左右。但是与科研论文4-8页甚至只有1-2页的情况相比,还是比较啰嗦了。对于这样的文章,直接打印出来显然是十分浪费纸张的,因此建议大家把文章放到手机上去阅读。但是如果遇到了十分经典的文章,比如2014年A题陶同学的文章,我完整打印下来并且作为我写作的模板,在2017年比赛当中我也用到了他的写作风格,收获颇多。在任何一个数学建模比赛当中,都没有真正所谓的官方格式,即使是国赛的文章,还是有多多少少的不同。但是不管怎么样,好的论文都是有共性的。因此对于新手来说,还是首先感受下整体,感受下所谓“高大上”的论文,大概知道比数学建模竞赛,应该在论文当中写一些什么东西:摘要、问题重述、问题分析、模型假设、符号说明、模型建立与求解、模型优缺点、参考论文和附件这几个步骤。只有自己多看看这些文章,才会熟记于心。当然,在正式比赛的时候,也可以拿着一篇优秀的论文,对着写即可。
光只看论文的框架还是远远不够的,这只能帮助你不要犯下一些无聊的低级错误。虽然数学建模是不太可能考同一个问题(今年数学竞赛就犯了考一模一样原题的问题),但是题目之间还是有非常多相似的影子。尤其是B题,虽然是社会类问题,但是解决办法主要还是基于统计学上面的一些应用方法。A题虽然比较杂乱,但是主委会还是比较慈悲,给的主题都是比较热门有非常多参考文献的主题。不论是绕月飞行还是CT系统,都是这些年非常流行的主题。只要上一些数据库搜索,都是成千上万的文章,甚至一些硕博学位论文都可以完整解决问题。2017年国赛B题在网络上就有可能完整解决的方案,后来主委会临时把文章撤下才避免了完全抄袭的风波。一般情况下,看优秀论文的时候,还是会觉得一些模型比较“虚”或者有点强行回答。其实这是有可能的,由于这是三天三夜的比赛,因此很多模型并不能禁得起仔细的推敲,会出现一些漏洞。所以需要多看几篇论文,取其精华去其糟粕。最好统计下每篇论文主要的思路和方法,如果不是明显现成的方法,就需要研究下他的参考论文主要是哪个方向的论文。对于B题来说,比较容易出现使用常规方法,但是特色指标定义的办法。对于A题,比较容易出现固定方法,但是是参考文献当中才有,数模书当中没有的结果。如果是B题,那么好办,学习的时候,结合数学建模教材,一点一点地啃,熟悉案例程序以及基本原理,这些内容在《数学建模算法与应用》这本书当中有着很好的体现。因为这本书不仅提供原理,也解决了非常多比赛当中的问题,并且可贵的是附上了所有的程序。对于A题,则更多地需要从参考文献当中获得一些信息,我前面也说到了硕博学位论文也是非常详细的,这一点和数学建模论文非常相似,可能给出了具体的软件操作甚至源代码,因此硕博论文是一个非常好的突破口。对于这一点,我想单独拿出来谈谈。

参考文献回溯法

这个方法我非常喜欢,因为这个方法的本质就是从这篇文章入手,回归到本质。如果这篇文章看不懂,没有关系,我去下载一下几篇我不懂地方的参考文献。这些参考文献可能是一些专著、一些教材、还可能是其他论文。然后进一步阅读这些参考文献,如果看得懂,回归原文,看看是一种特例还是推广,如果看不懂,继续看参考文献的参考文献,一直这样做下去,肯定可以找到一个本源。
在做这件事情的时候,其实我发现很多人写论文时不负责任的。出现所谓的“乱引用”或者“假引用”的状态。也就是说,很多人的引用都是无效的,仅仅是为了凑一片论文的参考文献数目,显得文章高大上罢了。所以,有时候给学习一篇论文增加了许许多多的难度,甚至我都怀疑有些论文的有些段落是不是虚假的?基本上,能踏踏实实做上几篇这样的论文,对于某一种题材的获奖论文,比如说什么样的文章可以拿国家一等,什么样的文章可以拿国家二等,一般都会有点数的。对于国二或者更加低等级的文章,一般互联网上比较少,建议找学校相关负责老师,给你们提供往届学生的参赛论文。好的文章和坏的文章看过了,也基本知道不同等级的论文大概差距在哪里。同时,对比阅读参考文献和参赛论文,也可以知道参赛队员是如何推广参考文献的方法和结论的。这次我即将指导一个队伍参加美国大学生数学建模竞赛,让他们学习了一篇O奖的论文,她们觉得O奖论文和国一论文的区别是:美赛那篇文章对问题分析特别细腻,模型的建立求解也不和国赛论文一样走一种框架的感觉,而是希望你读明白读懂,对问题思考的很全面,细节做得很到位。注意到细节了,其实也就容易出现创新了。这样她们在自己比赛的时候,就会更加注意这些,而不是一味最求建模结果了。

除了论文主体,我们还需要看什么?

除了论文主体,还有两个需要特别需要注意的是:图表和附录里面的程序。如果说让一个不懂建模的人选一篇最好的建模文章,我想大多数人都会选择一篇图表和教科书一样规范和科普杂志一样炫彩的文章,即使这篇文章狗屁不通。有时候我看一些PRL的文章,对比纯粹符号的文章和有图表的文章,明显觉得后者更像一篇做了很多工作的文章。实际上前者才是真正有意义的文章。所以在文章框架和具体方法都了解得不错的前提下,需要学习一些图表的绘制要求和绘制方法。比如这类论文一般都是使用三线表绘制,但是很多论文都是word常规表格,显得非常业余。有一些由软件生成的图表,用截图工具去截和软件自动生成的效果也有比较大的差距。董同学就是一名visio软件的高手,他说了一句非常厉害的话:“不要以为visio只是用来绘制流程图的。”除此之外,他也擅长使用PS对一些非数据的图进行修改,让图尽量好看。
不仅仅是visio,还有很多优秀的软件可以让你的论文增添很多色彩。因此在拿到一篇优秀论文的时候,最好了解你觉得惊艳的图是如何设计出来的?是某种高级软件原生的图?还是经过了一定的图片处理?这方面适合学有余力想冲击最高奖的同学去做,对于绝大多数同学来说,只需要好好使用Matlab这样的软件,绘制好原生的图就已经非常不错了。这次我也指导了那支准备参加美赛的队伍,去了解那篇O奖论文的图形怎么绘制出来的,并且写一篇短的报告给我看看。结果是,他们了解到一些冷门的软件,我本人也学习到了很多。毕竟不可能每个人都了解每一个高级软件。除此之外,就是附件的程序了。诚然,有一些程序的编程习惯是不好的或者在编译的过程当中居然出现了一些小的错误。但是这并不妨碍我们去学习他的精华。对于按钮式的商业统计软件,我们也要搞清楚他是按了什么按钮,做了什么样的数据集才实现的。对于Matlab这样的编程实现,则需要看他们使用了什么函数,用了什么样的新封装。一些Matlab自带的封装非常强大,几乎2017年国赛A题的第二第三问都是属于Matlab现成的封装好的函数:iradon()就可以实现。建议有条件的队伍,都找一名学计算机的成员,或者最好自己学一些Matlab的内容。虽然很多的程序都是现有的或者说在CSDN、Github上面有程序员写好的模板,但是还是要具体问题具体分析。最好多学习别人如何把自己的建模给程序化,如何设定变量,如何设定数据集,如何将解析的问题变成数值的问题,都是值得我们去考虑的。

最后的建议

对于低年级的学生来说,如果能好好做好上面这些步骤,我想后面你怎么学,也不需要别人去教了。所以最重要最重要是坚持下去,好好地学习一篇又一篇的论文。临摹了一万只老虎,最后让你画一支猫咪,应该还是没什么很大问题吧。在学习论文的时候,你会被迫自己去查资料,查书籍,重新实现程序,学习新的软件。实际上,到了最后,你提升了自己自学能力,也知道这个比赛黑的或者白的套路,最后的比赛技巧和经验只属于你自己。我在这里最后啰嗦下,如果你真的没时间多准备一年,那么比赛使用软件以傻瓜式,按钮式为主,比如Excel、Origin、Visio、SPSS、Matlab的一些傻瓜式工具箱也可以使用。虽然很多人认为SPSS这种软件使用了拿不到好的奖,恰恰相反,我们赛区B题一位国家一等奖的论文,全程都是使用SPSS做的。从文章可以看出,他们的数学功底并不强,但是敢于坚持和尝试,最后拿了大奖。Matlab学起来也不会特别困难,如果有计算机专业队友,就让他学一学吧。当然自己学一学最好,即使到时候不是你写程序,你也可以帮忙调试调试,一个人写程序是会疯掉的。


翰林国际教育资讯二维码