文档库 最新最全的文档下载
当前位置:文档库 › 建模七日谈

建模七日谈

家好,我是数学中国的版主magic2728,非常高兴能够借助数学中国这个平台分享一些自己的经验,帮助大家在国赛的最后备战中能够最后冲刺提高。分享一共分为七个部分,分七天写给大家,下面是第一个部分:参加全国大学生数学建模比赛前你需要积累哪些。
大家知道,数学模型是一个庞大的议题,关于它的各种资料、知识点也是浩如烟海,难免会让很多初学者不知所措,很多同学在准备过程中觉得无从下手,因为感觉到学过的东西比赛中好像都没有用,然而比赛的时候又没有自己的思路,很是苦恼,导致很多同学中途放弃,投入的时间精力石沉大海,能力却没有得到提高。这里,笔者根据自己十多次数学建模比赛的参赛经历和三年的知识积累,向大家分享一下,在比赛之前你应该学那些东西。
Step1基础知识:
1. 高等数学+线性代数:学好一切理工专业的数学基础课,建议在修对应课程时就尽量去了解里面的思想,而不是应付考试,有兴趣的同学可以看看数学分析和高等代数,里面包含的推导证明虽然不会直接用到,但会是建立模型和以后科研的有力工具;比如,你一旦懂了什么叫 ε-δ语言,从数量到向量、矩阵的本质是描述维度的扩增,你就能够理解这两个工具足以描述连续和离散的世界,而这个定量化描述过程就是数学建模!
2. 概率论与数理统计:如果说用前面两个工具来建模有一定的局限性,那么就在于她们大多数时候描述的是确定性的对象或过程,当出现了不确定事件时,就必须引入概率来描述这一过程,这就使得在本来因为无知而产生不确定性时,我们用概率工具最优的表征和最优地解决了这一问题,然后用统计学的方法对各种数据进行分析、建模,从中挖掘出一些有利的信息,把她们的机理弄清楚,这些数据分析的工作完成后,往往是模型推广的第一步,也是关键的一步。
参考教材方面,浙江大学出版的《概率论与数理统计》很经典,但是很多学校的授课安排里把后半本精华部分都没有作要求,其实后面讲到的方差分析、bootstrap取样方法、随机过程、马尔科夫链、等都是建模常用的方法,建议通读。
当然,若要把数据分析、从数据推动的角度建模的工作融会贯通,建议补充阅读计量经济学,推荐南开大学出版社的《计量经济学基础》,张晓峒主编。
Step2系统学习数学建模:
有了上面提到的基础性的数学知识,我们就可以开始阅读数学建模的专业书籍了,这部分是大家知识增长最快的一个阶段,也是对比赛成绩好坏影响最大的一个阶段。读完这些书,对各类模型,各种问题都能形成一种定量化的、模型化的思

维方式,大家只要肯花功夫,一定能够体会到解决问题时醍醐灌顶的快感,面对各种学科问题时能把握其本质的一览众山小的感觉。有了数学模型思维,对我们现在学的这些课本知识的认识都会有一个思想层次上的提升,更何况解决比赛中的那个小问题呢?
市场上的建模书籍鱼龙混杂,层次不一,互相抄袭的情况严重,随便选用的话容易造成误导,下面几本是比较经典的书籍,大家可以依据队员的时间安排、实力,依次、有序阅读。
1. 《数学模型》姜启源谢金星叶俊 高等教育出版社:基础+方法+思想
这本书作为初学者入门是再好不过了,介绍各种模型,各种方法都比较详细,建议每个人都通读然后相互对内讨论解决,至少保证每一章都至少有一个人看过,这样的话可以保证不会有知识盲区。但是整体上看一遍就够了,因为毕竟能直接用到比赛中的模型本书中还是不多,只是作为阅读后续书籍,她是一个很好的铺垫性的读物。
2. 《数学建模算法与程序》司守奎 国防工业出版社:指导操作的教程
这本书被奉为数学建模百科全书,目前学界在用的,成型的和发展中的方法、思想在本书中都有全面的介绍,而且很多实用的方法都附有源程序,如果不想做的很有创新性时,直接套用基本上就能解决所有的国赛和美赛的题目。
关于书籍方面,大家能够精读一两本,然后能够像工具书一样很轻松地翻阅而没有障碍,在比赛过程中是非常有利的,在精不在多,关键是要反复和理解透彻,达到信手拈来的程度,变成自己的东西。
书籍方面目前大家看这些对参加比赛已经足够了,剩下的任务就是在阅读论文和实战演练了,只有真刀真枪地进行过实际解决问题过程的尝试,你才能真正掌握用数学模型解决一个问题的真谛。在接下来的文章中,我会就怎样阅读数模论文和各种参考文献做出说明供同学们参考,请大家持续关注数学中国!



今天进入我们数学建模七日谈的第二天:怎样阅读数学建模教材

大家再学习数学建模这门课程或准备比赛的时候,往往都是从教材开始的,教材的系统性让我们能够很快,很深入地了解前人在数学模型方面已有的研究成果,并最快地吸收他们为自己所用,但是常常有很多同学抱怨说书太厚,介绍太过于简略而无法看懂,操作性不强等等,也不知道读哪本书更好,把每个模型应该掌握到哪个地步而没有方向,更害怕浪费了宝贵的时间。在此,笔者向大家隆重推荐建模教程学习的基本要领:三步阅读法。
对于任何一本教材,一份资料里介绍的一种数学模型的建立,或者一种算法,你都要问自己三个问题:
1.

这个模型叫什么名字?
2. 这个模型属于什么类型,能够解决具有哪类特征的问题?
3. 这个模型的具体操作步骤怎么实现?
当你能够学完教材上的这个模型,并能够查找相关资料,实例加以巩固,自己能够非常清晰地回答以上三个问题,那么,这个模型就完全印在你的脑子里而融会贯通了。
第一个问题是这个模型叫什么,就像我们C++里面学的对象名一样,或者是matlab里说的句柄,也是我们通过论文形式与评委进行沟通的重要手段,要知道这个模型的名字,它的相关产生背景,和它类似的模型,有什么区别等等,这种文字性的东西的记忆最终会体现在论文的字里行间,积累越多,论文就会写得越流畅。
第二个问题就不像第一个问题那样浮于模型表面了,而是在深入了解模型的建立思想、阅读了一定的例子之后,自己在脑海里可以形成一个印象,这个方法可以解决什么类型的问题?问题的特征是什么?有什么样的背景可以联想到这个方法?这样,等出现类似的问题时,你会更加容易地搜索到对应的方法。
第三个问题,也就是操作层面上的,这个模型可以用什么软件实现?参数怎么调?有没有现成的代码供参考?每一步的操作涵义是否清楚?当你明白了一个模型或者是算法的思想之后,软件操作和程序代码应该是像文思泉涌般跃然纸上才对,而且这个过程里会遇到很多意想不到的,纸上谈兵时看不到的困难,因为具体的操作要受你的系统环境、软件版本、时间限制等各种方面的现实考验,没有什么捷径,只有平时多练,多做,自然在临场你能最快地找到解决的办法。
用一个例子说明一下:
姜启源老师主编的《数学模型》一书第三章优化模型,读完7个小节,也就是7个例子之后,你对优化模型应该有如下的认识:
1. 模型名字:优化模型,也叫数学规划,包括线性规划、目标规划、整数规划、非线性规划、动态规划等等各自能够解决决策变量为整数或实数,目标函数为线性或者非线性的问题,是最常见的数模问题。
2. 这是优化类模型,能解决问题的特征是问题要求某些量达到最大或最小,比如销售量最大化,森林火灾造成的损失最小等等,而且我们可以人为地控制某些变量,比如员工的上班时间,原材料的投入量,消防队员救援的策略等等。只要是存在可控制的量和要达到最优的目标,这就是一个优化问题。
3. 比较标准的优化问题,就像教材上对它的分类一样,可以直接用lingo软件解决,而复杂的非标准而有很多细节的优化问题则需要手动操作和很多其他灵活的处理,或者还需要用动态规划的方法弄清楚问题发展过程后加以解

决,总的来说,优化问题的建模分为这么几个步骤:
a. 找到可以控制的决策变量;找到待优化的优化目标;
b. 寻找决策变量对优化目标的影响,写出目标函数;
c. 对目标函数用求导等数学工具求出最值和对应的决策变量的取值;
d. 回到原问题予以解答。
对于更加细化的问题,比如整数规划模型,模拟退火算法等等,我们也可以更加详细地顺着这样的思路去想问题,以此为思路,为深度要求来学习书本上的知识。
话说回来,学数学模型,其实看哪本书都可以,一本书只是一个线索,要学懂它,只要按照以上的标准,能回答这三个问题,就可以结束了。其实很多时候一本书上的内容真的不够,往往需要读者能以此为引导去查找相关资料才能真正学懂一个模型,一种算法,所以,学数模最关键的是要用心去做,用心去想,多多利用数学中国这样的平台去积累相关的知识,最终达到融会贯通地地步。
希望读者能沉下心来,用心思考,慢慢积累,进而掌握数学模型这门技术,更好地服务于大家的比赛和深造,谢谢大家阅读本文!

前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读。

大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进行过模拟比赛,恐怕还是会捉襟见肘,不能够游刃有余地应对真正比赛中可能会遇到的一些困难。笔者就自己的经验稍稍给大家谈谈,在看了很多数学模型的书籍之后,如何通过论文阅读,将我们的水平上升一个新的台阶,达到一个质的飞跃!
首先,大家要搞清楚教材和论文的区别。教材的主要目的是介绍方法,前人总结出来的最经典的模型和算法,是方法导向型的,当然,教材里面也会举例子,但是这些例子都比我们在实际建模问题和在科研中遇到的问题要容易很多,因为它们都是为了说明例子而进行过简化的,这就是为什么大家会觉得教材看了好多本,但是教材上的方法都没用了:因为实际问题怎么可能那么简单!关于怎样阅读数学建模的教材和基础的数学知识,我会在其他的文章里面提到,下面回到如何读论文。
论文,实际上是别人解决某个问题的过程和相应的结果,而这个问题显然你不会再碰到了。所以,你记住里面的结论,知道他是建了个什么名字的模型然后解决了一个叫什么的方法,显然是没有用的,这种浅层次的记忆只会让你抱着侥幸心理去想:下次能不能够碰到一个背景类似的问题直接套用?很遗憾,这种浮于表面的想法无法深入到文章的思想,这样的生搬硬

套就会像布包刺猬一样,总还是会扎人的,评委看起来也会刺眼。其实,读论文最能帮助大家提高的办法是:从作者解决这个问题的方法出发,还原回去:他是怎么想到这么做的?换了我能够形成这样正确而可行的思路吗?
比方说,2012年A题葡萄酒评价模型,有篇文章用了回归分析和灰色关联方法对葡萄酒进行了评级,然后比较二者的结果,得出灰色关联的方法更加能够反映理化成分对葡萄酒质量的影响的结论。这就是论文表面上给我们呈现的样子,但是我们就可以多想想以下几个问题:
1. 葡萄酒的理化成分数据是怎么一个结构?作者用了哪些数据处理方法,缺失、异常数据怎么处理的?他为什么要这么处理?如果以后遇到类似的问题,数据分析的时候,有没有好的步骤?
简要来说,这道题的理化指标是一个多变量多对象的二维数据表,存在异常数据用spss验证数据功能予以去除,缺失值用插值方法补充,然后用主成分分析法进行了降维,目的是能够减小变量个数。这样一来,数据分析的一套流程就比较清楚了。
2. 他为什么选取了回归分析和灰色关联方法来建模?遇到这类评价某事物的问题,一共有哪些建模方法?分别能够在什么条件下使用?各有什么特点?
回归分析能够忽略问题机理,只从数据上分析出变量之间的相关关系,进而得出结论;而灰色关联方法能够在机理没有完全摸清的情况下,部分挖掘变量间更深层次的联系,更能够准确地评价葡萄酒的好坏。在评价类问题上,我们还有TOPSIS方法,模糊综合评判等等,各有各的特点和优势,处理的问题类型有较小的差别,大家可以自行学习。
3. 在做模型检验时,他是用什么标准来得到判断灰色关联方法比回归分析要好的结论的?他怎么想法到这一点的?我遇到这种比较时能不能够想到这一点上?
该文章直接用了评价误差率指标来判别评价好坏,并且从模型的假设、简化等建立过程中分析出灰色关联方法更加优越的结论,于是我们在对两个模型进行优劣比较的时候,也应该从结果和建立过程分析,进而比较优劣。
从这个思路中间大家应该基本能知道,下次再遇到西瓜酒,葡萄汁,或者电脑的评价问题数据应该怎样进行处理了,我们要类比的是数学结构,而不是表面上这个东西是葡萄酒还是白酒,也许这篇论文读透了,以此为线索,整个评价问题你都解决了。而只有平时思考问题的思维达到这个层次了,不浮于表面,你的举一反三,联想能力才能够真正发挥作用,能够知道遇到一个新问题,怎么找到学过的知识予以分析,解决。
看懂一个问题,能够学会解决一类问题,这

大概就是孔老先生之前教导我们的“举一隅不以三隅反,则不复也”的道理吧,读论文求精不求多,数学模型一共就那么几类,读透了,几篇论文加上之前书籍的积累,就能成为优秀的建模手,笔者与大家共勉!

本文进入到数学建模七日谈第四天:数学模型分类浅谈

大家常常问道,数学模型到底有哪些,分别该怎么学习,这样能让我们的学习有的放矢,而不至于没了方向。我想告诉大家,现实生活中的问题有哪些类,数学模型就有哪些类,因为说到底,数学模型是用来解决实际问题的,解决那些当我们缺乏某一方面足够的经验时,定量化地依靠数字来解决问题的办法。
于是,们可以想想,在现实生活中,我们能够遇到哪些需要定量化解决的问题,而这些问题能否利用数学工具加以解决。
1. 优化类问题:我们常常需要对某些行为进行决策,这些是我们可以控制的因素,这些因素一般来说会定量化地影响我们的某些目标值,比如投入决定产出,价格决定销量等等。这时,如何确定我们的决策变量,进而使得我们的目标值达到最优就是我们利用数学模型来解决的问题。这里,有一些是标准化过了的数学规划问题,而实际问题往往会更加复杂,这时候,就需要我们凭借经验将这些问题化简,进而达到我们能够处理的地步,这中间往往没有统一的处理办法,具体问题具体分析,而这个也体现了一个数模人的实力;
2. 评价类问题:每个行业都有它的评价标准和准则,那么这些标准应该有其自身的形成机制,数学模型就是形成这一机制的方法。如何根据成分指标评价一瓶葡萄酒?如何根据员工表现评价年终奖评定?如何评价一名NBA球员在球场上的效率?这些问题都需要设计评价算法来对这些对象进行评价。数学模型的评价方法的一个优势在于,它能够最大程度上客观地反映被评价对象的优劣程度以及符合评价指标的多少,能够体现公平的原则;
3. 预测类问题: 未来的情况往往可以根据当前的一些量予以推测和判断,这些当前的量再加上失去发展的机制,就能够推算出未来可能的情况。预测的方法有很多,大多是前人总结的经典模型,可以拿来直接套用,而自己推断事物发展的机制进行算法设计然后预测有时候能够更加真实地反映未来的可能趋势,当然,有的模型根据事物发展的机理,有的直接通过数据分析的手段,这些都是可行的,关键看你有没有定量地把握事物的本质。
这是从解决问题的类型的角度来分类,数学模型有这么三种用途,而还可以从数学思想方法的角度来分类,也就是数学思想层面的分类,这些内容就比较多了,而

且内容也是浩如烟海,大家可以结合着对解决问题类型的分类慢慢学习,多多思考,使自己解决问题的能力得到真正的提高。


下面进入数学建模经验谈第五天:怎样问数学模型问题

写这一篇的目的主要在于帮助大家能更快地发现问题和解决问题,让自己的模型思路有一个比较好的形成过程。

在我们学习数学模型、准备比赛的时候,经常会遇到各种各样的问题,有关于算法的,模型建立的,还有直接的题目思路,我在做数学中国版主这些天里,也经常力所能及地解决大家提出的各种问题,既有同学是一句简单的话:求XX算法相关资料,也有的干脆摆上来一道校赛题,我很乐意和负责地为大家解决疑问,也对支持数学中国,相信数学中国的各位同学表示感谢!
同时,也有一些在问题解答过程中效率不是太高的问题,有时候我们版主的回答会不在点子上,一部分是我们能力所限,还有一些确实是问题问的有些模糊,或者不太合适,导致回答效率不高,在此,我想大家分享一些我的想法,希望大家在以后提问的时候能够多多注意,提高学习效率,能够更好地掌握数学模型的精髓。
首先,问题是怎么产生的?
问题的产生来源于建模的过程。也就是:
实际问题→数学模型→数学求解→问题回答
大家可以想一下自己的问题到底是从哪里来的,无非出自于这四个步骤中间:
1. 对一个实际问题没有思路,找不到一个模型可以解决;
2. 知道用哪个数学模型,但是模型的建立过程遇到困难,设计不出相应的算法;
3. 建立模型以后,发现求解有困难,找不到现成的算法或者自己不知道设计;
4. 发现得到的结果回答问题比较奇怪,却不知问题出在哪里。
这是在建立一个模型,解决一道题目时,会“卡壳”的地方,也就是问题所在。根据此,我们可以把提问分成三类:
1. 问题思路:可以是询问某类问题怎么解答,也可以是具体的题目寻求思路,这时,我们可以根据我们的经验,告诉提问者最合适的模型,提出一些思考方向,让大家能够提高解题效率,慢慢地培养大家自己分析问题的能力,真正在数模能力上有所提高;
2. 具体模型的相关疑问:知道用哪个模型,却不知道怎么建立和求解,或者求解结果不好也不知怎么改进,在这个过程中遇到的问题大多是由于对模型的数学机理还没有完全明白,不知道如何将书上的模型和具体题目相对应来求解,我们版主会根据我们的经验指出这些模型怎么用,有哪些关键点,这样大家真正去领会这个模型的涵义,问题也就迎刃而解;
3. 细节问题:某个软件如何安装、操作,某个算法的参数怎么调整

,程序报错等等,这些操作层面的问题希望大家自己尝试过再提,安装这类技术性问题我们有经验的版主会及时予以解答,至于程序报错可能等多的需要同学们自己多多调试,因为我们的回答会帮你解决当前的问题,但是程序调试能力是自己时间积累的结果。
第一类问题对应于建模的第一步:找模型;第二类问题对应于后面几步:建模和解模;第三类的问题可以说是千奇百怪了,因为具体操作过程中会涉及到各种困难等着大家去克服。大家遇到问题和看完我们的回答以后,一定都要看看这个问题在整个建模的大框架下属于哪一步,从前后联系的角度看看这样解决是否合理,而不是就问题而解决问题。所谓之授人以鱼不如授人以渔,这样,当下次再遇到类似的问题,大家就可以获得自己解决的能力,这样的话,才是建模能力的真正提高。




今天进入数学建模经验谈第六天:组队建议和比赛流程建议

数学模型的组队非常重要,三个人的团队一定要有分工明确而且互有合作,三个人都有其各自的特长,这样在某方面的问题的处理上才会保持高效率。三个人的分工可以分为这几个方面:数学员:学习过很多数模相关的方法、知识,无论是对实际问题还是数学理论都有着比较敏感的思维能力,知道一个问题该怎样一步步经过化简而变为数学问题,而在数学上又有哪些相关的方法能够求解,他可以不会编程,但是要精通算法,能够一定程度上帮助程序员想算法,总之,数学员要做到的是能够把一个问题清晰地用数学关系定义,然后给出求解的方向;程序员:负责实现数学员的想法,因为作为数学员,要完成大部分的模型建立工作,因此调试程序这类工作就必须交给程序员来分担了,一些程序细节程序员必须非常明白,需要出图,出数据的地方必须能够非常迅速地给出;ACM的参赛选手是个不错的选择,他们的程序调试能力能够节约大量的时间,提高在有限时间内工作的工作效率;写手:在全文的写作中,数学员负责搭建模型的框架结构,程序员负责计算结果并与数学员讨论,进而形成模型部分的全部内容,而写手要做的。就是在此基础之上,将所有的图表,文字以一定的结构形式予以表达,注意写手时刻要从评委,也就是论文阅读者的角度考虑问题,在全文中形成一个完整地逻辑框架。同时要做好排版的工作,最终能够把数学员建立的模型和程序员算出的结果以最清晰的方式体现在论文中。因为论文是评委能够唯一看到的成果,所以写手的水平直接决定了获奖的高低,重要性也不言而喻了。三个人至少都能够擅长一方面的工作,同时相

互之间也有交叉,这样,不至于在任何一个环节卡壳而没有人能够解决。因为每一项工作的工作量都比较庞大,因此,在准备的过程中就应该按照这个分工去准备而不要想着通吃。这样才真正达到了团队协作的效果。比赛流程:对于比赛流程,在三天的国赛里,我们应该用这样一种安排方式:第一天:定题+资料查找+模型框架:这一部分是我们模型的基础,能够完成这部分内容基本上模型的整体构架就确定下来了。第二天:全面求解与调整框架:把自己对模型框架的搭建用各种手段实现。第三天:论文初稿+摘要+反复修改全文:把模型变成论文并反复修改。当然,很少有队伍能如此顺利地完成这些工作,所以一旦出现工作的落后或超前,都不要惊慌或者沾沾自喜,往往是经历了绝处逢生,才能迸发出积极的思想,最终完成一篇青春无悔的论文!笔者与大家共勉!

经过前面六天的文章分享,相信大家对数学模型的相关准备、学习都有了更新的认识,希望大家能从中有所收获,以便更高效地准备比赛和学习数学模型,本文是数学建模经验谈的最后一天:临近比赛的准备工作,希望在临近比赛的时候能够助推大家获得最后的提升!下面是正文。

学习数模到最后参加数模比赛是一个持久战,在这持续很长的时间里除了坚持,有恒心,有毅力之外,还有一点重要的,就是状态的调整,良好的状态是成功的保证。比赛前,我们在知识,心态,身体状态上都应该达到一个比较协调的状态,才能有能力应对三天三夜的挑战,下面就我自己的一些参赛经验分享一些临近比赛我们应该做的调整,以帮助大家在临门一脚的时候调整好比赛状态。
还剩10天
这个时候其实离最后比赛还有一段,所以,对照一下数模的能力要求和自己队伍三个人的配合情况,查漏补缺,在一些重要而自己有没有掌握的一些知识点上再花些功夫,应该能够达到比较好的提高的效果。比如,优化,评价,预测三类模型,一定不能有知识空白的地方,或多或少应该都有了解才是。
还剩5天
一般来说,书本上的知识要变成自身内化的能力至少需要两个月以上的时间,所以这个时候再去学习新的模型、算法、读新的文章对你能力的提高已经没有大的用处了,最多能给自己增添一些信心。所以,在离比赛还有3、5天的时候,可以尝试着对自己已经学过的知识作一下总结,翻看一下之前的笔记、资料,包括一切你曾经学过的论文,书籍,ppt等等,以浏览的方式进行,不必深入,因为深入的东西应该平时积累好了才是。此时,就像放电影一样在脑海里走一遍,能把之前积累过的东西活化

,进而更容易、熟练地在比赛中用到。这时遇到不懂或者模糊的也大胆地跳过去,因为你要坚信,你不会的肯定不会考,考了的话你也可以用其他的知识跳过它!完全以一种放松的心态去应对,如果平时积累足够,应该会发现自己对比赛的信息会越来越足的!
还剩1天
这个时候是放松的大好时机!今天既不要看书,也不要调程序!而是队伍里面三个人一起找个公园,找间教室,一起聊聊天,扯扯蛋,找个商店逛逛买点这几天可能用到的咖啡、面包之类的,然后彻底的放松一下,或者做一些简单的体育运动项目也可以,只要别耗掉太多体能就行。比赛前一天晚上,找一个馆子,一起好好吃一顿,算是饯行一样,大家同心协力,抱着统一的目标,一起努力去克服困难,解决问题。无论结果如何,这种一起努力思考的过程是很值得享受和回味的,大家可以在比赛中好好体验。
好了,今天就说到这里,总之要做到临阵不乱,静下心来,心平气和地参加比赛,把它看做是一次团队作战的实践,日后遇到的困难、挑战、科研任务或是工作的一次模拟,用心对待它,无论结果如何,用心做过的事情,肯定会有意想不到的收获在未来的某一天回馈给你!各位加油!笔者与大家共勉!


相关文档