【干货总结】数学建模美赛O奖经验贴

发表时间:2021-01-29 20:02作者:司镜233

数学建模美赛O奖经验分享 | 终结版

对建模美赛获奖的总结性经验分享,干货超多。全文分三个主要内容:

- 基本准备

- 建模方法

- 论文写作

- 心路历程自述

共十几个小模块。


有任何问题欢迎在评论区留言。


b站视频版本:https://www.bilibili.com/video/BV18V411t7d4



基本准备


一、建模介绍

【数学建模是什么】

简而言之,建立数学模型的过程称为数学建模。数学模型是采用数学语言描述的系统,用于自然科学、工程科学、社会科学,已经艺术、语言、哲学中。

建立出来的模型可以增进我们对世界的了解,提供了超出研究现象所已知范围的洞察力。


【数学建模基本流程】

1、分析问题

(1)根据已知信息的多寡,将问题分为:

内部规律比较清楚:白箱模型 【大学生建模比赛用】

知道模型的信息,不同变量之间的关系

对于未知参数,可以通过某种方式估算这些参数


其中的规律很少为人们所知:黑箱模型

神经网络:模型不透明

非线性系统识别NARMAX(带有异质输入的非线性自回归移动平均模型):模型透明

参数问题:任何非纯白箱模型,都有参数

参数的优化称为训练,神经网络、机器学习中常用

模型超参数的优化称为调整,通常会使用交叉验证


常规的的建模,参数通常由曲线拟合确定


(2)主观信息:基于直觉、经验或专家建议

将主观信息纳入模型,很有用

【理论依据:贝叶斯统计】

先验概率分布(可以是主观的),然后根据经验数据更新分布

比如,抛硬币正面朝上的概率


2、简化问题

- 所有的模型都是错的,但有些很有用

- 简单vs准确,简单是最可取的

增加复杂度可以增加真实性,但会使模型难以理解和分析,引起复杂的计算、数值不稳定等问题。

建模过程中,每个单独的部分都会在模型中引起一定量的方差,所以将模型近似到合理的大小,可以让模型更健壮。

比如牛顿的古典力学,大多数普通生活中粒子速度低于光速,可以满足大多数的情况


(1)判断哪些核心部件必须保留,哪些可以简化!!!!!

模型是将现实世界抽象

(2)假设非常有必要

实际的情况非常复杂,所有的模型都不是准确的,只是近似

族群遗传学模型,假设族群固定大小

计量遗传学模型,假设连续形状

(3)拟合

模型过于适合数据,就会失去了将其推广到一个极端,缺乏观察到新事件的能力


3、创建模型

(1)实际因素转化为变量

(2)分析变量的关系,用合理的数学式表达

(3)根据实际问题,选取合适的数学框架:算法,建模方法

(4)计算机模拟编程,求出结果


4、分析结果

计算结果解释实际问题,并分析结果的可靠性

技巧:信息可视化

5、模型评估

评估给定的模型,是否准确地描述了系统

是否适合实验测量、或其他经验数据


A:将数据,分为不相交的两个子集:训练数据、验证数据

训练数据用于估计模型参数,验证数据用于检验模型——交叉验证

B:定义度量,计算实际数据与预测数据之间的距离

(决策理论,经济模型中常用损失函数)

C:测试参数的有效性比较简单,测试模型的有效性会比较困难

微分方程模型,统计模型,非参数统计工具,最小假设


【书单和网站推荐】

1、What is a model? 两页的文章,简短,快速了解数学模型


2、https://plus.maths.org/content/os/issue44/package/index


将剑桥大学千年数学项目制作的在线数学杂志Plus Magazine所有关于数学建模的文章汇总在一起。有兴趣的可以在比赛后作为了解和深入学习

QQ20210129-211958@2x.png


3、Model in Science

https://plato.stanford.edu/entries/models-science/

斯坦福的一篇文章,阐述数学模型的哲学分析,对数学模型进行抽象表达,建议对数学建模有一定了解后,去深入学习的,属于研究领域了。


小技巧:如何将网页论文保存?

右键-打印-另存为pdf



4、随便找一本建模方法类书籍,看目录,了解大致的建模方法

比如:

QQ20210129-212006@2x.png



二、组队与分工

【建议组队方案】

1、至少来自两个不同大类的专业

比如两个数学系,一个计算机系


2、不要全找有建模经验的队友

三个有建模经验的组队,很容易套路建模,不会得到比较高的奖项,也不会有太多提升

没参加过的一定要找有经验的,有经验的要找没参加过但能力很强的


3、一定要有一个会编程的,最好是计算机系或有系统学习过相应课程的

有基础的编程手,接触一门新语言的学习能力会强很多,遇到不会的情况也能比较好的应对。


4、最好找可以一起线下比赛的(美赛要找本校的)


5、自律能力比较强,不要选择那种混比赛的。


6、男女混搭,促进和谐



【误区】

误区一:找英语系的

对事不对系,在建模比赛中,单纯的英语系的没有用。

英语系的本科生不会写英语论文,也不会建模,润色起到的作用很低,反而浪费去寻找一位得力队友的名额。


误区二:一定要找数学系的

不一定要找数学系,但一定要找有能力的。大多数的专业都学过数学,数学系的优势在于学过matlab,知道数学建模的一般路子。找一个有经验的其他系的也是ok的。

我参加比赛是,我是信管的,两个队友是土木和物理的,都学过数学、编程,所以有无数学系都ok。


【分工合作】

下列所有内容,最好有两个队友会,至少有一个队友会

matlab,sps,lingo,写论文,画图,做表,查找文献,看文献,处理数据,查找数据,翻墙,论文排版,latex,word,excel,英语

下列内容,最好有一个队友会

python,ps,编程画图

三、心态调整

先分享一下不靠谱的组队:

QQ20210129-212015@2x.png

【队友不靠谱】

遇到不靠谱的队友,努力提高自己的实力

【队友吵架】作为中间人,你要做和事佬

【自己和队友吵架】忍着不要吵架,如果你很生气,就换一种发泄方式

【有经验,想获得提升】已经参加过国赛、美赛,但取得的名次不是很好,想努力获得好的奖项

1、扩大知识面:看书、看论文、看演讲

2、提高知识的转化率:不太懂的去深入了解,已经懂的能得心应手的实践

3、不要模仿O奖论文,而是总结设计出自己的“套路”

4、美赛看中的是创新、实际解决问题的可行性



【刚接触建模,该如何入手】

1、实战体验建模

2、看本篇经验总结的其他部分

3、深入搞懂一个建模方法


比赛安排

四、时间

【报名和比赛时间】每年都是在过年前几天

1、2021年美赛时间点

报名截止时间:2021年2月5日,凌晨4:00

比赛开始时间:2021年2月5日,凌晨6:00

比赛截止时间:2021年2月9日,早上9:00


【赛前准备】

根据自己的实际情况,选择美赛的准备时间

1、提前半年,或提前一年

这种情况,不单纯是以比赛为目的,而是以学习、科研为目的的。要稳扎稳打,做好基本功

建议学习安排:

(1)看英文文献:不限制学科,也可以从我上面给的链接中找。

每一周或两周精度一篇论文,包括读懂论文、学会其中用到的方法,如果能复现就复现出来,这个过程中,可能会有很多奇妙的事情发生。

*看文献的同时,学习latex


(2)系统的学习建模方法


不建议听国内的一些讲建模方法的课程,枯燥无味没有实际的用处

可以自己找一本书的目录,或是我后面分享的建模方法,每一个都实际做一边,用代码写出来,解决实际问题。也可以自己做一些项目,也可以深入去学习当下比较或的AI算法。

这个过程中,你可能会找到自己的科研方向。


(3)编程手可以提高代码能力,刷leetcode,打acm....和建模好像没啥关系了哈哈哈

(4)数学系的可以提高数据的处理分析能力,提高对数字的敏感度。可以去学习数据挖掘相关的系统内容。

别忘了学好自己本专业学的各种数学。

(5)在比赛前的一个月,实践、总结,多注重写论文和排版。

其实如果你做了上述的内容,是否参加数学建模已经没什么必要了,直接做项目。如果想打比赛也ok,建模美赛注重创新,不要让之前学的固定住思维;也可以去打别的比赛,这个下面我会介绍一些。



2、提前三个月

如果时间比较充足,可以按照提前半年准备的方式去做。

如果时间不是那么充足,就:

(1)精度五篇英文论文,同时提高一下英文水平

(2)深入搞懂五个建模方法

(3)matlab

(4)latex

然后按照下面提前1个月的内容补充。


3、提前1个月

如果你要想拿奖,就要抓紧学习了,每天不要低于10h

(1)看比赛经验贴、历年赛题和优秀论文

(2)正式比赛前准备两次模拟实战,所以实际上你只有半个月的时间准备

(3)知道基本的建模方法, 并知道他们是做什么用的,深入搞懂两个复杂的建模方法

(4)设计自己的latex模板,写论文、排版等问题;如果实在没时间就用word

(5)excel,python,spss等数据处理要会一个

(6)编程手,matlab,lingo,python,C/C++等建模语言,至少学会一个,学到可以建模的程度。


4、裸赛——如何毫无准备的比赛

(1)在历年O奖论文中选出一个建模方法

(2)在赛题中选择一个可以用这个方法的题

(3)像你期末考政治大题的状态一样,按照比赛要求完成论文

不抄袭的情况下,应该可以获得成功参赛


【比赛中的准备】

一共是四天四夜,比较理想的情况:

第一天:上午九点、十点左右确定选题,下午查找相关文献、数据等,晚上时对赛题有大致的建模思路,确实主要的Task采取什么方法

第二天:完成建模思路的设计,完成主要的任务Task,还有时间就写论文

第三天:一个人负责写主要任务的论文部分,其他队友解决其他问题

第四天:完成其他部分的论文,润色、修改、排版

*论文中需要的参考文献及时记录,需要制作的图表在建模中能做的就及时做了。


比赛中会发生很多情况:

1、因为各种原因换题:截止到第一天的下午三点,再后面的时间内就不要考虑换题了

2、数据长时间找不到,也爬取不到(不是自身数据查找能力的问题)

考虑转换思维,用一些方法巧妙的转换所需的数据类型或领域

3、没有思路,看文献也没有思路;遇到某个问题,想不通;遇到某个bug很长时间没解决掉:

出去冷静一下,或睡一觉,冥想一下,放松一下

4、除了最后一天晚上,三个人不要同一晚上熬夜

......


【比赛后】准备回家过年啦

1、选择一个时间,对自己所学的、比赛中经历的,做一次简单或详细的总结

2、以后想做项目或是科研的,可以继续深入学习,着手做其他的事情

.....



五、选题


【翻译】下面介绍了很多种翻译的方法,自己掌握一两种就好。翻译主要是帮助我们快速理解。如果是要做科研、写论文,建议学好英语。


超简单实用的方法

1、pdf--> word

选中pdf文件,然后在打开方式中选择word

如果文件比较大,时间会比较长

QQ20210129-212659@2x.png


如果转化后错误过多,可以采用其他格式转换的方法,比如

a、在线文件格式转换 https://smallpdf.com/

QQ20210129-212708@2x.png

b、win的一款格式转换工具:格式工厂

不止文档,还有音视频文件等

有很多格式转换,这里不过多的介绍。


2、转换后,用office自带的在线翻译功能

根据自己的需要,调整中译英,或是英译中

QQ20210129-212717@2x.png

可以选取一段话翻译(有快捷键,很方便,自学英语时也可以用),也可以选择翻译文档。

QQ20210129-212725@2x.png

【翻译网站】

1、谷歌:首推谷歌,翻译精度高,支持文档上传;但有的时候网络不稳定,翻译文档不保留原格式

2、彩云小译:需要注册一下,翻译精度一般,支持浏览器插件。(but谷歌浏览器自带谷歌翻译插件)

3、通天塔翻译:颜值比较高,文档翻译的结果比较好。


【翻译软件】

1、SCItranslate

看名字就值得,是SCI的。收费,可以去找破解版安装。

安装后,导入文档,点击全文翻译,ok

精度很高,就是比较乱。

也可以选中某个段落翻译。


2、有道翻译

主流功能都有,比较方便的是支持截屏翻译。

3、彩云小译:手机版翻译


【浏览器插件】

刚才提到的谷歌、彩云小译


【其他翻译比较】

QQ20210129-212748@2x.png


总体来看,推荐多译、沙拉查词

【题外话】

目前机器翻译,就谷歌翻译来说,已经开始翻译高级词句了。谷歌有强大的模型和运算,需要更多的语料,在谷歌翻译社区,专门提供让双语人士提升谷歌翻译的准确性。就是很多不同国家的人,通过在线翻译各种词句,考虑不同的词句在母语国家下的背景,提升翻译的准确性。

这里我也呼唤一下和平与发展,希望更多的小可爱去探索,为世界的机器翻译做一些贡献,其实也是很好玩的。


【回归正题——如何选题】

QQ20210129-212025@2x.png

1、在得到所有的赛题后,每道赛题花30-40min详细看,然后后分析思路

2、根据自己的特长、参赛目的、追求等,选择合适赛题

思路多的:会有把握和胜算 / 大多数人都会有思路,选的人会比较多

思路少的:选的人会少些,竞争力小 / 但选后做出来的人也少


??如果都没有思路怎么办?选择自己比较擅长的方面,确定一两个赛题,然后查找相关文献

??如果都有思路怎么办?或是有好几个都有思路怎么办?选择赛题中最复杂的、最难的


【如何读题】

1、探究出赛题的老师,是如何想的,从中找到建模的思路(解决问题)

就是解决问题的办法,题中会给很多提示。

2、提取出关键字

3、查找相关文献,扩展思路,以及当下解决这个问题的办法

4、整理出解决问题的思路(包括数据查找、方法的解决)



六、工具和语言


写在前面非常重要的话:

matlab,lingo,python等只是一个工具,我们常犯的错误是在不确定用什么方法前,先学工具。工具替代不了理论和方法。如果你的目的数学建模,或是数据分析,不妨先学习相关的基础知识。工具永远不是学习的重点,数学建模也不是目的,目的在于解决问题。


【Matlab】矩阵实验室,数学建模竞赛、科研、工程等,是一个综合性软件,有关科学数值计算、运筹优化、数据分析的,matlab都可以完成。但是在各个方面比不上专业软件。

【Lingo】运筹优化问题的专业软件。运筹优化问题,会拉开赛题的档次,Lingo是这方面的必备软件。

【SAS】统计类问题的最佳选择。

【SPSS】数据分析,入门简单。

【mathematica】适合数学系学生使用的软件,在一些问题上有比较好的优势。(我在台的数学系朋友,手机上人手一个mathematica,当做超级计算器使用,很方便)

【python】编程语言,对编程出身的童鞋很友好,简单易学,有各种数学库可以方便的用于数学建模和科研项目。

【R】相对python而言,上手难一些,但入门后也很简单。

* Python, R等,不是数学软件,而是一门编程语言,但目前比如python在科学计算领域占据了不小的疆土,因为它有大量开源的数学工具库。语言相比于软件的优势在于没有死角,可以解决各个方面的问题,因为编程语言拥有灵活的数据结构,如何使用是取决于写代码的人,而不是软件的开发者。


七、具体方法

QQ20210129-212033@2x.png


八、数据查找

【文献在哪里查找】

1、WebofScience(WOS)

2、谷歌学术、百度学术

3、维基百科

4、知网


【下载技巧】更多技巧可以自行探索


1、一般文章:

https://jingyan.baidu.com/article/154b46310cec1d28ca8f41af.html


2、中文文献、知网文章: 用校园网下载


没有校园网可以用浙江图书馆:https://zhuanlan.zhihu.com/p/82906773


3、也可以在搜索文献的地方下载

4、花钱下载

------------------------------


【常用公开数据】

1、kaggle:有很多公开免费的数据 https://www.kaggle.com/

为开发商和数据科学家提供托管数据库、举办机器学习竞赛、编写和分享代码的平台。

类似的竞赛网站都有数据,DataCastle,阿里天池,Datafountain

科研性非常高

2、国家数据库 https://data.stats.gov.cn/

3、Github-Awesome Public Datasets

https://github.com/awesomedata/awesome-public-datasets

一个Github项目维护了全球40多个国家涵盖科技、文化、农业、天气、经济等等领域的数据,当然他仅提供数据源的链接,不提供数据源。

4、和鲸:中国版kaggle

5、UCI:经典的机器学习、数据挖掘的数据集

6、CEIC:涵盖超过195个国家400多万个时间序列的数据源,最完整的一套超过128个国家的经济数据,能够精确查找GDP、CPI、进口、出口、外资直接投资、零售、销售以及国际利率等深度数据。

7、万得:被誉为中国的Bloomberg,在金融业有着全面的数据覆盖,金融数据的类目更新非常快,据说很受国内的商业分析者和投资人的亲睐。

8、搜数网:已加载到搜数网站的统计资料达到7,874本,涵盖1,761,009张统计表格和364,580,479个统计数据,汇集了中国资讯行自92年以来收集的44个行业所有统计和调查数据。

9、亚马逊:来自亚马逊的跨科学云数据平台,拥有免费且开源的数据库,包含化学、生物、经济等多个领域的数据集。


九、数据处理

QQ20210129-212045@2x.png

【为什么要对数据做处理】

1、确保数据的完整性、唯一性、权威性、合法性、一致性

2、让数据更适合做挖掘或展示

适合的维度,有效的信息,相关的数据


【基本步骤】数据清理--数据集成--数据规约--数据变换


*数据中,含有的类型错误、格式错误、存储错误等需要预先单独处理


1、数据清理

QQ20210129-212119@2x.png

2、数据集成

QQ20210129-212131@2x.png


(2)重复冗余的数据,需要去重

基本的思想是排序、合并,先排序,然后通过邻近记录是否相似来检测记录是否重复


3、数据规约

QQ20210129-212150@2x.png

4、数据变换

QQ20210129-212202@2x.png



【书籍推荐】

数据挖掘:概念与技术

http://media1.yunxuetang.com/yxt/LibraryFiles/scebit/Documents/201501/b48aae9843ae4503a638496bf93dfca9.pdf

论文写作

十、基本流程

【word和latex】选择哪个都一样,都是排版工具

熟练哪个用哪个。

【赛前准备】

1、研究一下历年优秀论文的论文样式

2、选择比较好看的论文作为自己的论文模板

3、做一些修改,使模板更好看,用word或latex存储好


【比赛时写论文流程】

1、写背景(在比赛第一天就可以写,一边查文献一边总结出这个问题或类似问题的背景,即目前的解决方案、他们的优缺点)

2、主要Task部分的方法、结果

3、所有Task部分的方法、结果

1和2步骤的同时,将建模中所制作的图表插入到论文中

4、写优缺点,写总结

5、写介绍、写summary

6、排版、润色、微调


【注意】

1、参赛队员不可以寻求除了同一队的队员以外任何人的帮助,以及与指导教师或其他任何人讨论问题。你们队员以外的任何人介入都是严格禁止的。这里包括(但不限于)用任何通信方式介入:如电子邮件、电话、电报、私聊软件、网络聊天、互动讨论群,以及其他的任何问答系统等。

2、赛题补充与更新

在整个竞赛期间,可能在MCM/ICM问题网页上发现有竞赛题的说明与更新。如果你们还有网站上未涵盖的问题,你们可以发送邮件到mcm@comap.com,邮件中一定要包含你们的参赛队号。

在竞赛期间,一定要注意查看网站上的更新还有自己的邮箱。如果有竞赛信息的任何更新(可能包括特定问题的更新),COMAP都将会更新这个网站。

3、论文必须用英文书写,采用一种不小于12P的易读字体,页面尺寸不大于A4幅面。解答必须包括完整的书面文本,以及必要的图形、图表,或其他的书面材料。但不接受非论文的支撑材料,例如计算机程序文件或工具软件文件等。

在解答论文每一页的页眉上必须显示正确的参赛队控制号和页码数。例如,在每一页上使用下面的页标题:

Team # 54321 Page 6 of 20

4、论文中不能包含任何形式的参赛队身份信息,如学生姓名、学校名称或地理区域等。如果要求你们提交一封信,一定不要在信上签写你们的真实名字。如果你们认为在信的最后需要有一个正规的结束语,我们建议使用:Sincerely, Team#54321.

5、要求每个参赛队提交一份自己的论文电子版(PDF格式或Word格式文件),发送邮件到solutions@comap.com。任何一个参赛队员或指导教师都可以发送邮件,但不要多次重复发送。

在邮件的主题行写:

COMAP 你们队的控制号

例如: COMAP 54321

邮件的附件名要用你们队的控制号命名

例如:54321.doc,或54321.pdf

6、一定要仔细检查你们的参赛队号,不能输错或改变任一位数字,否则将无法识别你们的论文。

7、参赛队的学生和指导教师的姓名,或学校名称不能出现在电子版论文的任何一页上。解答论文中不能包含除了参赛队控制号以外的任何与参赛队身份相关的信息。

8、COMAP只接受你们解答论文的一个PDF 文件或 Word文件。在你们的邮件中不能包括你们的控制页(Control Sheet)、计算程序、或工具软件,这些在评判过程中是没有用的。要求每封邮件只能包括一个参赛队的论文。你们队的摘要(summary)必须是论文文件的第一页,不能分为两个文件。

9、邮件的附件必须小于17MB!一定不要使用云附件或超大附件功能,例如Google Docs、QQ的超大附件和网易的超大附件等,否则COMAP将不能收到你们的附件文件。你们的邮件必须包含一个PDF文件或Word文件。

√ 邮件主题是正确的 (COMAP #控制号)。

√ 邮件附件 (一个文件) 名字是正确的(Team #控制号) ,而且已附加到邮件中。

√ 发送到的邮件地址是正确的 (solutions@comap.com)。

10、控制页/提交

每一个参赛队员必须在控制页上签上自己的名字,以表明他或她遵守了竞赛规则和要求。

将签了名的控制页(Control Sheet)发送邮件到COMAP:

在签名的控制页准备好之后,发送邮件到:forms@comap.com。在你的邮件主题行写:COMAP 你们的控制号,例如:COMAP 54321。COMAP只收受一个你们队控制页的PDF文件或照片图像文件。要求每封邮件只发送一个控制页。

(上述来自美赛官方内容)


【论文提交】

美赛官网的要求,我做了简单的机翻,比赛前,一定要多看两遍。

比赛前必看说明(官网机翻).pdf



十一、图表制作

【工具】

excel,ppt,python,matlab,R....


【原则】

1、简洁明了

2、符合规范

3、表明数据关系:构成、比较、趋势、分布、联系


【选择合适的图表种类】

https://cloud.tencent.com/developer/article/1052457



念念不忘,必有回响

发这篇文章的时候,我已初入社会了,但是写这篇文章却是在当年获奖后一个月内。这段时间整理网盘,就想了想,把这篇文章发出来吧。

其实还有一篇是是关于美赛的经验总结的,网络上也可以搜的到,写的有很多欠缺,本想再花时间补一补,却觉得残缺也蛮好的,证明我曾经幼稚的美好。

首发时间:2019-5-10

万物皆可量化 ——我的队友·赫赫

拿到O奖已经有一段时间了,回想年前的比赛,也是感慨良多。也有幸应学校师长和同学之邀,来写一点自己的薄见。

很早就听过数学建模比赛的大名了,本来在大三上学期参加国赛的,但由个中原因,错失了参加国赛的机会,幸好还有美赛,说实话我当时是不知道有美赛的,直到邻近寒假的时候,学校在宣传,我也就抱着尝试的心态报了名。


当时组队也是在群里吆喝一声,看看有没有还没组队的。整个训练以及比赛,是从1月21日开始,到2月13号结束。由于我在外学习,25号才能飞回学校,差了三四天的时间,总共就十几天的学习,这三四天相当于是六分之一的时间,还是很珍贵的。于是,很正常,我找了好几个人组队都没有成功。但幸好,我队友是“不太正常”的。


找好队友后,我也很诚恳的说明了我的情况,我没有什么基础,当时真的很小白,什么是建模都不知道,美赛是干什么的也一概不知。赫赫和玉总都是参加过国赛的大佬,他们给了我一些国赛的资料,说让我先看看。。。说实话,当时期末真的很忙,各种demo和报告,还有考试,根本没时间顾及。所以我只是保存在网盘里了,但根本没动过。其实我应该抽时间学一下的,现在想想,很对不起队友哈哈哈,我绝对是坑队友系列。


25号回到学校,先从北15宿舍搬到来北2宿舍,从早上七点左右开始,当时整个学校基本没什么人,天还下着大雪,我一个人独自捧着床被褥子,还有其他的用品,想想真的好佩服自己。其间还打碎了我的暖瓶,不得已在晚上天又重新买了一个。九点左右,我和队友第一次会晤!!玉总挺漂亮的,赫赫有点像小姑娘。。大家认识了一下,他们就给我介绍一些常识,学什么看什么,我也听话的看了看。但是当天真的看不下去,不知道怎么学怎么看,书上的算法和代码讲的真好,不过感觉和我没什么关系.....


建模普遍用的matlab,我之前在学运筹学是学过matlab的一些使用的,但很基础,我看建模书的时候,里面的代码我不是太习惯。我感觉matlab更像是一种工具,而不是语言,里面各种代码基本上是成型的,如果自己想编写,需要一些功底的。我耐下心来学习,两天左右的时间把书上的算法大致看了一下,只是看看原理,具体的实现我并没有做什么。看完之后,我也认清了现状,我可能无法从matlab中找到自己的路子,所以我在查阅资料,逛了论坛博客,再加上以前的了解,我开始学习python。


之前一直想学习python的,加入的AI实验室也是主打python语言。但我大一大二基本没怎么学习,也就知道有python这门语言,或许连拼写都有些困难哈哈哈。决定用python后,我就开始从头学习了。基础的语法和所有的语言差不多是一样的,有c类语言的基础,基础语法上我只是简单看了看,一些字典,正则化当时也只是简单了解,深入学习还是在比赛之后才开始学的。很感谢我大一大二的时候对C和C++学的还不是太差,对于python的基本语法也就能轻松应对了。


很快,由于时间紧迫,我们开始做了模拟题,拿过去两年的美赛题做测试,从开始选题,到最后写完论文。选题的时候,我们一般会更倾向于ICM的综合类题目,对于一些专业性比较强的题目,我们一般会选择避开。我和我的队友都不是数学类专业,所以ICM更适合我们。记得我们在做2016年的模拟题的时候,大家都是第一次做,看着英语题目,要先翻译,然后理解其中的意思,然后选择一道题目。


我们选完题后,需要找外国城市的各种数据。找数据,真的很困难,特别是对于第一次做的我们,完全没经验。语言是一个非常大的障碍,看不懂,无从下手。而且很多外国政府和城市的数据零散,不公开,我们不知道去哪里找稳定可靠的数据。光在数据上,我们花了一天多的时间。然后由于时间限制,我们只找了部分数据,然后进行做题分析,用的方法也不是很好,里面很多地方都没有考虑,但幸好我们完整的做了下来。


然后第二次模拟,我们做的2017年的模拟题。这次的数据,由于我学了python,需要的数据正好可以从网站上爬下来,所以很容易的得到了大量靠谱的数据。然后我们开始寻找方法,我们找了很多方法,想尽可能的把题目做的完善一些。但是很可惜,我们后劲不足,到最后的时候,我们把题做的差不多了,但不想写论文,也很松懈,整个效果给人感觉很差,没有解释清楚,也没有好好的排版,模型的检验也懒得动了。然后大家一起打打游戏,聊聊天,哈哈哈哈哈哈哈就过去了。

那段时间,想必我会记很久,甚至一辈子。


正式比赛就这么平淡的到了,我们没有太多的紧张,可能是被冻坏了脑子。说道这里,不得不吐槽一下我们的宿舍!!!天天下雪,外面天寒地冻的,宿舍的门窗还透风,我每天早上五点多就被冻醒了,晚上十二点多差不多才能睡着,但是最后几天由于太困了,基本上躺下一分钟入睡。还没有洗澡的地方,我都不知道我是怎么熬过来的。每天八点到晚上九点,基本上一直处于紧绷的状态,还好队友配合很默契,大家说说笑笑的也都过来了。


比赛的的第一天,当然是选题,我们一开始选的是E题,因为E题比较简单,我们也都有思路,每一个问我们都有底,直接开始写论文也差不多。然后我们要开始做E了,在找资料的时候,我们不由而同的想换题,不是遇到困难了,可能是觉得比较简单,我们出彩很困难。然后经过一些纠结和斗争,激烈的讨论,我们移情别恋了。最后我们选择了最繁杂的F题。


F题很开放,开放到不知道要怎么做,而且问题很多,一共八个任务,每一个任务有两三个小问,一共是十七八个小问题,还有政策函。三天的时间,把这些都做完,很有挑战,而且百分之六十的可能性完不成。再一次感谢我饿的队友,真的很好,大家移情别恋后就开始一心一意的查看各种隐私资料(F题是对隐私量化,给出定价模型)。


我们选用了很多方法, 因为它问的实在是太多了,主成分分析,机器学习,小世界网络,博弈论,精算模型,经济学理论......我们加入了很多考量的因素。


在前两天,我们进展很缓慢,甚至有的时候停滞不前,还好最后的时候我们每个人都很努力,冷冷清清,凄凄惨惨戚戚的把论文写完了。整个进程比别的队伍慢了将近一天的时间,我们当时做完也就是想保S争H。


比完赛后,我们各自回家了,也没有太多的焦急,直到前几天,获得O奖的消息从天边而来,不过没有看到七彩祥云。其实O奖的名单早就下来了,不过我们也没查,也没关注,因为感觉O奖跟我们没啥关系。当时知道的时候,还是别人告诉我的,震惊之余,细细想来,所谓念念不忘,必有回响就是这样吧。


没有太多的荣誉感,只是觉得这段时间的努力还是很值的。很感谢刘广臣老师的辛勤栽培,没有他给我们的各种支持和鼓励,我们也不可能有如此多的成长与收获。之前没有接触过老师,也不是很了解,但从我晚回来那么多天看,他是很宽容的,这份宽容给了我更多的成长空间。之后的练习,学习还有最后的比赛,我想他不是最累的,却是最操心的,担心着每一个队的进度。直到最后,由于我们做的实在是很着急,他没有时间细细的看一遍,我们也有些慌乱,但他稳住我们,我们才静下新来努力的将其收尾。


在得到奖后,我发过一个动态:

曾以为的遥不可及,是因为你不够努力。

路漫漫其修远兮.....

希望在未来的某一天,感谢如今努力的我。


现在,我再加一句给自己的话:浮生如草芥,我愿引天火。