一份失败的数学建模心得

所有博文已迁移至个人网站:https://www.ravenxrz.ink,请勿再留言评论

1.前言

今天是2018/09/06,好像又快到数学建模国赛的日子了。一直觉得自己应该写点东西,但又觉得自己还是不够资格,毕竟在数学建模上的建树不多甚至很差。但是还是想把自己的一些经验分享给即将参加国赛的学弟学妹吧。我想在此之前你已经看过很多国赛一等二等大佬们的经验分享,所以如果想换个口味,我这种建模loser的文章也可以看看,就当玩咯,反正也花不了多少时间。

不过成功的案例,我还是推荐一个帮助过我很多的学长的经验分享--我的零经验数模路

不想看多余的废话的,可以直接跳到--超多干货分享

2.我的数学建模经历

为什么我要参见数学建模竞赛?

因为这个竞赛是我所在学校获取保研资格的竞赛之一。虽然我承认数学建模的过程中的确能获得很多知识,不过不好意思,最初始的目的就是为了保送研究生。

我的角色:coder

2.1初遇数学建模

初次遇见数学建模竞赛是在大一下的举行的校数学建模竞赛,听说了这个比赛的重要程度(当然不是校赛就能保研,校赛只是用于选拔),加上收到当时所在协会的学姐的鼓励(啥也不会,只用Excel就得了个二等奖),所以和同室友马上就参加了。拿到题目后直接傻眼了,我记得当时是从”深圳垃圾处理“、”水能节源减排“和“生物医疗”的题目选择一道,不过当时确实什么都不会,首先就上贴吧啊,论坛啊之类的搜答案去了,结果也可想而之--全是卖论文的,关于“网上共享答案”这一点我会在之后给出我的一点点小建议。最后大一的校内比赛不了了之了。

收获:

  • 像个傻逼一样地体验了一把数学建模

2.2 再遇数学建模

2.2.1 学习阶段

转眼就到了大二下,为了不走大一的老路,从大约2017年4月中下旬开始,拿了一两本MATLAB和lingo的书每天呆在实验室啃。系统学习完MATLAB(现在,我不推荐学习lingo,因为有更好的替代品--yalmip,当然已经学习了的肯定是不错的,毕竟各有各的优点),就向国一学长借了两本数学建模的书籍正式刚模型。同时,和同实验室的一个朋友组好了队,一起学习数学建模,等着6月的校内选拔赛。

2.2.2 校内选拔

不久后,6月校内选拔赛开始了,虽然没能学习完两本书,但是一些基本模型是掌握了的。这次的题目有”钢结构优化“,”宜居城市评定“和”深圳垃圾处理”(垃圾处理真是热门。。。)。拿到题目后,稍微文献分析了一下,第一题和建筑物理有关,不大适合就干脆放弃了。第三题数据量没做过处理就没做了。锁定了最简单的第二题后,准备开干。

然而,这个时候,一个队友有事回家,另一个队友却说想打篮球晚点来。。。。其实当时心里真的是哔了dog的感觉,毕竟准备了挺长的时间而且也是很重要的一个比赛

虽然比赛时间为一周,但是这一周也要上课嘛。不过咬咬牙自己单干了一两天,差不多把文献资料整理了一下,分析了一些重要的文献。比赛结束的前一晚,请学长过来帮忙看了看,终于完成了第一份数学建模的论文。

大约两周后,成绩下来了,不过很遗憾的是,只得到了建模二等奖。

阶段分工:

  • 我负责编程:掌握MATLAB,lingo,会查阅一些简单资料,excel绘图,数据搜索
  • team member1: 掌握SPSS,会写部分论文,整体上进行建模,数据搜索,excel绘图
  • team member2: 论文编写,数据搜索,文献查看

阶段收获:

  • 系统地学习了MATLAB和Lingo
  • 掌握了一些基础的数学模型
  • 完成了第一份数学建模论文

2.3 数模培训集中营

2.3.1 背景

学校背景:

  • 数学建模一直都是我们学校重视的竞赛,前文也说到了这个比赛可保研,学生们也很积极。所以每年通过校赛选拔后的参赛队都会参加学校为期半个月的数模培训+3次模拟训练

我的情况:

  • 可能对二等奖的结果不满意吧,加上之前单干过一阵子所以心情不大好,就找了个年级第一的大佬,加入了他们队。

培训方式:

  • 半月培训:学校数理院的老师们会对学生们"全面洗脑“,传授大部分的数学模型,对优秀论文进行分析。(不过这个阶段真的是很枯燥,收获并不多,不如自己看书来得快)
  • 中途会放假很长一段时间,具体时间忘了,不过就我本人来说大约玩了个10天。这个阶段布置了第一套模拟题(当然,和队友们约定这个阶段不看题目,只管玩)

2.3.2 第一套模拟题

浪完了后,回到学校正式解决第一套题目,这次题目有:“能源相关的题目”,"交通分析",“快递派送”。因为受到学长论文的影响,很喜欢元胞自动机模型(学长论文中就是使用元胞自动机模型),这个模型很适合做交通类别的题目,所以选择了第二题,依葫芦画瓢的想搬过来用用,使用这个模型大约一下午+一晚上。晚上走的时候决定放弃了,在编程实现的时候,堵塞等待,红路灯时间设置,转向等问题不好实现,所以放弃了。

之后转向了VISSIM(交通仿真软件)学习,大约花了两到三天掌握了VISSIM的基本功能,队友们也将模型建立好了就等实现。不过,最后实现的效果并不好--有红绿灯反而使得交通更拥堵了。这样一来,所有工作全部废掉了,心情很是沮丧,和队友反复检验哪里有问题,到最后也没发现什么问题,因为不设置红绿灯时,汽车自己懂得避让然后转向。所以无奈,重新选题(这个时候距离第一次训练交卷大约还剩一个星期)。

之后选择了“快递派送”题目,这个题目做起来就很顺手了,一天半基本上就解决了所有问题。之后就是修改论文,对team member2写完的论文进行仔细推敲,反复修改,甚至是重写。因为特别想写好,所以这套题目花费了3-4天3个人同时写、修改论文。最后交卷并且去听了讨论会(每套题目,都会让完成组去分享)。

结果:

  • 我们的论文:老师觉得写得很不错,基本没有什么需要修改的地方,当然还有细节修改。(信心倍增,但是自己也明白这样写,国赛时间根本不够)
  • 别人的论文(因为是第一套题目,就没有去分享自己的论文写作,只听了听别人的):
    • “交通分析”:发现了一个队和我们之前的想法完全一致(因为查到了相同的论文),那么为什么别人做出来了,我们没做出来?最后发现是在设置VISSIM时,对方编程的同学关闭了车辆变道选项,大大降低了拥塞率。
    • “快递派送”:这道题目比较简单,不过有人居然做了“灵敏性分析”,这点我们组倒是没有想到。

收获:

  • 实际使用了自己学习过的一些模型
  • 掌握新软件VISSIM
  • 注意“灵敏性分析”(这一点还是很重要的,国赛里面也是一个分值点)
  • 提升团队默契度

2.3.3 第二套和第三套题目

第二套:

  • 第一套结束后,休息了一天就开始了第二套,这次又选择了一个“派送优化”类型的题目(这是一个错误的决定,即使我们学到了一些东西)。第二套题目是最累的一次训练,因为要解决的问题很多,但时间一共4天,最后我们完成的论文差不多有60页。

  • 对启发式算法进行了实际运用,学习了yalmip(强烈建议学习这个东西,优化类型的题目真的很好用)

  • 对比了别人做的方案,我们发现我们的模型还是相当不错的,本来想去分享的,但是还没走上台其他人就冲上去了。所以这次也没能分享。

第三套:

  • 照样地,第二套结束后,休息了一天又开始了第三套,选择了“银行收支分析”的一个题目,然而从未做过数据分析的我们显得特别地力不从心,对很多数据处理好后都不知道怎么分析,绘制好的图也不知道怎么去描述。最后这道题没有做完。(大家都很累了,信心都很受挫,甚至第三套结束后,我还提议去做第四套,不过做了半天后就放弃了,因为实在太累了)
  • 了解了我们不擅长数据处理(应该说除了优化类型题目,我们对其他领域都比较陌生)。
  • 听完了别人的分享,发现其实也不是很难,但是为什么我们当时就没想到呢。

2.3.4 训练结束

训练结束了,收获到很多东西,书上的内容基本都看完了,基本上每行代码都看了敲了,但是却没什么信心(这大概也在预兆了我们的失败)。结束训练后,大概也开学了,这期间对所有模型进行了总结归类,写论文的同学也对模板进行了重排版,购买好零食,电脑做完清理,等等xxx。反正这段时间就是在为国赛做好准备

2.4 国赛开始!

2017年的国赛是晚上8点开始的,拿到题目后,首先还是题目分析。不过我们组很简单了,收到第三套题目的影响,B题是一道数据处理类型的题目,所以1个多小时就pass了(反观隔壁组大约花了3-4个小时选题),就做起了A题“CT图像复原”。

过程:

  • 国赛的过程很难受,我们花了大约2天才解决第一题,全员除了第一天睡了大约6-7个小时,后来的三天每天睡眠都在3-4小时内,到了第三天下午我们才解决第2题的三分之二。到了第三天晚上(凌晨就是交卷的时候),虽然之前就觉得做不完了,但是这个时候我们更确定自己做不完了。队员们的情绪都很不好,我和年级第一的大佬发生了解题意见上的冲突,因为一些很杂碎的事情,我也对写论文的队员发了脾气(这里真的很对不起两位队员),最后,简单整理了第二题,第三题和第四题时终于还是去网络上搜查了一些答案,加入了一些讨论群(这个工作本应该在国赛前做的),然后加上自己的想法写在了论文里,写完时已经第二天的5点过了,赶在了6点前(交论文的最后时间)提交了。

一点小感悟:

  • 虽然我们花了两天才解决第一题,但是后来翻看论文时,发现我们做得实在是太细了,一些基本定理(一条固定斜率的直线,切椭圆时,过中点的弦长最长这种定理我们全部采用了理论和程序去证明,最后也花费了很多时间在作图上),所以我强烈的建议即将参赛的学弟学妹们别走我们的老路。

结果:

  • 不出意外的,啥也没有。(得到这样的结果时,当时真的挺难受的,不过我们确实很多地方没有做好)

不甘心的我,在一学期之后又继续组队参加了美赛,不过结果还是不好,我也就不废话了。下面就综合我个人的感受给大家一些建议吧:

3.一些小小的建议

  1. 先给队里的程序员:别去优化你的程序,不要想着去抽象、简化代码,这样没有任何意义,反而浪费了很多时间。

  2. 再给所有队员们:只要不是特别过分的错误,任何时候都别去责怪你的队员,题目困难,大家都是一样的,所以撸起袖子加油干吧!!!

  3. 在平常训练的时候,不要只做擅长的类型,既然是训练就应该涉猎广一点

  4. 团队的配合真的很重要,一个人的实力再强也没什么用,因为你的精力和时间都是有限的,合理的对全队分工才是真正重要的。一个团队应该选择一个有决定权力的队长来管理分工团队

  5. 放宽心态:别因为一时的错误,失败,贬低就没了自信,很多时候有自信才能做好这个工作,看我们团队和学长的团队这就是很大的区别(学长文章)。

  6. 适当加入一些网上的讨论群(虽然比赛大纲里说了不允许交流,但是私下交流其实蛮重要的,毕竟我们团队就是太过封闭,完全自己动手解决也是蛮痛苦的),但是一定不要依赖这个,而是在你们一筹莫展的时候有时候能找到一些突破点。

  7. 适当地进行放松,合理地时间规划:这个得根据你们平时训练时的节点进行安排,我觉得没有固定的时间节点,因为每个团队都是不一样的,每个人的精力也都是不一样的。但是尽量让团队中的三个人一起工作一起休息,这样能够更好的发挥效率,另外结合我的经历,我不鼓励体力战术,因为实在是太累了,效率也相当低下。

  8. 如果不是特别擅长精确类型的题目,尽量选择模糊类型题目,这样更容易获得好成绩(美赛经验,当然国赛也适合)。

差不多就这些,虽然大部分是鸡汤,但是其实这些所谓的鸡汤也真的很重要。最后,就来分享一大堆干货吧。

4.超多干货分享

搜索引擎的正确使用姿势:

第一,也是非常重要的前提,请一定要能

如果你还不能,要么去买VPN,要么也可以使用chrome的插件(chrome内核系的浏览器都可以用)--谷歌访问助手

链接:https://pan.baidu.com/s/1zsSkUgL-m7pqwXdmeb2ovA 密码:cqj5

现在我假设你已经能了,个人推荐使用搜索引擎的顺序:

Google>360搜索>百度 (微软的bing我不知道怎么样)

接下来就是非常重要的三条搜索指令:

  • filetype
  • intitle
  • site

上述三条搜索指令请一定一定要掌握,所有的指令都是command:content形式。如filetype:xls,以天气数据为例,可以得到下图

一份失败的数学建模心得_第1张图片

天气数据.png

相信你已经懂了这个指令的意义了,对于天气数据关键字,只搜索xls类型文件。这对于搜索论文(pdf类型文件),数据(xls,csv,txt等),非常有用。基本上是我用得最多的指令之一了。

在如intitle指令,这个指令的意思是,在我所搜索的条目中,标题一定要包含:后面的内容,如:

一份失败的数学建模心得_第2张图片

weather.png

可以看到,所有条目全部包含"weather"关键字。其实还有个指令-""(英文的双引号),把所要搜索的内容用""包含起来,所得到的结果是,所搜索的内容必须包含这个关键字,不限于内容还是标题。如下图:

一份失败的数学建模心得_第3张图片

RavenXr.png

可以看到,从搜索结果来看,只要内容包含“Raven XR”就会显示。

最后在介绍很重要的指令site。这条指令的意思是,所要搜索的内容只在site:后的网站中进行搜索。

如,只在CSDN中搜索数据结构:

一份失败的数学建模心得_第4张图片

site指令.png

所有的指令可以交叉使用,这就留给你自己去探讨了,如果你想学习其他有用的指令,也可去查一下哦,我认为最常用的3个就是上面这3个了。

综合的搜索引擎:http://search.chongbuluo.com/

文献管理工具

就我个人来说,还是推荐综合使用Zotero和EndNote两款文献管理工具:

  • Zotero的优点在于提供chrome插件,便于保存资料,也提供汉化版本,提供在线笔记,团队文献资料共享。Zotero的具体使用可参考:https://www.yangzhiping.com/tech/zotero1.html

  • EndNote的优点在于支持各种格式导出,内置文献标记,排序,文献重要程度排行标记等等。但是不支持汉化,而且略微卡顿。

如果你使用Word排版的话,两款工具都提供文献插入标号和自动更新,不过好像Zotero才支持国标吧,这点你可以自己去查实咯。

团队协作

如果你不想所有数据全丢在QQ群然后各种重命名的话,推荐坚果云,把相关资料共享,然后建立一个以自己名字为名的文件夹,然后大家都共享咯。

到底使用Word还是Latex排版?

虽然我个人超爱Latex的文字排版,但是我还是建议参加国赛的同学,在不熟练使用Latex的情况下,除了书写公式以外,还是老老实实用Word吧。

对于要使用Latex的同学,这里给个模板:

http://www.latexstudio.net/archives/10834.html

https://github.com/latexstudio/CUMCMThesis

参加美赛的同学,就更推荐Latex一点了,因为Latex对英文的支持是相当好的,排版出来的感觉也是很美的,只管写内容不关心排版不是很爽吗(反观没学习Latex之前,在论文写作完成后,排版总是会花费很长的时间,所以参加美赛的同学学习一下Latex还是不错的),美赛模板如下:

http://www.latexstudio.net/archives/9333.html

如果使用Latex排版,我想制表应该是所有使用Latex的人一个诟病,所以这里提供一个解决方案:

http://www.tablesgenerator.com/

如果你使用Word排版,那么书写公式一定让你头疼那么我劝你还是花费一天去学下Latex公式书写(其他的什么都别学)然后使用pandoc转成word公式(不要害怕,安装pandoc很简单,转化也只需要一条命令行),当然也可以使用MathType

代码搜索

Github当然是首推的:https://github.com/

联合开发网:http://www.pudn.com

codeproject:https://www.codeproject.com/

oh,还有个我自己整理的代码(不算搜索,但是常用的代码还是有的):https://github.com/zzbb1199/Mathematical-Modeling

一些数学建模的网站

http://nveyun.com/

http://www.mcm.dept.ccut.edu.cn/

http://www.mcm.edu.cn/

http://www.madio.net/forum.php

论文搜索

一个综合的网站:http://scholar.chongbuluo.com/

Google学术:https://scholar.google.co.jp/schhp?hl=zh-CN

知网:http://kns.cnki.net/kns/brief/default_result.aspx

维普:http://qikan.cqvip.com/

万方:http://www.wanfangdata.com.cn/index.html

有很多英文的站点,但是做数模嘛,其实好好用好上面的几个网站就够了。

数据搜索网站

国家统计局:http://www.stats.gov.cn/tjsj/ndsj/

国际数据:http://data.stats.gov.cn/index.htm

统计年鉴:http://www.yearbookchina.com/

数析网(很推荐):http://www.tjsql.com/index.aspx

搜数:http://www.soshoo.com/index.do

谷歌数据集:https://toolbox.google.com/datasetsearch

中国统计信息网:http://www.tjcn.org/

优易数据:https://www.youedata.com/

别的博主整理的:https://blog.csdn.net/juanjuan1314/article/details/50895793

查重

PaperFree:https://www.paperfree.cn/

大雅:http://dsa.dayainfo.com/

知网:http://www.cnki.cn/free.html

PaperYY:https://www.paperyy.com/

翻译

翻译狗:https://www.fanyigou.net/

谷歌:https://translate.google.cn/

百度:https://fanyi.baidu.com/?aldtype=16047#auto/zh

有道:http://fanyi.youdao.com/

虽然很多人喜欢谷歌,但是个人更喜欢百度。

对了,有道的客户端也是支持pdf翻译的,如图:

一份失败的数学建模心得_第5张图片

有道翻译.png

MATLAB工具箱

gatbx工具箱(遗传算法工具箱):https://download.csdn.net/download/qq_35109096/10554786

yalmip工具箱(优化求解器):https://download.csdn.net/download/qq_35109096/10554783 (记住一定要配置gurobi)

lpsolve工具箱(优化求解器):https://download.csdn.net/download/qq_35109096/10554779

libsvm工具箱(更好的SVM工具箱):https://download.csdn.net/download/qq_35109096/10554782

一些软件分享

MATLAB2014:链接:https://pan.baidu.com/s/1v--5kvgXWEg34MWjVEWFcg 密码:z722

SPSS:链接:https://pan.baidu.com/s/1Y8lztXXo5zGcPvCWfkJNKw 密码:xabq

一些视频教程

VISIO:链接:https://pan.baidu.com/s/1qm4TwNMxR2yW2UTolb5leA 密码:u8yt

VISSIM:链接:https://pan.baidu.com/s/1D7EbPFRWCoFYUKd_NlRjOg 密码:d70j

关于数据可视化

有些同学很想把图做得精美一点,ok,我理解,毕竟我也是这样过来的,但是我不推荐把过多的时间放在这上面。但是如果有时间,可以试试以下方式:

  1. Excel+合理配色(各类颜色:https://www.materialui.co/colors)
  2. 会js的同学使用:http://echarts.baidu.com/feature.html
  3. 会python的同学使用:http://pyecharts.org/#/

呼,或许有点多了,不过我觉得重要的还是加粗了。有需要的同学可以看看吧。那,,,就这样了呗。

最后,预祝所有学弟学妹们建模都能取得好成绩。

你可能感兴趣的:(一份失败的数学建模心得)