其实 CSDN 上有很多优秀的博主写过数模经验分享。
希望能指指路,少走走弯路,多多帮一下数模初学者。也是蛮好一件事。
——写完整篇文章后补充的前记
✅
忆往昔峥嵘岁月稠
回忆起一年前(2022年1月15日),我还大二,自信满满像个愤青一样参加美赛数模
接着在去年的五一劳动节参加了 “五一数模联赛”(国赛热身吧算是)
到去年九月初的正式国赛
一路走来,想说的东西还是蛮多的。因为最近才考完期末考试,趁着还没回家使劲玩
就写一篇关于数模技术引导、干货满满和经验分享的数模总结小文
再结合通俗的小说笔风来贯穿,老少皆宜,雅俗共赏
本文主要分成 4 个模块:一些获奖情况、数模之三大战役、提炼萃取的建模思维、优质精选的技术干货。
注:[ 因为学校指导老师曾要求,老师发的资料不能发出来,所以发出来的都是笔者自己在网上找的开源资料 ]
Mathematical Modeling
● 下面两张是美赛数模的 M M M奖和五一联赛数模的一等奖:
● 因为国赛数模的国一奖状要下学期才能寄过来,所以用这个来凑一凑:
● 大二上寒假参加的美赛,大二下的期中参加的五一联赛,大二暑假参加的国赛。
● 专业:计算机科学与技术。成绩:绩点综测前10%。队内职责:数模小组长,主要负责编程,辅助建模。
▶ 全篇以第三人称叙述,主要人物:小王(me,队长,负责编程)、小陈(负责建模)、小吴(负责论文)、y老师(数模指导老师)
一切故事的起点都是从这里开始的,如果没记错,那是 2020 年的 12 月末,某一个寒风咧咧的上午,三个小白在群英荟萃的报名办公室,忐忑地写下了他们三个人的报名信息。小王让小陈把高中参加的 不管啥比赛都写上去,意在表示他们这里有位经验丰富的选手,可别错过喔。为什么要这样呢?因为那时候,学校 “原则上” 更支持的是大三的同学的参加,像他们这样三个大二小白参加的情况,极有可能被筛选时就被刷掉。万幸的是,这次美赛,扩招了…
时间再从 2020 年 12 月末往前推进小半个月,学校表白墙陆陆续续出现了数模找队友的小广告,很多大三的学长学姐,找人启事上面写满了他们的辉煌战绩。那时小王才刚读完大二上,啥大比赛都还没参加过,看的小王好生羡慕。也不知是谁借给他的胆儿,他通过学长学姐的推荐,毛遂自荐到 y 老师 QQ 上。
小王发的第一句话是:“老师您好,我是 2019 级计科xx班(目前大二)的王xx同学,我很想参加今年寒假的数学建模培训,希望能在这里面锻炼自己的学习能力。但是我们参加过国赛和美赛。”
y 老师问他:“现在找到队友了吗?”
小王说:“没有。”
y 老师问他:“怎么备战?”
小王回答:“要想爬上尽量高的山峰,就先爬上最近比较高的山峰。等视野开阔后,就能看到更高的山峰,依次攀爬,就能爬上最近较高的山峰。去网上查资料学习,就是在好的学习资料里学习到更好的,依次深入学习,就能备战好。(这样说其实很理想,现实很残酷 [\咧牙笑])”
…[小王手机一年前的聊天记录有些找不到了]
后来小王去找队友,首先找的是负责建模的队友。建模需要找数学思维好的同学。小王首先想到的是小陈,因为他记得在某次《数据结构》课上,在一次课间谈论 “找最邻近共同祖先” 的算法题时,他的逆向思维给小王留下了深刻印象。三下五除二,小王就把小陈拉进了小队了。OK,现在还差一位主要负责论文的同学。因为是参加美赛,所以英语得好。小王记得在英语课上有一个女生每次上课都很认真,很多同学上课都在玩手机神游,但她独自一人坐能自制好自己,听力、单词都写得好,小王就感觉她蛮好的,但没太熟,就加上QQ,凭借三寸不烂之舌把她拉近了队伍里。她说这不会哪儿不会,小王说他也是。
找他们俩,小王心里还有个深层次的原因。小王本身高考复读了一年,深有体会再来一年的难言。而他俩也是转专业过来的,小王就心想,能做出转专业这样的决定,并付出时间与精力,那一定是有意志力的,是对自己负责的。和这样的同学一起并肩作战多是一件美事啊。
…
等到寒假开始后,就开始培训。不同的学校不同的指导老师,应该有不同的培训方式和培训内容。但共有的属性一定包含:努力学会搜索外网资料、阅读别人的优秀论文、花 4 天时间实战一道道题。
确实,小王想,对于大多数一开始参加美赛的小组来说,查阅外网资料,特别是收集数据集,是相当棘手恼人的。往往是打开了一堆网页,没一个有用,然后继续点又点那些蓝色链接…
小王一开始时也是白纸一张,也不知道怎么收集数据集来当代码的 “输入”。后来,经过小组的团队协作,最终在决赛之前找到不少优质网站,其链接将会在后面的 “技术干货” 一栏分享出来。
其次就是阅读别人的优秀论文。就是虽然小王一组做不出来题、做不好题,但能看得懂别人的解题过程,善于模仿学习别人的论文写作框架、解题思路,在一开始也是很蛮好的。
期间小王也和小陈发生过矛盾,小王负责编程,小陈负责建模。当时好像在一起做 “全球变暖,英吉利那边的鲱鱼栖息地向北移动” 的题。他俩因为对模拟退火算法的理解不同,从一点点开始争执,一直争执了个多小时,谁都还是没有说服谁。最后小王懒得说了,就自己敲 matlab 代码。小陈也懒得解释了,自己准备用 java 复现一遍。
数模美赛培训期间,因为是疫情,所以他们三个都是在家的,小王在重庆,小陈和小吴在江苏,遥隔千里。他们之间有很多细细碎碎的争执,但就数上面这个最深刻。两个人一直赌气,自己干自己的,写论文的小吴同学当时也不知如何是好。三人的语音连接室,安静得空寂寂的。
那天的下午很漫长,小王最后觉得是自己做得不对,也觉得作为队长,不能这样,毕竟三个人还要一起并肩作战,遇到这些事也是在所难免的。于是就主动去说话,退一步认了错。小陈听了小王讲的一番话后,很认同,也说在建模编程上,难免有意见不同的地方,争执是少不了的,他说他以后也会注意,可能是他没有表述清楚引起了误会。小王也赞同。敞开话题聊了很久后,他俩和归于好。
从 2020 年 1 月 15 号开始正式培训,到 2021 年 1 月 5 号正式参赛,期间也就 20 天左右。小王觉得能参加就是一种历练,能学到东西就是挺好的。参加比赛获奖什么的不是最重要的,最重要的是进步与成长。所以,放平心态,尽力就好,毕竟三人都只是 20 天左右速成的小白。
比赛那天是早上 6:00 发的题目。不出所料,那个网站在第一时间 “停止了呼吸”,因为那一时间太多人去访问了…等到 20 分钟左右后,终于下载到了那 6 道题目,二话不说,按照原计划三个人先开始速读题目,进语音室,但不说话,各自分析题目,1 个多小时候后来讨论。
最终,他们三选了 E 题,重新优化食品系统。一开始小王负责搭建整个模型框架,然后小陈同学负责逐步深入建模。小吴开始把论文模子写起来。
一开始配合都挺好的,感觉挺顺利的,查资料也很顺手,一开始就锁定了 TOPSIS 法是核心,反馈模型是主框架,第一晚他们三没有熬夜。第二天一大早就起来开始干,当时三人的共同想法就是,在美赛期间学了啥用过啥,就拿出来试试,适合的话就用起来。什么灰色关联、GM(1,1)灰色预测、变异系数、什么什么基尼系数、多元拟合等等,能用上的都凑进去了,真的。
第三天晚上,小王和小陈在 “拼凑” 什么拟合函数的时候,卡住了。记不得卡住什么了,反正当时小王和小陈都感觉好像出大问题了,好像有一步走错了,然后又在错误的方法走了很远。有点灰心丧气,但是呢,得向前看嘛,也记不清怎么凑合过去的…
最后一个晚上(第二天 7 点之前必须交),也就是美赛第 4 个晚上,哇塞。小王一辈子都忘不掉,一个字来形容 “淦”。论文的最终版出了一版又一版,小王和小陈一起帮小吴完善论文…小王人生中第一次完整的通宵献给了美赛数模。
早上交论文的时候,小王想,大多数小组和他们一样,都是很忐忑的。发出去的邮件(包含论文),发出去就发出去了,担心着到底送过去没有。虽然熬了一夜,依旧不是很困…还有就是,肯定大家都有这样的心态,不管怎样,经历了,也付出了,作品也做出来了,“自己的孩子” 始终要拿出去比一比嘛。
大概 4 月中旬,得到了美赛数模的成绩。当时小王是不敢看的,太激动和紧张了。最终还是小吴猛啊,一看到成绩后,赶紧在他们的小群里发消息,“M 奖!!!”,啥?M 奖?小王还没反应过来,M 奖是什么个水平?他都没了解过,就像考完高考后,他也不去对答案,等出来后才去管。哦!M 奖,哇!那个晚上三个人差不多心里美着睡不着吧!
2021 年 5 月 1 日参加的,为时 3 天。这算是正式国赛之前的一次 “小国赛” 吧。可以练练手,再次熟悉熟悉一下数模。在比赛前,他们三也没准备什么,小王安排三人各自在网上找一篇国一的论文来学习学习,比赛前的周末开会讨论讨论就可以了。小王当时学习的是 2015年 B 题——“互联网+” 时代的出租车资源配置。做了很多笔记,开会讨论的时候也讲了很久。刚好我们参加比赛的时候选的也是一道关于 “图论” 的题(消防队救援),和小王分析的这道很相像。所以小王编程的时候还是比较顺手吧。也没熬夜,就是在规定的时间内,三个人在五一劳动节达到约定好的教室,背上电脑,带上电源,一起干一整天,连续三天就完事了。
国赛才是真正的重头戏。
“全国大学生数学建模竞赛” 是数模界的老大哥,经历过前两次比赛后,小王等三人胸有成竹。整个暑假两个月,为了自己督促自己,心无旁骛,小王选择了留校。
暑假的学校很热,每次早上 8 点走在朝向空教室的路上,都是很热的。如果说美赛的培训强度是 6 颗星,那么国赛就是 10 颗星。小王本以为他们三个有了前两次数模的经历,应该培训过程顺手吧?结果要吃的苦还是好多好多呀。
主要说说小王吧,因为只有他最了解了。他一开始参加培训的时候,就在思考怎样去参加最终的决赛。他想,美赛更注重的是创新,国赛更注重的是数学的自严谨思维吧,他打算做一定积累,于是开始尝试写博客,现在还记得,第一篇写的是灰色关联,因为他们三培训第一题是 “葡萄酒评价问题”。
小王的编程水平,自认为一般般吧,还记得,有一次 y 老师让在群里发做某道题的进度(已经过了一天)。小王看见其他小组都是 “建模第二/三问,编程第二问,论文x页”,而小王还在编程第一问。但实话实说嘛,这不丢人,就发了。然后 y 老师就来找小王了,说他咋编的这么慢,小王说:“我脑子笨,学习新的这个 Lingo 语言需要一点时间。”然后老师鼓励鼓励小王就走了。小王没有说实话,因为小王怕老师不同意他在培训期间这么做,那就是,其实,当前白天大部分时间小王都在写 “主成分分析” 那篇博客,深入总结 PCA 的原理和用法。
小王也是一个 “不太听老师话” 的同学。y 老师说三个人一起找个教室来听他讲题。小陈和小吴都坐在凳子上认真听,小王就躺着几根板凳上,iPad 舵在课桌上,躺着听。他一直有一种思维:老师一般只能交给我们翻来覆去的东西,想要青出于蓝胜于蓝,那就需要独自探索,用好互联网这个东西。当然啦,y 老师很负责的,讲得东西都是很有用的,主干路线还是要沿着 y 老师制定的这条。但老师教不了东西,需要我们自己去探索和总结。小王在培训期间,相对比较喜欢的事情就是去分析别人的优秀论文,特别是 “高教杯论文”,尤其是在做了同样的题后,再去看那些优质题解,真的收获满满。总能学到闪光的东西。
在培训期间也不只有培训,他们三人在做完一道题后,也会一起去食堂吃饭,聊聊当时的东京奥运会。前面 7 月份的进展感觉都还不错。但是到了后半阶段,8 月份的培训时,做的题目渐渐变难了。小王当时还要挤出时间写更好的博客,大创也需要弄。(ps:而且还因为兴趣爱好,学了一周的PR…)每天都是 12 点后睡觉。所以压力蛮大的,导致在后期的合作中,渐渐因为一些细碎的模型问题上和小陈起争论。
印象最深刻的一次有一个晚上,他们三在教室做 2018 年 A 题——高温作业专业服装设计。因为编程出了很多意想不到 Bug,心情很浮躁。前面也因为小王持 “多元拟合的观点解决第二问”,而小陈持 “泰勒多项式展开拟合的观点解决第二问”,双方也是谁都说服不了谁,两边都说得通。因为汲取过美赛数模的教训,所以就保留意见,保留小陈的建模观点,但实施小王的模型,因为小王这边这样做 方便编程,而且小王也就此在之后补充了 PSO 粒子群算法来进行承接。
慢慢地到了后面,小陈可能因为心里觉得他的观点没有错,而小王却 “强行” 执行他的想法,只因为只有他在编程。而小王的态度也不太好…慢慢地,教室的气氛变得很紧张…
记得很长时间,三个人都没有说话。小王在用 matlab 敲粒子群算法,小陈也在用 java 敲它。最后,他先敲出来了。小王就很不服气,更不啃声了,就一直敲啊敲,调试啊调试…不知道是因为那句话,小王一听就很冲动,站了起来,反说了一句话给小陈。当时小吴被小陈叫过去,讲模型。小吴觉得小陈弄的挺好的,而小王还这么严肃,这么凶。但是她还是心平气和地叫小王过来看小陈写的代码。小王站在小教室最后一排,看着他俩站在一边,因为最近压力大,又编了这么久的程,情绪没把握好,就大声宣泄了出来。但最终还是过去看了看小陈的成果…
那天晚上回去后,小王一面在生气,一面也在悔恨自己对队友发脾气。但是好像又不想放下面子,事情又多又熬夜,y 老师每天也在催进度。小王那段时间真的感觉心好累。好想回家,去走走家乡的滨江路,吹吹晚风…
最后,经过时间的沉淀,小王最终还是鼓起勇气,邀请了小陈在操场上见一面。他俩一起坐在木梯子上,望着空荡荡的操场,时而看向天上稀疏的星星。那一晚,小王和小陈聊了很多,聊初中、聊高中、聊各自的理想、聊这个世界…原来啊,我俩都是这么努力上进的同学啊,为什么要吵架,闹不开心呢?那晚,小王郑重地和小陈对上次那件事道了歉,并一起沟通交流后面遇到类似的问题时的解决方法。
经过那个晚上后,之后他俩真的,凝聚力高了好多,互相合作时都好了好多。建模同学多一点对编程的友好,在讲解时多一点解释。编程同学多一点对建模的理解,又不对的地方也不会当场极力反驳,而是放缓言辞,好好沟通。
他们三人磨合得越来越好,小王也在其中学到了很多关于人性的东西。数模不只是 “建模+编程+论文”,还有很多能改变一个人的东西。
当了最后的比赛时( 2021 年 9 月 9 日 18:00 – 9 月 12 日 20:00,三天时间),小王和小陈也配合得很好。熬了三天夜,困了就简单在寝室客厅的座椅上躺一躺…小王最激动的是,第二天晚上和小陈一起讨论出来了 “x 和 y 轴自旋转拟合模型”。当时小王讨论完就去洗澡了,那次热水澡是小王活 20 多年来最爽的一次,哼着动感的调儿洗完嘞 ~
最后,第三天晚上 7 点的时候,他俩坐在小王旁边,当小王点击那最后的 “提交” 按钮后,一切,终于结束了…
终于做完了,管它获不获奖,尽力了问心无愧就行。虽然也有幻想高教杯…但获不获奖就随缘吧。
● 笔者觉得,大道至简吧
● 关于整体流程:
首先,一定要自始至终清楚这道题它最终的目标。
其次,搞清楚这道题给了我们那些东西,限制了那些条件。
最后,结合我们已经学过的经典模型糅合进去,再在其基础上进行创新做出亮点。
● 关于题目的分析:
无论在分析什么样的问题时,都需要把题目中几个 “关键元件” 拧出来,再把每个 “关键元件” 的几个 “自由度” 找到,就好分析问题了。
● 关于美赛与国赛:
美赛更注重的是创新与设计,你把你的模型设计得能够自圆其说,有其道理,然后有创新点(就是那种它山之石可以攻玉的创新)就很棒。
然后对于国赛呢,国赛更注重数学思维与积累。
首先,第一点对于数学思维来说:我们需要培养一种数学的严谨与逻辑性,就需要我们多学习那些经典的数学模型,主要是学它们的思维,它们的切入点?它们的解决目标?解决方式?
第二点就是积累,这个也是很重要的,如果想做得好,那就要多去学习别人的优秀论文,看他们的引用,怎么引用的?引用了那些部分?模型框架的整体性怎么样?很多东西都是恍然顿悟的。
笔者在 “积累” 方面就下足了功夫,我把所有的经典模型都认真学了一遍,然后整理了很多代码,其实在比赛之前,我就积累了很多代码库。
所以在比赛的时候我都调用了很多自己写的代码。
● 首先,把笔者在暑假整理的几篇数学建模的文章,按照当时写作的时间顺序整理出来。
[2021/7/10]第一篇文章链接: 数学建模——灰色关联分析【工具:Excel】【全文5500字】.
[2021/7/11]第二篇文章链接: 数学建模——PCA主成分分析【工具:matlab】【全文7000字】.
[2021/7/17]第三篇文章链接: 数学建模——区分“拟合、插值、多元线性回归、逻辑回归、逐步回归、最小二乘法”等概念【概念篇】【全文5200字】.
[2021/7/21]第四篇文章链接: 数学建模——基于 最小二乘法 的 回归分析 →预测问题(工具:matlab,线性回归和非线性回归通用)【全文9000字】.
[2021/7/23]第五篇文章链接: 数学建模——matlab绘制 地图 散点图连线图 (运用plot、scatter、struct、xlsread等函数)【全文8000字】.
[2021/7/28]第六篇文章链接: 数学建模——01规划 / 线性规划 (工具:matlab + lingo,算法:Folyd).
[2021/8/6]第七篇文章链接: 数学建模——详解弗洛伊德(Folyd)算法【分别用 C/C++ 和 matlab 实现】.
[2021/8/6]第八篇文章链接: 数学建模——粒子群优化算法(PSO)【有详细样例 + 工具:matlab】(万字总结).
[2021/8/22]第九篇文章链接: 数学建模——多元线性回归 /多元线性拟合 (工具:matlab).
● 以上几篇都是经典模型所需要的,在培训的时候,大家可以按需所学,或作为参考。
● 接下来分享的文章链接,是小编自己整理收集的优质学习资料:
第十篇文章链接: 《MATLAB安装教程》.【MATLAB、Lingo、SPSS 最好的学习教程是看书】
第十一篇文章链接: 《熵权法(客观赋权法之一)》.
第十二篇文章链接: 《层次分析法(AHP)》.
第十三篇文章链接: 《变异系数法(客观赋权法之一)》.
第十四篇文章链接: 《模糊综合评价法》.
第十五篇文章链接: 《指数平滑法(Exponential Smoothing,ES)预测》.
第十六篇文章链接: 《详解模拟退火算法(含MATLAB代码)》.
第十七篇文章链接: 《时间序列分析教程——基本性质》.
第十八篇文章链接: 《matlab绘制中国/世界地图》.
第十九篇文章链接: 《Mathematica基础教程》.
第二十篇文章链接: 《算法导论–最小生成树(Kruskal和Prim算法)》.
● 接下来分享的视频链接,是小编自己整理收集的优质学习资料:
第一个视频链接: 《热传导方程的直观解释》.【做热力学方面的题时有用】
第二个视频链接: 《傅里叶变换、热传导方程与温室效应》.【做热力学方面的题时有用】
第三个视频链接: 《Mathematica入门教程》.【Mathematica是一个及其强大的数学工具】
第四个视频链接: 《快速学懂Lingo软件及其编程方法》.
● 接下来分享的网站,是小编在美赛国赛时用的比较多的,感觉比较好用的,精选的 6 个:
中国政府各部门数据集: http://www.gov.cn/shuju/bumenshuju/index.htm.
中国资源环境科学与数据中心: http://www.resdc.cn/Default.aspx.
COVID-19全球地图分布,需要: https://sedac.ciesin.columbia.edu/mapping/popest/covid-19/.【城市化、人口、年龄、性别,这个网站可以连接到 NASA (地球数据)】
美国所有数据集合网站(国家海洋和大气管理局): https://www.noaa.gov/.
最 NB 的环境数据集之第二,开源免费下载,无需: https://epi.yale.edu/?tdsourcetag=s_pcqq_aiomsg.【EPI生态环境(数据超全)】
最 NB 的查数据网站之第一,开源免费下载,无需: https://ourworldindata.org/#entries.【人口变化、健康、粮食与农业、能源与环境、创新与技术变革、贫困与经济发展、生活条件与社区和福利、人权与民主、暴力与战争、教育与知识】
● 接下来分享的百度云资料,是小编自己整理收集的(不含学校老师给的,全是在网上自找的):【资料多了也没用,小编就精选了 4 个,也是小编用的最多的几个】
百度云链接,密码 yzwt : https://pan.baidu.com/s/1nteUprb-Ks0mwchtV7MD2A .
如今笔者已经退役了,但每每回忆起这一段经历,还是挺难忘的。数模带给我的,不只是成绩,还有弥足珍贵的友谊,那种团队合作,和而不同的凝聚力,还有越来越强大的心理承受能力,真的。感觉国赛数模最后那三天都能拼过来,平均每天总共睡不到 5 小时,每次休息都是不到 2 小时的 “快速休息”。这都能挺过来,未来在学习之路上还怕什么呢?
说实话,一路走来,能获得这些奖,真的,还是挺感触的。有时真的感觉是上天在眷顾着我们小组,感觉其实做得一般般,我个人当时美赛完的期望就是别被 DQ,五一联赛完能得个二等奖就不错了,至于最后的国赛,我的期望就是能得个省一就很不错啦,真的,我觉得每一次的作品其实都还有很多提升空间。
这篇文章其实从国赛比完后就在策划怎么写了,但是大三上还是出乎意料的忙…挺过六级的路,再熬过期末魔鬼周的苦,终于放假了。写了三天,终于把这篇经验分享写完了…
⭐️ ⭐️
一支王同学
2022/01/15 11:41