如何入门参与数学建模?


数学建模感想

纪念逝去的大学数学建模:两次校赛,两次国赛,两次美赛,一次电工杯。从大一下学期组队到现在,大三下学期,时间飞逝,我的大学建模生涯也告一段落。感谢建模路上帮助过我的学长和学姐们,滴水之恩当涌泉相报,写下这篇感想,希望可以给学弟学妹们一丝启发,也就完成我的想法了。拙劣的文笔,也不知道写些啥,按顺序随便写写吧。

我是怎么选择建模的:

大一上,第一次听到数学建模其实是大一上学期,not大一下学期。某次浏览网页偶然发现的,源于从小对数学,哲学以及历史的崇敬吧(虽然大学没敢选择其中任何一个专业,尤其是数学和哲学,怕太难了,学不好),我就坚定了学习数学建模的想法。通过翻阅学校发的学生手册还是神马的资料,发现我们学校有数学建模竞赛的。鉴于大一上啥数学知识都没有,也就没开始准备,把侧重点放在找队友上。
一次打乒乓球,认识了两位信电帅哥,以后也会一起打球。其中一位(M)很有学霸潜质,后来期末考试后,我打听了他的高数成绩,果然的杠杠滴,就试探性的问了下,要不要一起参加建模,嗯,成功!

第二位队友是在大一上学期认识的(向她请教了很多关于转专业的事情),但是是第二学期找她组队的。老样子,打听成绩,一打听吓一跳,是英语超好,微积分接近满分的女生F(鄙人第二学期转入了她的学院)。果断发送邀请,是否愿意一起组队,嗯,成功。

关于找队友:在信息不对称的情况下,优先考虑三人的专业搭配,比如或信电的小伙伴负责编程和理工科题建模,经济金融统计负责论文和统计建模,数学计算专业的全方位建模以及帮忙论文,个人感觉这样子比较好。由于建模粗略地可以分为建模,编程,论文,三块,整体上是一人负责一块的,但是绝对不能走极端,每个人就单单的负责一块,这样子的组合缺乏沟通和互动。应该要在培训中磨合,结合每个人的个人特点。主要负责哪几块,辅助哪几块。

接下来就到了第一次校赛了:第一次还是挺激动的,因为之前问了几个学长学姐说,建模都是要通宵的,于是我们也做好了通宵的准备。第一次拿到的题目是关于一个单位不同工作部门不同饮食习惯的人,健康水平的关系。
后来回顾过来,这其实是一个比较简单的统计分析题。但是想当年可没有这等觉悟,做题全靠office,对着题目想半天也不知道该怎么做。做的过程很痛苦,但是也很兴奋,校赛三等奖的结果证明了光有一股热情是不行的,需要恶补大量知识。

推荐新手入门书目:

数学模型(姜启源、谢金星)

数学建模方法与分析.(新西兰)Mark.M.Meerschaert.

第一本是姜老先生写的,很适合新手,在内容编排上也是国产风格,按模型知识点分类,一块一块讲,面面俱到。第二本是新西兰的,我是大二的时候看这本书的,只看了前面一部分。发现这本书挺适合新手,它是典型的外国教材风格,从一个模型例子开始,娓娓道来,跟你讲述数学建模的方方面面,其中反复强调的一个数学建模五步法,后来细细体会起来的确很有道理,看完大部分这本书的内容,就可以体会并应用这个方法了。(第一次校赛,就是因为五步法的第一步,都没有做到)。对了,还有老丁推荐的一本,美利坚合众国数学建模竞赛委员会主席Giordano写的A first course in mathematic modeling,有姜启源等翻译的中文版,but我没能在图书馆借到,所以没看过,大家有机会可以看看。

怎么建模

第一次国赛前的放假开始学校培训,我提前借了一大堆书,把卡都借满了。第一次国赛前的那次培训,对我而言,这段时期是收获最大的时期,比其他任何时间段都来得大。

这段时间内,我们三个人都很辛苦。白天培训要学习很多知识,完了只能休息半天,然后开始比赛,周而复始。 之前我的打算是,白天上课学习,晚上回去复习当天的内容,再看些其他东西。But 我太高估自己了,晚上基本是玩玩三国杀之类的小游戏放松,然后第二天再去上课。嗯,心态放好,身体最重要。^_^

通过这几次培训,基本上队伍形成了F专业写论文,我和M负责建模和编程。其中我偏重建模和全队调度。

大家在培训的时候,要慢慢养成五步建模法:

五步法说明:

 

第一步:提出问题.

大家可能会想,题目不是已经给出问题了吗? 是的,但是这里的提出问题是指:用数学语言去表达。首先,题目一定要通读若干遍,“看不懂,读题目;看不懂,读题目”,如此反复循环的同时查阅相关资料。这通常需要大量的工作,而且要根据题目的特点做一些假设。

看的差不多了,就开始用数学形式提出问题,当然,在这之前,先引用或者定义一些专业术语。 接下来进行符号说明,统一符号(这点很重要,三个人之间便于沟通,论文便于展现),并列出整个问题涉及的变量,包括恰当的单位,列出我们已知或者作出的假设(用数学语言描述,比如等式,不等式)。 做完这些准备工作后,就开始正式提出问题啦。用明确的数学语言写出这个问题的表达式,加上之前的准备工作,就构成了完整的问题。

这部分的内容反映到论文结构上,相当于前言,问题提出,模型建立部分。注意,刚开始建立的模型很挫没关系,我们随时可以返回来进行修改的。

第二步:选择建模方法.

在有了用数学语言表述的问题后,我们需要选择一个或者多个数学方法来获得解。 许多问题,尤其是运筹优化,微分方程的题目,一般都可以表述成一个已有有效的标准求解形式。这里可以通过查阅相关领域的文献,获得具体的方法。为什么不是查阅教材呢?基本上教材讲的都是基础的,针对特定问题的,教材上一般找不到现成的方法,但是教材依然是很重要的基础工具,有时候想不出思路,教材(比如姜启源那本)翻来翻去,会产生灵感,可以用什么模型。

第三步:推导模型的公式.

我们要把第二步的方法实现出来,也就是论文的模型建立部分。我们要对建立的问题进行变形,推导,转化为可以运行标准方法解答的形式。这部分通常是借鉴参考文献的过程,做一些修改,以适应本题的情况。

第四步:求解模型.

这里是编程的队友登场的时刻了。

统计模型:SPSS,Eviews,Stata ,都是菜单式操作,easy的。

数据分析:R,数据库SQL Server,IBM
DB2

微分方程:Maple,Mathematic,MATLAB

运筹规划:Matlab,Lingo

智能算法:Matlab,R

时间序列:统计模型中的那些软件,或者R,Matlab

图像处理:Matlab,C++

总结: Matlab是必须的,再来个SPSS,一般情况下够用了。

第五步:回答问题.

也就是论文的讨论部分。这部分是对你整篇论文成果的总结,一定要写的有深度。除此之外,通常还要写上一些灵敏度分析,如果是统计模型的话,要有模型检验。论文通常会需要画一些图表,可以使用Matlab、R等软件来画跟数据有关的图,使用Visio或者PPT画流程图之类的图。

 

关于比赛的一些个人体会

1、国赛和美赛是有区别的

国赛讲究实力,美赛讲究创新。 美赛不一定要多高级的方法,但是一定要有创意。而国赛,组委会往往是有一个模糊的“标准答案”在的,按部就班做下来就好了。

注意不要一次性就建立复杂模型了,老外看重的是你的思维,你的逻辑,不像国赛,看重的是你的建模编程实力,要使用各种高大上的方法。

拿到一个问题,可以先建立一个初等模型,讨论下结果;再逐渐放宽条件,把模型做的复杂一点。
即 Basic model -> Normal model -> Extended model的思路。这个思维在美赛中很好,这么做下来基本都能得金奖的,鄙人这次也是按照这样的流程,拿了个金奖。

2、文献为王

文献为王。建模的题目,基本上是某个教授的研究课题,凭我们本科生的水平,基本上做不到对题目的深刻理解。所以要多看文献。

看文献也有技巧:刚拿到题目,先查一下相关背景资料,了解题目是哪方面的。接下来看文献,找一下硕士论文,博士论文以及综述性质的文章,硕博论文一般都会详细介绍下整个课题的国内外研究情况,综述就更不用说了,它就是对大量原始研究论文的数据、资料和主要观点进行归纳整理、分析提炼而写成的论文。看完这些,就可以比较有深度地把握题目,也知道如果我们要进行创新的话,往哪方面走。

接下来,可以根据小组三人讨论的结果,有针对性的看一下有深度的文献,文献看得多了,就可以考虑开始创新了,像爱因斯坦那样开辟相对论等新领域的创新,是很有难度的,但是我们可以退而取其次,不是有句话叫做“他山之石,可以攻玉”吗?
我们要做的就是组合创新! 领域内组合创新,把一个学者的方法嫁接到另一个学者的模型上。 以及交叉领域创新,把把自然科学的知识用到社会科学上,或者用社会科学解释自然科学的结果等等。(这里就可以体现,跨专业建模队伍的先天优势了:不同专业对同一个问题的思维是不同的,可以擦出创意的火花)

PS:图书馆有买很多数据库,可以免费看论文。免费的话google学术是无敌的,国内文献貌似没有良好的分享平台,实在找不到论文也可以百度文库死马当活马医。

平时可以多注册一些网站,数学中国,校苑数模,matlab技术论坛,pudn程序员,研学论坛,stackoverflow等。上传些资料,攒积分要从娃娃抓起,不要等到比赛了看到好资料还“诶呀,积分不够”。

想法很重要。建模思维是一种很难学习到的东西,站在巨人的肩膀上,多看文献,负责建模的同学辛苦了。

3、掌握一点数据处理的技巧

建模的题目,A.B两道题。基本上是一题连续,一题离散;一题自然科学(理工科),另一题社会科学(经济管理)。这样的分布的,大家平常做题的时候就可以有所侧重,曾经有一支美帝的队伍,专攻离散题,貌似拿了连续两届的outstanding.

掌握一点数据处理的技巧是很有必要的。比如数据缺失值的处理,插值与拟合等。尤其是数据缺失值的处理,基本上A,B题都有可能涉及,建议熟练掌握。

4、关于编程水平

More generally,软件操作水平几乎决定了一个队伍的结果上限。MATLAB是必备的,必须要熟练掌握各种模型的实现。此外,SPSS(或者R)也是要掌握的。Mathematic和MATLAB的替代性很强,不掌握也没关系(仅在建模方面,mathematic 当然也是很强大的)。What’s more建模比赛举办这么多年,用到lingo的情况几乎很少了,也可以不学lingo. And 现在的题目动不动就要粒子群等智能算法,强烈建议大家至少熟练掌握一种智能算法.

MATLAB推荐书目

基础:

MATLAB揭秘 郑碧波 译 (本书讲的极其通俗易懂,适合无编程经验的)

精通matlab2011a 张志涌

提升:

数学建模与应用:司守奎 (囊括了各类建模的知识,还附有代码,很难得,工具书性质的)

Matlab智能算法30个案例分析 史峰,王辉等

《MATLAB统计分析与应用:40个案例分析》

数字图像处理(MATLAB版) 冈萨雷斯 (13国赛碎纸片复原居然涉及了图像处理,所以列在这里了.可看可不看,太专业化了)

书很多的.总之,要达到熟练运用matlab进行运筹优化,数据处理,微分方程的地步. 数理统计可以交给SPSS,R ,其中SPSS无脑操作上手快.

5、格式规范:

看国赛一等奖,美赛国内人得特等奖的论文,格式规范方面绝对很到位,大家可以参考。国外人的特等奖论文,大都不重视格式,人家的优势在于模型实力与创意、母语写作。所以在美赛格式规范方面,参考国内特奖的论文。

PS:有时间的队伍可以学习以下Latex,用Latex写出来的论文,比word不知道好了多少倍。Latex书目推荐:

LaTeX插图指南

一份不太简短的Latex介绍

LaTeX-表格的制作 汤银才

参考文献常见问题集

latex学习日记 Alpha Huang

论坛:Ctex BBS

结束语:

什么是数学的思维方式?观察客观世界的现象,抓住其主要特征,抽象出概念或者建立模型;进行探索,通过直觉判断或者归纳推理,类比推理以及联想等作出猜测;然后进行深入分析和逻辑推理以及计算,揭示事物的内在规律,从而使纷繁复杂的现象变得井然有序。这就是数学的思维方式。

-----------丘维声《抽象代数基础》前言

 

PS:转载到学校等教育机构,给学弟学妹们学习是可以的,注明作者跟来处。如果是出于任何商业目的,比如用作微信公众号文章、媒体稿件、软文文案、营销型微博账号,不允许,或者应该主动提出愿意为之付出的稿费。

 

前言  
    建模给我带来的是什么?
组建你的团队
    1、专业合适即可
    2、协作是关键
    3、建模、实现、写作
准备你的工具
    软件的准备
        1、论文的写作
        2、公式编辑器
        3、插图制作
        4、论文版本控制器
        5、团队资料笔记共享
        6、善用搜索引擎
    一些实用的网站
做好知识储备
    建模前推荐看那些书
    基本模型和算法
    基本的数据处理方法
    有必要了解的些学科知识

前言

写下这些文字,希望我在数学建模上的经验能帮助各位。2017年11月4日更新。

 

建模给我带来的是什么?

1、简历上的更新。

参加2016年国赛获得省一等奖,获得省一是比较容易的,可能相对国奖含金量不高。参加2016年参加美赛获得M奖,美赛的奖项有:Outstanding Winner(1%)、Finalist(1%)、Meritorous Winner(9%)、Honoralbe Mention(31)、Successful Participant(57%)。一般上只要提交了文章至少能获得成功参赛奖,国内美名其曰三等奖。在我看来参赛稍微用心获得H和M奖也是相对比较容易的,含金量最高的还是O奖。

2、个人技能的实际提升。

能够熟练的使用 Matlab、Python、Mathematica 编程解决实际问题,能够使用 Word、LaTex 写规范的论文,懂得团队之间的高效协作,可以使用 PPT、PS 等绘制所需的图片素材、信息检索能力大大提升等等。

3、认知态度的改变。

答主在参赛的时候就读的专业是计算数学,属于专业数学学科。大一大二在数院学习的感觉是不轻松,时常质疑学这些有什么用?例如高等代数,常微分方法,离散数学,偏微分方程等等,后来误打误撞参加了国赛和美赛才发现解决实际问题的基础就是这些平时看作生涩难懂的内容。建模竞赛其实也是一次学科的交叉竞赛,各个学科各有自己的优势,把自己的专业知识学好在建模时也就有了解决问题的基本能力。

组建你的团队

建模的第一步就是组建自己的团队。很多人在组队问题上有着一些观念上的偏执:

  • 专业要不同:理工管搭配
  • 男女比例协调
  • 明确分工:建模、编程、写作

就以上三点说说我自己的看法。

 

①. 专业合适即可

专业并非会对建模起到至关重要的作用,真正起作用的是作为建模人的你。自己对本专业知识的掌握程度,对高等数学、线性代数、微积分的学习是否用心了。其实在初等的建模中也并不会过多地涉及到这些内容,当然好的模型对这些知识的要求是必须的。踏踏实实、靠谱细心才会出成果。

 

②. 协作是关键

俗话说男女搭配干活不累,但是累不累不还得看你是否有个能干的队友吗?通力合作,有默契的队伍才会有动力在比赛中坚持下去。小组内互相认识、互相了解才会在最累的时候互相支持。一个队伍需要的是你认可的凝聚力,而不是有一个人专门端茶倒水。

 

③.建模、实现、写作

团队分工至关重要。我的理解团队分工应该是模型搭建、模型实现、论文写作这三个部分。建模是提供团队对问题的解决思路、方法;参与实现模型或者求解模型必须要求能熟练的通过各类软件对模型进行模拟、求解、检验;写作要求能对团队的前进方向有清晰的把握,通过准确的文字、图标对模型进行展示。

但是实际中的分工并不是界限分明,数学建模是一个团队合作的过程,分工固然重要但是明确的分工界限容易限制建模的进度,禁锢思路。我认为在建模中的分工一定要有交叉,建模的同学也需要把自己理解的通过文字、公式准确的表达给写作的同学,负责模型的同学实现部分也要对模型的实现的最终结果有较好的可视化功底。

每个人都应该具备基本的建模、模型实现、写作能力但是每个人的侧重点不同才是绝佳的组合。

准备你的工具
这部分主要谈谈使用哪些软件,包括编程工具、写作工具、绘图工具等,以及如何进行合作。

软件的准备

工欲善其事,必先利其器。软件列表参考如下:

  • - 编程工具(Matlab / Python / Mathematica )
  • - 统计建模(R / SPSS / Minitab)
  • - 论文写作(Word / LaTex)
  • - 公式编辑器(MathType)
  • - 插图制作(PowerPoint / PS)
  • - 流程图绘制(Visio)
  • - 版本控制器(SVN / Git)
  • - 团队资料笔记共享(有道云笔记)

给出的参考软件只是个人建议,如果你有你擅长的工具也请务必使用自己擅长的,在学习成本和收益之间衡量下,自己是不是有足够的精力接触、学习新的软件,是否能用好它。

 

1、论文的写作

Word可能我们再熟悉不过了,但可能这种熟悉只限于时常听闻、把Word当做记事本等,但是你真的能熟练使用它的基本功能吗?例如,插入图片的版式之间的区别、页眉页脚的设置、段落行间距段前断后的距离,分栏等等。在图、公式、表格较多的论文上,排版稍不留意就会造成的混乱。图片的嵌入方式、表格的样式、公式图表的引用等等都是比较容易忽视的问题。如果能够熟练掌握Word它就是你手上的排版利器。

现在有另一种选择,开始使用LaTex。把LaTex形容成一门“编程语言”我想是合适的,一行特定的字符对应着一个特定的样式,将样式进行组合就有了一个精美的模板。你要做的只是学习一些基本的语法,对模板进行填充就行了。Latex的一个缺点是不能实时预览,必须进行编译才能看到你的内容。
另外,国赛的模板[1]你可以从http://www.latexstudio.net/archives/4253下载,美赛的模板[2]http://www.ctan.org/pkg/mcmthesis下载.。

 

2、插图制作

选择 PowerPoint 制作插图的原因,一方面是PPT的强大自定义形状功能,或者说式是 Office 系列自带的,PPT只是比较便于管理。,另一方面是自己对 PPT 的使用也较为熟练。PPT 的技能提升可以去阅读下秋叶老师的三分钟教程,在百度阅读_正版电子书在线阅读中搜索关键字“秋叶PPT-三分钟教程”即可。

 

 

3、论文版本控制器

 

SVN是一个代码版本控制器,简单描述SVN到底能做什么:它可以将你每一次的修改内容,对差异进行统计,同时你也可以随时恢复到过去相应版本。如果遇到多人操作了同一文件,SVN会自动整合在一起,如果改到了某个部分,会提醒解决冲突的地方。

我们要做的是协作把论文写好,很多人包括我在内起初都是在制定好的模板上,每个人各自填充自己负责的部分最后再汇总,期间更有的是论文命名版本从版本1到N。或者还有同学只用一份论文文件,同时修改论文最多只能是一个人。这样的低效率你能忍吗?

我的建议是,在讨论论文如何编写的时候分清有几个部分、每个部分该写哪些内容、谁负责哪些部分,然后将每个部分独立成一个空白文档,这些文件组成了一个主分支提交到服务器上,小组成员再利用SVN对其“检出”到本地,每个人在修改完各自的部分后再“提交”到服务器,其他成员“更新”本地文件即可。具体要怎么操作SVN请到搜索引擎上搜索相关内容。

可能我以上所讲的东西你根本不能理解,没关系慢慢你就知道了:)

 

4、团队资料笔记共享

比较了几款笔记软件,如印象笔记、为知笔记、有道云笔。都使用了一段时间,印象笔记个人比较喜欢用它来归档纸质的文档,以及一些日常的笔记,至于团队合作上我还是比较喜欢使用有道云笔记。

这不是广告

有道云笔记的云协作可以给建模过程中的交流、文件共享带来极大的便利。但你可能也会说我可以用QQ群为什么要用这个软件。很重要的一点是有道云笔记有可视化的版本控制功能,之前用过QQ群的都知道,假如我上传了一个文件,下次再上传修改过的该文件你相信每个人都能保证用的是这个新文件吗?

另外有道云笔记还支持在线预览pdf、word、txt文件,创建共享笔记(支持markdown)。有个值得分享的经验,组长在进度规划时可以以共享笔记的方式建立TODO列表,每半天在笔记中发布每个人应该完成的任务或应该解决的部分以及最迟时间,当任务完成时修改此笔记,利用删除线划去该字段。时间的控制在建模比赛过程也是很重要的!

5、善用搜索引擎【等待完善】

搜索文献时建议直接使用 Google 搜索。下面给出几个当时比较常用的几个网站:

实用站点
【数模知识库】http://www.shumo.com/wiki/doku.php?id=start
【国赛官网】http://www.mcm.edu.cn/
【美赛官网】http://www.comap.com/
【美赛中文】http://www.mcmbooks.net/

论坛
【数学中国】http://www.madio.net/forum.php
【校苑数模】http://www.mathor.com/mcm.php
【数学建模与统计建模论坛】http://www.mathsccnu.com/forum.php
【MATLAB技术论坛】http://www.matlabsky.com/

源码
【源码搜搜】http://www.codesoso.net/
【Pudn】http://www.pudn.com/
【Wolfram】http://demonstrations.wolfram.com/index.html
【WolframAlpha】http://www.wolframalpha.com/

文献
【谷歌学术】https://scholar.google.com/
【百度学术】http://xueshu.baidu.com/
【中国知网】http://www.cnki.net/
【万方数据】http://www.wanfangdata.com.cn/
【维普网】http://www.cqvip.com/
【Web of Science】https://www.webofknowledge.com/
【PubMed】https://www.ncbi.nlm.nih.gov/pubmed/
【ScienceDirect】http://www.sciencedirect.com/

工具

【英文修改】1Checker - Proofreading, Grammar Check, Smart Text Enrichment | for FREE

【国家数据】http://data.stats.gov.cn/

【书籍下载】Science Library - 一个开放、自由的书籍分享站

【外文书籍】PDF Drive - Search and download PDF files for free.

做好知识储备

建模前推荐看那些书

如果一定要给关于建模的参考书做个分类的话我会分成两类:基础类、工具类

基础类书籍罗列了绝大部分基础数学模型,并有实际的问题分析建模求解;工具类主要是从数学软件(MATLAB等)的实践开始,给出问题的分析以及如何用软件求解模型,或者对模型该如何进行模拟。

下面就不做细致分类了直接贴出我曾经真真实实用过的书

《数学模型》- 姜启源
数学建模入门教材,学校建模培训时就主要以这本书为参考书。大致模型有哪些应该熟悉一下。

《数学建模竞赛入门与提高》- 周凯 , 宋军全, 邬学军
有模型有代码可操作行强

《MATLAB在数学建模中的应用》- 卓金武
MATLAB能力提高必看

《数学建模竞赛:获奖论文精选与点评》- 韩中庚
一定要多看多学习优秀的论文

《MATLAB智能算法30个案例分析》- 王小川, 史峰, 郁磊 
算法一定要学透千万不能一知半解就拿来用

《MATLAB神经网络43个案例分析》- 王小川, 史峰, 郁磊 
人工智能算法的一类,一定要参透思想再用这个很关键

《数学建模与数学实验》- 汪晓银 (编者), 周保平 (编者)
MATLAB入门学习推荐

另外更新我现在参考的几本最优化、机器学习、数据挖掘、计算方法的书:

《机器学习》 - 周志华

《统计学习方法》 - 李航

《最优化理论与方法》 - 袁亚湘

《最优化原理》 - 胡适耕

《凸优化(中译)》 - Stephen Boyd

《凸优化算法(英文)》 - Dimitri P.Bertsekas

《Introduction to Numerical Analysis(英文)》- J.Stoer,R.Bulirsch

《数据挖掘导论(中译)》 - Michael SteinBach

 

另外不再提供任何电子版的资源,数学建模不是一场资源搜罗竞赛,更坏者变相买卖资源,知乎上已经这样助长歪风邪气了,尊重版权,珍惜时间,现在就拿起一本书开始学习吧!

 

基本模型和算法

 

 

 赛前梳理的基本模型可以参考一下。

 

一、优化类

线性规划(运输问题、指派问题、对偶理论、灵敏度分析)
整数规划(分支定界、枚举试探、蒙特卡洛)
非线性规划(约束极值、无约束极值)
目标规划(单目标、多目标)
动态规划(动态、静态、线性动规、区域动规、树形动规、背包动规)
动态优化(变分法)
现代优化算法(贪婪算法、禁忌搜索、模拟退火、遗传算法、人工神经网络、蚁群算法、粒子群算法、人群搜索算法、人工免疫算法、集成算法、TSP问题、QAP问题、JSP问题)
模糊逼近算法

二、图论

最小生成树(prim算法、Kruskal算法)
最短路径(Dijkstra算法、Floyd-Warshall算法、Bellman-Ford算法、SPFA算法)
匹配问题(匈牙利算法)
Euler图和Hamilton图
网络流(最大流问题、最小费用最大流问题)

三&四、预测类&统计

GM(1,1)灰度预测
时间序列模型(确定性时间序列、平稳时间序列、移动平均、指数平滑、Winter方法、ARIMA模型)
回归(一元线性回归、多元线性回归MLR、非线性回归、多元逐步回归MSR、主元回归法PCR、部分最小二乘回归法PLSR)(重点)
Bayes统计预测
分类模型(逻辑回归、决策树、神经网络)
判别分析模型(距离判别、Fisher判别、Bayes判别)
参数估计(点估计、极大似然估计、Bayes估计)
假设检验(U-检验、T-检验、卡方检验、F-检验、最优性检验、分布拟合检验)
方差分析(单因素、多因素、相关性检验)
经验分布函数
正交试验
模糊数学(模糊分类、模糊决策)
随机森林

五、数据处理

图像处理
插值与拟合(Lagrange插值、Newton插值、Hermite插值、三次样条插值、线性最小二乘)
搜索算法(回溯、分治、排序、网格、穷举)
数值分析方法(方程组求解、矩阵运算、数值积分、逐次逼近法、牛顿迭代法)
模糊逼近
动态加权
ES
DWRR
序列分析
主成分分析
因子分析
聚类分析
灰色关联分析法
数据包络分析法(DEA)

六、评价类

层次分析法(AHP)
模糊综合评价
基于层次分析的模糊综合评价
动态加权综合评价
TEIZ理论

七、图形类(重点)
算法流程图
条形图
直方图
散点图
饼图
折线图
茎叶图
箱线图
P_P图
Q_Q图
Venn图
矢量图
误差分析图
概率分布图
5w1h分析法
漏斗模型
金字塔模型
鱼骨分析法
等高线曲面图
思维导图

八、模拟与仿真

蒙特卡洛
元胞自动机

九、方程(进阶)

微分方程(Malthus人口模型、Logistic模型、战争模型)
稳定状态模型(Volterra 模型)
常微分方程的解法(离散化、Euler方法、Runge—Kutta方法、线性多步法)
差分方程(蛛网模型、遗传模型)
偏微分方程数值解(定解问题、差分解法、有限元分析)

十、数据建模&机器学习方法(当前热点)
(注:此部分与数据处理算法有大量重叠)

云模型
Logistic回归
主成分分析
支持向量机(SVM)
K-均值(K-Means)
近邻法
朴素Bayes判别法

决策树方法
人工神经网络(BP、RBF、Hopfield、SOM)
正则化方法
kernel算法

十一、其他

排队论
博弈论
贮存伦
概率模型
马氏链模型
决策论
(单目标决策:不确定型决策、风险决策、效用函数、决策树、灵敏度分析)
(多目标决策:分层序列法、多目标线性规划、层次分析法)
系统工程建模(ISM解释模型、网络计划模型、系统评价、决策分析)
交叉验证方法(Holdout 验证、K-fold cross-validation、留一验证)

附:简单建模方法

比例关系
函数关系
几何模拟
类比分析
物理规律建模

注:各类别之间方法可能有交叉

 

放上一沓无敌好无敌全无敌清楚的资料(国赛和美赛通用),纯经管小组,无双修,零经验,美赛一等奖。

有网盘里的,数学中国的,我们爱数模的,还有买的网课,不过别忘了去图书馆借几本书(高票推荐的书)系统的看看建模,以我整理的顺序开始分享吧。

谨以此文纪念我的大学建模经历,并且在毕业前夕把我学到的、感悟到的都分享给大家,希望能给大家带去一点点帮助。

 

建模经历: 大学参加了两次国赛,两次美赛。两次国赛赛区一等奖,美赛一等奖。所以,对于打算入门和刚开始接触数学建模的同学来说我还是希望分享一些自己的体悟,希望对你们有用~。~

 

一. 关于建模竞赛、报名和参赛:

这里简要介绍几个比较主流的建模竞赛

(1)全国大学生数学建模竞赛:国赛一般指的是“高教社”杯数学建模竞赛

报名:报名时间可能每个大学不太一样,有的大学要先进行校赛预选,大约是在5-6月开始报名,报名请关注学校相关教务处网站、数学学院网站。报名费300元(有的学校会返还报名费来鼓励大家积极参与,获奖的话说不定学校还会给丰厚的奖金呢~~)。以团队报名,每个队伍不超过3人(所以也可以2人或者1人),每队须有一个指导教师。(关于组队的注意事项后面会详细讲到)

培训:有的学校会在暑假小学期组织建模培训,如果有的话,建议可以去听听~没有培训的话,就自己好好看看呗~

比赛时间:比赛一般在每年9月中上旬举行,比赛时间是从某个周五的上午8:00开始,为期三天三夜,截止到次周一上午8:00。(关于时间的分配我在后面也会详细讲讲)

比赛期间:参赛队伍可以在比赛期间利用图书、互联网资料帮助建模,有问题也可以请教老师,原则上不相互交流(原则上......)。本科组比赛有A,B两道题,需要选择其中一道题进行解答。PS:最后AB两题各个奖项数量相同,所以如果选A,B题的分别有7000,3000只队伍,国赛一等奖A,B题分别有20个名额,那么A题的获奖比例和B题是不同的,但是具体选做的人少的还是选容易的要自己斟酌~(关于换题在后面会讲讲)

比赛提交:提交纸质版给数学学院,并且把论文、数据、程序打包压缩拷贝给相关老师。

比赛答辩:初审进入国赛获奖名单的队伍需要答辩,每个省的初审进度可能不太一样,有的在9月底就会进行答辩,有的可能10月。答辩开始有一个3-5分钟的概要介绍,每个队伍选一个口齿伶俐的小伙伴上去讲就好。答辩的主要目的是验真,所以只要是自己做的应该没多大问题。答辩可能会问到关于模型、软件或者程序的问题。当然答辩也是可能挂掉的,挂掉了就降档。

这里附上一个mcm国赛链接:全国大学生数学建模竞赛www.mcm.edu.cn/(然而这个网址可能并没有很多信息...)

 

(2)美国大学生数学建模竞赛:

报名:美赛报名比国赛复杂一些...这里我先把美赛官网的网址附上,然后我们再慢慢来说

附上美国数模竞赛链接:COMAP: Mathematics Instructional Resources for Innovative Educators

一般在下半年可以开始报名(具体时间忘记了,大约11月左右报名),Contests→Register for Contest(这里需要用指导老师的邮箱来注册,所以需要提前联系老师,确定老师愿意指导,用老师的邮箱号注册,每位老师最多指导2只队伍)。美赛报名费100美元,需要用VISA卡或者MASTER卡支付,如果有队员有当然最好,如果没有就找万能的淘宝吧~

比赛时间:春节前后(这点很悲剧,也阻碍了很多人参赛,但是相信对于那些勇于放弃春节孜孜不倦投身于建模竞赛的同学们还是值得的),比赛时间四天四夜,早上9:00开始。

论文提交:在网上提交,并且寄送纸质版到美国。

没有大便(答辩)!

奖状发放:大概4月左右网上自己下载获奖证书(大陆同学),对,就一个PDF而已...

(3)全国统计建模竞赛:两年一次(单数年),比赛形式是在6月30日前提交论文

(4)电工杯:不熟,sorry

除此之外,还有什么深证杯、认证杯之类的......

 

二.建模竞赛的好处:

理工科的同学就把获奖当成打装备吧,你们懂得,等到快要保研、出国的时候简历上有那么几行还看得过眼的比赛获奖很有用,很有用,很有用(重要的事说三遍)。美赛对出国还是比较有用啦,毕竟还是国际比赛嘛,以前得特等奖的师兄那组去了剑桥大学和斯坦福...虽然特例不代表什么,但是有比没有好撒~

 

三. 组队

建模主要分为建模、编程、论文三个部分,但是要完全分开的你会发现人力资源闲置,所以推荐每位队员主攻其中两项左右。所以建议千万千万不要三个数学学院的同学凑一队!!!(如果三个啥子都会的数学大神凑一起也...没有...关系)。组队的时候大家容易发现每个队都想要至少一个数学学院的,然而通常并没有那么多数院的同学,而且数院的同学爱扎堆...有数学学院的同学是好的,但是其实数学学院的同学比其他学院并没有那么多优势...so,其实我自己觉得电气、软件、计算机的同学更好,建的了模,编的了程序,还写的了论文,卖的了萌...

 

四. 时间分配

常常有师弟师妹我建模要不要熬夜。当然,有不熬夜的也有取得了好成绩的,但是,大部分人需要熬夜。我想建议大家的是要适度地熬夜...比如前两天每天睡7-8个小时,第三天就熬一熬吧。关于时间分配,建模一般从周五早上8点开始,建议大家在中午之前确定好做A题还是B题,分别去看看哪个题更有思路一些,不要拍脑袋决定~选题很重要!选题很重要!选题很重要!一方面是获奖比例,我前面说过了;另一方面,没选好就要涉及到换题,我后面会再说说。吃完午饭最好就把题目确定下来,接下来下午和晚上把第一个问做出来,然后对第二个问开始着手解决。第二天,周六需要把第二问解决,第三问争取基本解决。第三天,完善,如果有第四问要解决第四问。至少在下午4点左右开始集中写论文,当然,其实从第一天解决第一问开始就要开始着手写论文,粘贴数据什么的,谁闲着谁就去写写论文。当然,时间分配要依据不同队伍的进度来,我只是给出一个参考而已~

 

五. 换题

很多同学会遇到“换题危机”,因为周五上午没有选好题,做到一半发现做不动了,就想换题。所以,可以换题,但是建议至少在周六上午之前,不然真的很难完成...

 

六. 论文模板

大家最好入手一本优秀论文集

比如:《数学建模优秀论文精选与点评(2005-2010)》【摘要 书评 试读】

《数学建模系列丛书:全国大学生数学建模竞赛赛题与优秀论文评析(2005年

看看别人的论文层次,我还是给出一个粗略的论文模板:

题目→摘要→模型假设→符号说明→模型的建立→模型的求解→模型评价→仿真测试→模型的推广→参考文献→附录

你可以按照问题一、问题二、问题三分别来写

PS:摘要最重要!摘要最重要!摘要最重要!(阅卷老师和答辩老师的大部分时间在看摘要,所以至少花2个小时左右写那短短的不起眼的摘要)模型评价很重要,你的Model好不好请用数据来说明,回带效果和预测效果都很重要。

 

七. 常用软件和参考书目

常用软件:Matlab, SPSS, Lingo, (SAS, R)

除了上面两本优秀论文外,我还推荐以下书籍:(精选了几本,其实还有很多不过估计应该看不完)

Matlab:用的最多,不解释

SPSS:统计里面用

Lingo:解规划问题,比较简单,就不推荐专门的书了

SAS, R: 统计编程

推荐书目:

《MATLAB 在数学建模中的应用(第2版)》【摘要 书评 试读】

《SPSS统计分析从基础到实践(第2版)(附光盘1张)》(罗应婷)【摘要 书评 试读】

《数学建模算法与应用(附光盘1张)/普通高等院校“十二五”规划教材》(司守奎,孙玺菁)【摘要 书评 试读】

我就不推荐姜启源那种书了...

 

---------------------------------------------分割线------------------------------------------------------------

接下来,我想重点写写数模中常用的算法,但是今天应该是写不完了,所以下次再继续写吧~

八. 算法

下面我开始PO算法,我在这里只介绍一些比较经典的建模算法和程序,也会在后面介绍一些智能算法,边写边总结边回顾也是极好的~

 

个人觉得其实没有必要很系统的学很多数学知识,这是时间和精力不允许的。很多优秀的论文,其高明之处并不是用了多少数学知识,而是思维比较全面、贴合实际、能解决问题或是有所创新。
数学知识

归结起来大体上有以下几类:
1)概率与数理统计,什么拟合了回归分析了
2)运筹学,什么线性规划了
3)微分方程;
其实正式比赛的题目有A题B题,貌似大致规律是一道以离散问题优化,另一道以连续问题微分方程为主。所以有时候自己准备的时候可以有侧重。
还有与计算机知识交叉的知识:计算机模拟或者说数值分析。
假如完全没有学过,或者只学过一点概率与数理统计,微分方程的知识其实也没关系,可以自学啊,能用最简单浅易的数学方法解决了别人用高深理论才能解决的才是最历害的嘛哈哈
计算机知识
其实数学建模还是在于模型,并不是ACM,要多牛X的编程能力。但是一些最基本的还是要回的,matlab,Mathematica等等。程序永远只是辅助你解题的。当然有计算机编程大牛是最好的。其实计算机数据处理,画图啊制表啊还是蛮重要的。
除了以上两种知识,个人觉得还有论文的写作能力和资料搜索能力。
写作能力
数学建模最后交的是论文,文章的书写有比较严格的格式。要清楚地表达自己的想法并不容易,有时一个问题没说清楚就又说另一个问题了。自己以前建模的老师也有参加阅卷的,他们发现格式不行啊,看起来表达不流畅就直接PASS掉了。还有啊那些阅卷老师也都是阅卷前临时培训,他们对题目的理解也很有可能不深的,所以你的论文能否表达清楚就很重要了!
PS:建模阅卷一篇文章一般有两个老师评分,假如同样一篇论文十分制评分,有的老师评9分,有的老师评2分。然后只好pia啦pia啦各种讨论……而且听去阅卷的老师说,这种情况常发生。
资料搜索能力
个人觉得,3个人3天或者4天要解决一个全新的数学建模问题,有时候真的只好现学现用,所以找资料非常重要,能参考前人的思路就参考呗。
关于学习资料
去数学建模论坛上找吧,个人觉得最重要的还是看优秀论文或者自己动手试着做做。

                                            

扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!

例如:想获得Python入门至精通学习资料,请回复关键词Python即可。

 

发布了101 篇原创文章 · 获赞 198 · 访问量 14万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览