最近看了热播剧“天才基本法”,其中的数学建模预测犯罪地点等等魔幻的操作在网上引起了一顿热议,或者说惹来了一些嘲讽。
我这种经历过“预测水流量”,“预测温度变化”等等数模题洗礼的数模人,我认为实现上述内容完全可能,只要数据够完备,模型够准确,数学建模真的可以为所欲为。我是像林朝夕一样的普通人,在2021.09全国大学生数学建模中靠着队友侥幸获得省级一等奖,本着给自己心爱的小说正名和我的纪念一下“数模受难一周年纪念日”,斗胆写下此文,跟大家聊聊数模比赛,分享一下自己的经验,让大家少走弯路,大佬天才们可以当玩笑看看就好,有什么不对欢迎指正。
现在还记得大二的那个忙碌暑假。本文的主题是数学建模,但是有几点前情铺垫,是一个从未接触数学建模的计算机专业大学生走上数模路的来龙去脉,一个平凡人走上数模之路的历程,大家可以直接跳过直奔大赛简介的主题。
期末考试结束(因为疫情,所以提前考试提前放假)
结束学院的小学期课程——做一个实习项目,我带领组员做了一个电商网页前后盾系统)
刚刚回家的我开始在家线上参加学院和百度旗下慧科教育校企合作的暑期训练营“线上大数据训练营(疫情原因,不能留校举办了),大数据训练营的内容是离线推荐服务(协同滤波算法这些入门算法),我们小组的选题结合我们前面学习的电商网页系统做了一个医美产品的商品推荐(爬取数据,算法执行,网页展示)
2021年9月9日(周四)18时至9月12日(周日)20时(三天三夜)
大赛时间:每年9月初,三天三夜
大赛含金量:中国国内数学建模含金量首屈一指的A类学科竞赛,对于数学专业的同学来说帮助很大。
全国大学生数学建模竞赛创办于1992年,每年一届,已成为全国高校规模最大的基础性学科竞赛,也是世界上规模最大的数学建模竞赛。2018年,来自全国34个省/市/区(包括香港、澳门和台湾)及美国和新加坡的1449所院校/校区、42128个队(本科38573队、专科3555队)、超过12万名大学生报名参加本项竞赛。
通常在每年的四月底至五月初(不同学校可能情况有出入,我们学校2月-3月就开始准备了),高校会组织一次校赛。学生组队参与,规定3人一组。在这次过程中,决出优胜团队。组织此次比赛,一方面是方便学校挑选优胜团队参加全国比赛,另一方面是让参赛者增强团队协助能力,让其熟悉全国比赛方式及规则。
暑期建议好好学习相关的数模知识,和日常的数学专业课程还是有比较大的区别的,计算机专业负责编程的同学也要学好matlab、python和lingo等工具。
核对报名信息!很关键,一定要时刻跟老师保持联系,了解最新的报名信息,确认信息无误。
发布题目后开始三天三夜的备战,建议提前准备好要睡觉用的枕头和被褥和一些食品干粮。
除非你很牛叉,不要选物理题。
我们当时选题一开始有想选A题物理题的,但是后来发现物理题没有什么有想法的模型,只是单纯的计算解题,而且万一编程无法得到答案就一定拿不了奖(这个蒙答案很难)。而且物理题一般都是很多牛逼的985院校的囊中之物(本人不知名二本院校,绍兴最好的大学,有兴趣的同学可以查查,也别发在评论区,我就不说出来给母校丢人了)。真的不建议选物理题。我们的指导老师说这几年我们学校他看到过很多的优秀学生,他自己都觉得已经足够优秀了,但是还是没有一只队伍选了物理题拿到省一以上的。
B题一般需要创新的一些思维,感觉去年好多人选B题,图一个简单,你想要脱颖而出就要和别人不同。
像大数据处理的C题,蒙答案可以方便一点。
三个人一起讨论选题和大致选了题目之后怎么做题,切入点和模型方法。
良好的分工合作。
建模论文与编程三位一体,互相影响。我们当时的分工是码字小能手小王负责论文,数学天才小吴负责建模,我负责编程,但其实我们之间互相有交叉,比如说小吴也编程,我也参与建模。
指定周密的计划,并有执行力
想要在这么短的时间内,以正常人的能力必须要抓紧时间,严格按照计划,否则可能写不完。(上哪找林朝夕和裴之这样的一串三顶级队友)
保持队友之间的沟通,发现遇到困难进度耽误不要自己硬抗
如果你的进度比预定的慢,很正常,但是一定要及时和队友沟通,让队友帮你,不要死倔,否则万一最后队友在等你第一题的答案用来解第二题,或是给第二题提供思路的时候你再告诉他你遇到了什么困难就会严重耽误进度。
一以贯之的努力,不得懈怠的人生
我看到过很多队伍,平时训练马虎,最后比赛随意。想要拿奖,不熬夜,不拼命,不努力是不存在的。(天才裴之们请忽视我这句话)人生嘛,哪有几次真正奋力拼搏的机会,错过多可惜。我很庆幸我的组员们都很努力,他们和我一起熬夜,我们的指导老师也很负责,也和我们一起熬夜,三个晚上我们可能只睡了10小时左右。我不是想吓退大家,只是陈述一个客观事实,如我所见,在我们这样的二本学校,拿好的奖项的队伍都不轻松。当你真正进入状态后,你会发现“与探索未知的美妙相比,世界上大部分糟糕的数模题目,都不再重要”
错别字,格式空格,代码样式美化(用我下面提供的代码美化网站)
最后提交作品,按照参赛流程,听从指导老师安排,md5码提交后一切尘埃落定。(这个一定要仔细,有好些队伍最后作品提交出了问题,导致前功尽弃)
在校的各种课程都值得我们认真以待,哪怕是浅尝辄止,也要但当涉猎。就像也许我们以后不会写web前端后端,但是日后我们的成果展示需要一个展现形式,(听说美赛数模的优胜奖做了一个特效视频演示模型,到了最高端的舞台,你的软实力也会是出彩点,是个互联网+都可以用上网页和APP),那么或是web网页或是小程序或是APP都是我们应该学会的。(因为不同的项目有不同的应用场景,假设淘宝只有网页端没有app端,可以避免多少“剁手”行为呢?)
其实我真的很内疚,一开始我只打算用python完成数模编程,后来才知道lingo真的好用,在比赛期间临时学一手lingo现学现用(此前老师和队友都提醒过我学lingo),其实我真的很对不起我的那2个队友,好在我临时学勉强够用,否则队伍真的可能败在我手上了。
一个现在很牛叉的程序员确实很牛叉,但是我们计算机专业的淘汰换代率太高了,“优化”“被毕业”的事情屡见不鲜,所以一个不断变得更加牛叉与时俱进的程序员才会成为一个一直很牛叉的程序员。大学竞赛中你不能保证哪一天你的组长会不会突然希望你做出一个你没怎么好好学过的安卓移动应用,涉猎的目的不是让你马上就有做出APP的能力,而是让你有快速自学的能力。很多时候安装环境,学习基础语法和语言的设计思路是最花时间的,这些都有过基础后直接看示例源码学习就都是一马平川的事情了。
敝帚自珍的现象在我们计算机领域也存在,就像著名的程序员双标语录——程序员最讨厌两件事,看别人的代码发现他不写注释,在写自己的代码的时候嫌麻烦不想写注释。或许我们能想出很多不同的思路解法,但是在关注自己手中的璀璨星光的时候,也保持谦卑,抬头看看头顶的漫天星辰。先贤的设计思路与规范必然有无数的血泪教训。比如说为什么“java 要在重写方法时加上@Overwrite”,没有这么多为什么,因为规范写法提高了代码的可读性,让后续读你的代码维护你的程序的接班人不会有提刀到你家砍人的冲动。无论你对于前辈们的做法有多不满,你有多么天才的想法,请你先学习效仿先辈们,在了解先辈们做法的基础上再试着另起炉灶,而不是上来就我最行,我最棒,然后面对“社死”的情况。
当时我的老师推荐的这本书,有一本是题目,一本是讲解,建议同时买两本。讲了很多的算法模型,我们没有都学会都能拿省一,都吃透了我觉得大家肯定能拿国奖。《数学建模算法与应用》由国防工业出版社于2011年8月出版,作者是司守奎、孙玺菁。
gitee的一个项目,可以方便地在写论文的时候编辑数学公式 hepeichun / CKeditor数学公式编辑器插件_图片版
一个在线测试工具的网页 https://hepeichun.gitee.io/kityformula/
有一说一,lingo在线性问题无敌,MATLAB强在有很多现成的代码可供参考和软件内置的算法工具箱,而python厉害在无敌的兼容性,你可以绘出更好看的图,调用更多的第三方库,我坚信python带来的发展,必将是日后建模的主流(个人观点),毕竟全世界程序员维护的开源项目,肯定比某个公司一个公司维护的内容发展进步更快,着重强调python的绘图,比MATLAB好看很多。
相关源码在我的gitee项目上
pandas_alive竞赛动图
相关学习使用的专栏在我的CSDN博客专栏
pandas_alive数据可视化
图片为了能上传经过压缩,你自己生成的效果应该更好一点!
图片为了能上传经过压缩,你自己生成的效果应该更好一点!
“一以贯之的努力,不得懈怠的人生”(天才基本法)
学习本身就是足够幸福的过程,享受知识的同时,不要畏惧挑战。而所谓的考试,本质是由整个社会制定的残酷淘汰标准,它可以要求很多人,但如果你不在意,那它也没那么重要。
一年之后的今天,再次回忆去年今日,虽然当时掉了一地的头发,一直很困,但是三个人为了那样一个目标而努力奋斗的岁月,永远是人生的一次宝贵的体验。
说真的,不要像张叔平一样这么极端,他一直把自己和林兆生这样的天才比较,当然会有落差,但其实,像我这样的普通人做不到全国一等这样的极端,拿一个省奖真的是可以办到的,挑战数学的勇攀高峰的热忱就足矣。