如何在半个月内速成数学建模?
一、 序言
一直心心念念地想写篇经验贴,一方面当做是回忆下以前的点点滴滴,另一方面希望能帮助后来者尽快的成长,尽快的发挥自己的能力,体验数学及统计学在应用中的作用,爱上数学建模,甚至和数学建模打一辈子交道。
之前有很多喜爱数模的都会将自己的经验分享给大家,我也希望能够延续这种精神,哪怕能给大家一点点的帮助。
先简单介绍一下我自己吧,我搞数学建模的时间算是不短了,也大大小小的参加了几次比赛,顺利拿到了诸如国赛的一等奖、亚太杯的一等奖。总的来讲,在参加完比赛之后愈加感觉要想在国赛取得好成绩,经验第一,实力第二。事实上,我们首先不要把“数学建模比赛成绩好的人”等同于“真正会数学建模的人”,国内的“数学建模比赛”大多数是人为设计过的,有一定的套路和规律,经过一定的训练都能取得不错的成绩。基于此,经验就很重要了。经验能告诉我们该怎么选题,团队怎样分工更有效率,评委更加青睐于怎样的论文,三天的比赛时间怎么安排时间,怎么控制进度...
以下,我将从组队及团队合作、建模培训、建模流程等几个方面来将我自己的经验分享给大家。
二、组队及团队的规范化
数学建模是三个人的活动,一个优秀的团队是拿奖的前提条件。一个优秀团队最好要具备以下品质:
2.1合理的人员配置
大家在组队的时候很容易出现同个院系甚至同专业的三个人一起组队,私认为这是组队的大忌。
以同个院系的三个人为例,三个人有着大致相同的培养模式,基本相似的专业知识,那么在真正建模时,三个人很难会有思维的发散性及创新性,大家可能对这个问题所想的思路都一样,很难产生思维的碰撞,也就是我们常见的“局部最优解”。同时这样相较于其他不同院系组队的队伍知识面会更窄,如果碰上专业知识以外的背景那会比较麻烦的。所以如果是不同专业组队则有利的多。
那么怎样的人员配置是最合理的呢,众所周知,数学建模特别需要数学和计算机的能力,所以在组队的时候需要优先考虑队中有这方面才能的人。简单地说,下面三人是最合适的:一个是对建模很熟悉的,同时知晓各类算法的应用场景、优劣性及适用条件;另一个是能将算法编制程序予以实现,求得解。当然有可能是一个人就将这两种都具备了,这样的话再找个任意具备上述两种能力的人就可以了,以减轻工作量。还有就是主要负责写作和排版的同学啦,个人认为这是团队的灵魂,论文及排版呈现的好坏最终决定整支队伍的上限。论文是你的思路、算法和求解结果的呈现形式,也是评奖的最关键的依据,同样的思路,同样的算法,思路更清晰、排版更漂亮更容易让你们队伍脱颖而出。
2.2 明确的团队分工
上面也有提到,这里再总结一下,三个人要具备一个数学功底深厚,理论扎实,一个擅长算法实践,另一个是写作(弥补专业知识不足),如果一个组能有这样的人员配置是比较合理的。但是往往事事不能如意,所以不能满足这种人员配置的时候就尽量往这样人员配置靠。
2.3 团队有主心骨
大多的数模比赛时间只有三天,时间是最大的敌人。那么此时就需要团队里面有人来协调队伍的分工,控制论文的进度且面对分歧时能够及时拍板担责。在建模的过程中对于思路的分析很容易出现成员之间的分歧,当谁也说服不了谁时很容易陷入僵局。数模国赛又非常讲究思路的衔接性,即一环扣一环,每问之间都有联系,当在某一问陷入僵局的时候,时间就会白白耽误下去。此时就需要队伍的核心成员及时拍板,把进度推进下去。
2.4 有效的沟通机制
在数学建模中,有效的沟通机制是团队合作成功的关键。沟通机制应该包括各种沟通渠道,例如定期的会议、沟通工具等,同时沟通机制也应该有明确的规定和流程,以免信息的丢失或混淆。以我们队伍为例,我们以“微信”作为主要的日常沟通工具,对话、文件、链接都会发入群中,同时为了避免文件丢失和实现信息共享,每天都把当天群里面的文件上传至云端;同时在讨论题目和做完题目进行总结时采用腾讯会议,并将会议内容进行录制且生成会议纪要,其目的为会后更方便的回看。
一个团队要养成默契的沟通方式,当然这需要一段时间的磨合,前期肯定会存在时间分配不合理、团队间沟通反馈较少、建立的模型不全面、细节上不到位等诸问题,这里想说的是出现这些问题再正常不过了,有针对性的去解决就好了。
2.5 计划性和良好的反馈机制
团队可以根据自己的情况制定计划,具体为团队成员在每天早上列出任务清单,同时在完成了某个任务或者一天的工作,可以花一点时间把工作情况反馈给队友,这样可以让他们更了解你的工作进展和状况,且每三天写一个总结,这样可以建立一个透明的合作模式。
2.6 系统的资料库
系统的资料库是提高效率很关键的步骤,可以依托百度网盘来建立资料库,达到信息共享的效果。资料库具体可分为:优秀论文和参考书籍合集、各类算法的代码实现合集、优秀论文和参考书籍合集、常用网站汇总。
整个文件总体可分为四个部分,第一部分为部分练习题优秀论文,里面为国赛的一些经典题目,同时附有部分优秀论文和我复刻的论文实现部分。其主要面向的是国赛C题;第二部分为建模参考书籍的电子版,主要分为以下几个部分:规划类参考书籍(优化方向)、机器学习(如西瓜书)、时间序列分析及多元回归分析(预测类)、数据降维及特征选择、智能算法等几大部分;第三部分为一些数据网站和画图网站的汇总;第四部分为一些团队分工及其注意事项。
我们建立资料库的目的有两个目的,第一点也是最重要的一点,就是提高效率。国赛中有很多常用的模型,固定的套路为介绍模型,再结合题意写出使用该模型步骤,最后使用代码实现。事实上,这些都是可以事先准备好的,如22年国赛C题第二问,题目很明显的表达了对数据降维,此时大家都能想到要用主成分分析或因子分析,事实上参考答案也是这么用的。这时候,直接调用资料库中所整理好的内容就可以,再结合题意把数据带入之前写好的程序中,这样很快就能把这一问解决,既节省了时间,也避免的查重问题。
三、关于建模培训
当前,各个院校为了在国赛中取得好成绩,都会在暑期开设培训班。以我们学校为例,培训阶段分为两个过程,第一阶段为填鸭式的教学,带学生大致过一遍常用的算法和模型;第二阶段为以题带练,每四天为一周期,前三天做一道题目,第四天老师进行点评和讲解,一直持续到国赛结束。纵观这些方法,个人认为有些不合理的地方,一个是填鸭式的教学效果并不好,第二点是做完题留给总结反馈的时间太短。一般进程就是建模型,解模型,写论文这三步。所以从这三个方面去培训是最有效的。
3.1 建模
建模型是最为关键的一步,新手往往是无从下手,这是因为知识面不广,缺乏背景知识,背景知识对建模型来讲是很重要的,如果课题的背景刚好是本专业的,那就会知道问题的关键是什么,该怎么样去解决,而事实上往往不是这样,问题的背景是所不熟悉的领域,这个时候就需要查资料了解这个问题的背景和了解问题的发展,特点,关键所在以及前人是怎么解决的等等。因此需要训练查找资料和查找文献的能力。新手在知道该怎么做以后碰到的问题就是不会做,这个就是相关知识的缺乏了。比如需要做聚类分析,需要用遗传算法,需要做相关性分析等等的时候不知道该怎么做?这个就是相关知识的缺乏,当然知道了解掌提全部的算法和知识是不现实的,但是常用的算法和知识是必备的,也是必须的。
有前辈曾总结过数模竞赛应当掌握的十类算法: 蒙特卡罗算法,数据拟合、参数估计、插值等数据处理算法,线性规划、整数规划、多元规划、二次规划等规划类算法,图论算法,动态规划、回溯搜索、分支定界等计算机算法,最优化理论的三大经典算法:模拟退火算法、神经网络算法、遗传算法,网格算法和穷举法,一些连续数据离散化方法,数值分析算法,图像处理算法。基本上涵盖了数模中几乎所有的算法了,如果掌握了这些对于运筹优化类的问题就可以轻松解决了,但是随着近些年的发展看概率统计的手段在数模中的作用越来越大,所以除了上述十大算法之外还应当对统计方法有相当的了解和掌握。先前说过,要堂握所有的知识是不现实的,参加数模的其中一个能力就是现学现实的能力,在最短的时间内掌握知识并将其应用,这个也是吸引很多同学为之着迷的原因,但这并不是说可以不去了解算法,什么都可以到竞赛的时候去学,那个时候就来不及了,因为只有了解的多,知识面宽了,遇到问题时就知道该怎么办了,然后具体去解决问题。所以增广知识面,博览全书很重要。
3.2 求解
模型建好了,该怎么解是个常常令人头痛的问题,这个不仅时新手,而且一般是令绝大多数同学头痛的问题,辛辛苦苦把模型建了,但是解不出结果来,这个时候往往时间很紧了,常常另人无奈,所以培训的时候多做这些方面的训练是十分必要的。解模型实质上就是算法的实践。一般来讲是用Matlab,Python,Lingo,R,Spss等软件来求解。推荐几本可用来参考的书:
- 机器学习实战(Peter Harrington 所著)
- MATLAB R2020a 完全自学一点通 (星星)
- MATLAB 智能算法30个案例分析
- MATLAB 神经网络43个案例分析
- MATLAB 统计分析与应用40个案例分析
- Python 编程——从入门到实践
- R语言实战
- latex学习推荐刘海洋老师的《LaTeX入门》
同时我将这些书籍的电子版通过百度网盘进行分享,同时还有其他书籍(如数学模型第五版 数学建模算法及应用第三版),链接放在文章最后面。
3.3 论文及绘图
论文是很关键的一步,写到这里已经写了很多“关键”的词了,事实也如此,步步关键,其中一步做的不好都对结果有很大的影响,论文是所有工作的体现,如果论文写的不好就功亏于溃,因此多写写多练练绝对是有好处的,并且不是写完就算了,要不断的修改,修改到自己非常满意,修改到像所发表在数学期刊中的论文那样才可以。
同时为了让论文更美观,漂亮的绘图是必不可少的。下面介绍几个常用的绘图软件和流程图的网址:
必备:MATLAB(画箱线图、直方图常用)、PPT(用于图片后期修改)、亿图图示(绘制流程图)、https://app.diagrams.net(流程图等)
进阶:R (ggplot包,绘制统计图形非常方便)、Hiplot(一个绘图网站 http://hiplot.org)
下面简单展示一下用上面这些工具作出的比较漂亮的图:
四、建模流程
4.1 选题
选题的时候要慎重,先把题目的意思搞懂搞透,然后根据自己的优势和能力选择最有利于得奖的一个题做。一定要保证这个题我们能做出来,在保证下限的同时再去想办法提高上限。
在慎重的同时一定要快,选题在一个小时左右吧,我的理念是要把时间花在实际的做题过程中,不要把时间浪费在选题上,因为选题过程是不能产生任何效益的,大致浏览一下这个题属于哪个领域,哪个类型的问题,并且知道有没有把握做下去就可以了。当然,在做决定前一定要多读几遍题。
需要注意的是看起来入手容易的不一定好做,一般到一定地方就很难深入,运筹优化类很大一部分就属于这类。而看起来无从下手的题目一旦找到突破口就是世外桃源了,就有很多东西可做。因此,在选题之前一定要对整个题目进行分析,不要看到某一问好做就认定要选这道题了。
需要注意的是,国赛C题是最容易理解,但与之相对的是选的人将近有参赛队伍的80%。
4.2 文献查找
在选完题前后要去找相关文献。通过文献阅读可以知道别人在这方面做了多少工作,怎么做的工作,取得了哪些进展,哪里是关键,哪里是有价值的,哪些是无意义的。国赛建议的文献查找模式为:中外文期刊数据库+学位论文
推荐去查找学位论文,学位论文是最高效率得到信息的途径。在查找文献中很重要的一点是查找到的文献有效率,因为很多文献找到是没有用的,能有个3-4个有用的文献是很难得了的,通过数据库关键词查找到的文献的有效率是很低的,而通过查找已查找到的文献的参考文献是很有效的一种手段,其有效率则大大的提高了,通过这种连锁查找是强烈推荐的,尤其在赛中超级强烈推荐。
查找文献是决定参赛论文起点高低的关键。三天中做的课题很少是重新起灶的,一般都是在文献的基础上做的,所以找到的文献如果离所做的课题越近则参赛成绩会好。所以在查找文献多下点功夫不会错的,砍柴不误磨柴工。
注:参考文献的编辑和管理。如果你在写论文时才想到要整理参考文献,已经太迟了,但总比论文写到参考文献那一页时才去整理要好。应该养成看文章的同时就整理参考文献的习惯。Word没有提供管理参考文献的功能,用插入尾注的方法也很不地道。对此可采用下述模版,只是像填表格一样地输入相关信息,如篇名、作者、年份等在文章中需要引用文献的的方插入标记,这除了可以保持格式上的一致、规范,减少出错机会外,更可以避免正文中对参考文献的引用和参考文献列表之间的不匹配。并且从长远来说,本次输入的参考文献信息可以在今后重复利用,从而一劳永逸。
4.3 论文写作
在摘要的写作中一定要花3个小时以上,反复修改,一定要修改修改再修改,修改个10几稿才能过关。在摘要中一定要突出方法,算法,结论,创新点,特色,不要有废话,一定要突出重点,让人一看就知道这篇论文是关于什么的,做了什么工作,用的什么方法,得到了什么效果,有什么创新和特色。一定要精悍,字字珠玑,闪闪发光,一看就被吸引。这样的摘要才是成功的。
论文的问题分析部分也是要着重注意的,这部分要写的很详细,把评委的吸引过来,把评委说服,让评委感觉这么想完全是对的。同时,在写完总的问题分析之后一定要配上流程图。
同时,论文的主体部分加入模型的分析与检验这部分,这部分尽量包含两块内容,一个是灵敏度分析,还有就是做一些模型的对比,显示出咱们模型的优越性,这个是加分点。论文的模型的评价与推广也要重视起来,缺点要试着说的隐蔽些,把缺点说成“优点”。
论文的主体部分也要修改修改再修改,当然主体部分的要求没有象摘要这么要求高了,但绝对不能马虎。主体部分逻辑性一定要强。为保证论文的逻辑性,在写论文之前一定要写个大纲。
在论文写作中一定要注意能用图表的地方尽量用图表来表示,图表比用文字阐述要来的清楚直接。一张图表往往能代替一大段干巴巴文字。并且图文并茂多爽啊,要知道教授们大都年纪不小了,为了教授们的眼睛,减轻他们受文字的折磨多用图表绝对是不二的选择。同时这也是偷懒和使论文增色的不二选择。须注意的是图表的引用要规范,在交叉引用的时候一定要小心,不然会对不上就麻烦了。
4.4 时间安排
全国赛具体三天该怎么做。全国赛是周四下午六点开始,周日晚上八点结束,为了避免提交时拥堵提交不上,周日晚上七点前一定要做完。只有三天时间,要解决三到四问,时间是非常紧的。因此一定要保证效率。
周四晚上6点钟拿到题目以后,就要潜心研究题目,吃透研究透题目,题目至少要读三遍,五遍最好。在当天晚上最晚到十点前就要确定做哪个题目,然后就要开始查找文献资料。查找资料的工作最晚要在周五的中午前结束,记住要找每一问的资料。下午两点钟进行讨论,分配任务,然后去做自己相应的部分,包括数据预处理,论文大纲的撰写,思路的整理。至少要讨论出来前两问的主要思路。
周五下午就要分别去负责自己的一部分了,最晚周五晚上7:00之前第一问的模型构建与求解要完成,同时论文上问题重述部分、背景介绍部分、问题一的问题分析与模型建立与求解要搞定。
周六上午要完成第二问的求解部分,哪怕完不成也要至少搞定一半,论文上也要完成第二问的一半,下午轮空,晚上7点钟之前要聚到一块,今晚要熬夜。在周五、周六的晚上加上周日上午,要完成剩下两问的论文模型建立与求解部分,论文大致的雏形要写出来。周日下午把摘要部分写了,写摘要的同时把灵敏度分布这部分做了,模型的优缺点以及改进部分。
收尾工作。在论文的初稿出来以后,站在评委的角度去检查自己的论文,包括以下部分:论文的结构是否合理,图表是否恰当,语句是否通顺(尤其是摘要和问题分析部分),表述是否清晰。同时,最需要强调的还是摘要部分,摘要写好后,要反复阅读,力求用最简洁的文字,将自己的思路、方法、模型、结果等内容表述出来。
到第三天下午则要基本完成论文了。并要不断的修改论文,开始最后最关键的一环,艰苦卓越的修改修改再修改的过程。
这个时间安排是最理想的,能达到如此的队一般都能取得较好的成绩,但是很多队大都是前松后紧,咱们队也是慢热。结果往往时间不够,最后的环节没做好导致前功尽弃。这个教训很是深刻啊。
在建模中往往会出现有分歧的时候,在建模中则经常出现,难得有一致的意见。但是我们正是在这种分歧中对题目了解的更透彻,对细节搞的更清楚。在这个时候则要耐着性子坐下来好好分析问题,将我们的分歧展开谈,将各自方法的优点结合,扬长避短,做的尽可能的好。而当实在不能融合的时候则一定要有一个让一步,先将题目做下去,不能僵在那里,让时间白白流逝。在做下去的过程中会发现问题再进行弥补的。在三天的工作中团结就是力量,一定不能发生内讧。不能有个人英雄主义的行为出现,并且一定不能精神疲惫,一定要有激情有信心。
在三天工作中休息时间要安排好,由于时间有限,不能象往常那样作息了,睡的多就意味着工作时间减少,当然有正常作息拿一等奖的例子,不过那是少数,所以怎么样安排休息是有讲究的。一般来讲要当困的时候才去休息,这样的休息才是最高效的,可以一占枕头就着,并且睡4个小时起床立马神采奕奕,全部恢复。第一天一定要安排休息时间,在第三天一般是没的休息的,鲜有几个队在第三天的时候能睡的着的。三个人一定要轮换休息,也就是说一定要保证一人以上不睡觉,不能三人都去睡觉。第一天的时候勉强可以,但不推荐。
在工作中,常常有一些想法出来,无论这些想法是可行的还是荒诞的,都要记下来。因为那或许就是问题的解决之法,或许就是闪光点。无论是来得及做的和来不及做的都记下,来不及做的可在论文的发展或优缺点中给予体现。这些就是闪光的地方。
在工作中一定要有重点,分先后。先做主干,再补充枝干,有层次的做。
在碰到困难的时候一定要镇定,不能惶急。不要逃避要用于面对,一定能解决的。很多困难无非就是建模和解模的困难。建模中碰到困难则不妨换个思路,跳出局部从全局看,换个角度等等。在解模中碰到困难则要进行估值,降低求解范围和难度。
4.5 论文排版要求
论文统一采用A4版面、上下左右页边距至少为2.5CM、论文题目用三号黑体字、一级标题用四号黑体字,并居中;二级、三级标题用小四号黑体字,左端对齐。论文中其他汉字一律采用小四号宋体字,如为排版效果需要可以适当调整行距。特殊表格和图形中文字根据需要可适当改变。 不能加页眉、眉线和目录, 页脚部分除了页码以外不能含有其他任何信息;一律单面打印,左侧装订。
4.6 参赛注意事项
1. 参赛队在确定选题以后,要及时在网上进行选题确认操作。
2. 电子版论文中不能包含承诺书和编号专用页。
3. 程序代码也是要查重的,因此如果是已成熟的算法代码,建议只给出引用链接,不在附录中列出源代码。
4. MD5码的生成与提交,论文电子版的提交都要用到客户端;
5. 论文正文中不得出现与赛题无关的任何内容和标记,特别是学校名称、学生姓名、指导教师姓名等。尤其要注意附录。
6. 所有参赛队必须在周日20:00前通过客户端生成参赛作品(论文正文及支撑材料)对应的MD5码; 周四18:00至周日20:00之间可由客户端多次上传MD5码。注意,只要对电子文件进行了打开保存操作(含自动保存),MD5码都将发生改变,需重新上传。周日20:00至22:00之间最多只允许上传1次。各参赛队务必在下周一 20:00前将与已上传MD5码对应的参赛论文与支撑材料电子文档通过客户端上传至竞赛管理系统,过时无效。
7. 源程序应作为附录放入参赛论文之后,并与论文正文一并编辑在同一个文件中;源程序除应作为附录放入参赛论文中之外,还应放入支撑材料中。
8. 必须在周日20:00前生成参赛作品最终的MD5码并上传,且生成最终的MD5码后不得对论文做任何改动,包括打开论文! 无论是上传全国组委会,还是提交至赛区的纸质论文,都必须是同一个版本,即生成最终MD5码所对应的版本论文!若不一致,则取消评奖资格!
9. 纸质版统一提交给王珂老师。
10. 纸质论文封面(承诺书)上填写学校名(每所学校名称要统一,不写院/系名)、学生名、指导教师名(如果有),以及选题号(A/B/C/D/E之一),所标题号必须与所做题目一致,否则论文作废。纸制打印论文封面上除了打印上面的信息外,还需要所有参赛学生和指导教师(如果有)确认参赛信息无误后,亲笔签名表示负责。
11. 比赛结束后,不得对作品再次进行任何写入操作(例如,修改作品内 容后保存文件,或打开作品未修改内容但对作品再次保存等)。否则 MD5 码将发 生变化导致无法上传参赛作品,导致参赛失败。
五、关于网课和思路
现在,数学建模的论坛、贴吧早已成为买卖思路、买卖代码、买卖论文的聚集地,按照详细程度不同明码标价,甚至公然发帖“接代”。许多数学建模相关的公众号,打着学习的幌子,实则是搜集并售卖解答思路,甚至在比赛期间公然出售完整论文。
绝大部分都是自媒体打广告的和引流的,而且分享的思路都不一定对,这些也就挣个流量而已。还有一部分的骗子,这部分可能就是搬运前面哪些打广告和引流的说法。
同时我认为参加这个比赛的意义,拿奖固然重要,但能从这个过程中学到的东西才是最重要的。过程大于结果。他们号称自己是专家,实际上就是通过提供所谓的思路解析来谋取暴利!我看过他们的思路,实际上有一些可取的地方,但是更多的问题体现了他们的急躁和无知!他们的思路很宽泛,让人读了云里雾里,不知所云。且他们这样做只考虑到了自己谋取利益没有想到全国这么多队伍都在用同一种思路的话会带来多严重的后果!
当然,知乎、B站和慕课上也有很多博主值得我们学习,他们的分享精神能够很好的帮助后来者系统的学习。
六、资料分享
每支队伍都需要一份全面的资料,才能事半功倍。多看看往年竞赛的论文,了解建模和论文的套路,才能取得好成绩。我整理了以下资料库,主要分为优秀论文和参考书籍合集、各类算法的代码实现合集、优秀论文和参考书籍合集、常用网站汇总。可点击下面百度网盘链接提取资料:
链接:https://pan.baidu.com/s/1pFgSCntlA8U7EBnHlY-hKg
提取码:xztx