数学建模个人经验谈 , G+ h' T# p' k7 F: d1 h # G* R$ [4 }% p& m: ~( O8 y9 l1 序% [& n, r( ]/ w& ^: l
1 M- N, \ T' C, _: b# p4 B感到要在全国赛中取得好成绩经验第一,运气第二,实力第三,这种说法是功利了点,但是在现在中国这种科研浮躁的大环境中要在全国赛中取得好成绩经验是首要的。这并不说明美赛中经验不重要,在美赛中经验也是首位的,但是较之全国赛就差的远多了,这是由于两种比赛的不同性质造成的。9 s1 i) u1 n b
6 F% o1 W' J- D. d2 ~1 Z) r全国赛注重“稳”,与参考答案越接近,文章通顺就可以有好成绩了,美赛则注重“活”,只要有道理,有思想就会有不错的成绩,这个也体现了两个国家的教育现状,这个就不扯开去了。在数模竞赛中经验会告诉我们该怎么选题,怎么安排时间,怎么控制进度,知道什么是最重要的,该怎么写论文......,或许有人会认为选题也需要经验吗?经过参加了多次比赛后觉的是有技巧的,选个好题成功的机会就大的多,选题不能一味的根据自己的兴趣或能力去选,还要和全体参赛队互动下(这个开玩笑了,不大容易做到,只能是在极小的范围内做到),分析下选这个题的利弊后决定选哪个题,这里面道道也不少,后面会详细的展开谈谈。 ) W" E3 W7 m( p4 d 3 L% X. H8 t/ d, s- _写这个东西当做是回忆下以前的点点滴滴,希望自己的经验能帮助一些新手(这样的说法不大好,暂时想不出更好的,凑活着先用着)能尽快的成长,尽快的发挥自己的能力,体验数学在应用中的作用,爱上数学,甚至和数学打一辈子交道。国防科大数学建模网的路过(向为)前辈曾经写过个新手教程,写的十分的好,希望写的这个能延续他写的那个教程,能给大家哪怕一点点的帮助。& t4 M/ O t+ V* }/ `: V+ v
7 _6 k _9 y+ G) e. A) p) ]) V6 X
5 e$ d( K6 w' R" G
2 组队和分工) [0 m7 T6 v- P/ b! ^3 P
+ ?# G+ z6 r9 k' f, J数学建模竞赛是三个人的活动,参加竞赛首要是要组队,而怎么样组队是有讲究的。此外,还需要分工等等一般的组队情况是和同学组队,很多情况是三个人都是同一系,同一专业以及一个班的,这样的组队是不合理的。让三人一组参赛一是为了培养合作精神,其实更为重要的原因是这项工作需要多人合作,因为人不是万能的,掌握知识不是全面的,当然不排除有这样的牛人存在,事实上也是存在的,什么都会,竞赛可以一个人独立搞定。但既然允许三个人组队,有人帮忙总是好的,至少不会太累。而三个人同系同专业甚至同班的话大家的专业知识一样,如果碰上专业知识以外的背景那会比较麻烦的。7 T3 O/ Q, c' S* ~
2 \: t7 F' w! E$ U& g) z所以如果是不同专业组队则有利的多。众所周知,数学建模特别需要数学和计算机的能力,所以在组队的时候需要优先考虑队中有这方面才能的人,根据现在的大学专业培养信息与计算科学,应用数学专业的较为有利,尤其是信息与计算科学可以说是数学和计算机专业的结合,两方面都有兼顾,虽然说这个专业的出路不是很好,数学和计算机都涉及点但是都没有真正的学通这两门专业的,但对于弄数学建模来说是再合适不过了。应用数学则偏重于数,但是一般来讲玩计算机的时间不会太少,尤其是在科学计算和程序设计都会设计到比较多,又有深厚的数学功底,也是很不错的选择。" d0 K$ }+ Y% ^' ]8 N- B# G
# T# x8 C5 N7 _) H3 N. ?有不少的人会认为第一人选是数学方面的那第二人选就应该考虑计算机了,因为学计算机的会程序,其实这个概念可以说是对也可以说是不对的。之所以需要计算机方面的人是为了弥补数学方面的人在算法实践方面的不足,但是不是所有的计算机方面专业人都擅长算法实践的,如果要选的话就选擅长算法分析实践的,因为学计算机的不一定会程序,并且会程序的不一定会算法。拿出一个算法,让学计算机的编写程序实践不一定能行,不是小看计算机的,但是这种情况还是比较多的,不然可以看到参加ACM的数学系的居多,比学计算机的搞的好。因此一定要弄清这个概念,不是计算机的就适合的。 * O5 U2 K3 s4 N" T+ @; w" h 9 \' G% h3 x- p* Z; C7 K所以在组队中有两种人是必需的,一个是对建模很熟悉的,对各类算法理论熟悉,在了解背景后对此背景下的各类问题能建立模型,设计求解算法。一个是能将算法编制程序予以实现,求得解。当然有可能是一个人就将这两种都具备了,这样的话再找个任意具备上述两种能力的人就可以了,以减轻工作量,不然非累死不可。第三个就是专门需要写作的拉,从专业角度看是需要别的专业,比较适合的有生物、土木、机电、电信或机械等专业。在数学建模中各种背景的问题都会出现,所以有其他专业同学的话可以弥补专业知识方面的不足。5 h% Y* j3 {& q3 g
9 W$ P; t3 U" s" L综上所述,组队要根据分工而来的,三个人要具备一个数学功底深厚,理论扎实,一个擅长算法实践,另一个是写作(弥补专业知识不足),如果一个组能有这样的人员配置是比较合理的。但是往往事事不能如意,所以不能满足这种人员配置的时候就尽量往这样人员配置靠。9 M) E8 B* w, T; P* L
?4 M+ X' S- i# Q
3 培 训 : O+ I# r: Y) f7 G- H ) q( }) _2 a! a+ h1 ^; [( x& C很多刚接触数模的朋友都会碰到一个问题,那就是什么都不会做,看着题目不知道咱们下手,干着急,然后,一旦经过指导之后就知道该怎么做了,同时在做的过程中会碰到各种各样的问题,发现不是算法不了解就是软件不会使用。假使一个题目会做了,但是如果碰到另一个题目又不会了,又不知道该怎么办了。如何使新手尽快的成长是个大家很关心的问题,讨论的也很广泛。各个学校都又不同的方法,有的是开数学建模培训班,有的是以题带连,有的是通过协会普及教育...,各个学校都已形成自己的风格和方法。纵观这些方法,个人感觉有很多不是太科学的地方,有的学校投入很多但是出不了成绩,这时就需要调整下培训方法了。5 s7 U* @2 R$ n7 E# y" i
" k* ^" N0 l2 {9 j
检验数模学的成果如何是每年的全国赛和美国赛,形式都一样是以通讯的方式完成给定的选题。而做课题的一般进程就是建模型,解模型,写论文这三步。所以从这三个方面去培训是最有效的,因此个人认为最有效提高自己的水平就是以题带练,在实践中提高自己。1 e, L, y5 K5 v* r- W4 ?1 R
3 M- w. ?9 t2 j& X: P ) d1 X2 Z1 w& h5 v l* g5 E8 G + h( Y1 ~, ^9 L8 w0 ]1. 建模型: & _; T. n8 ~3 q3 o& |! F9 ?- b* O1 y0 B5 o4 a, {' C
建模型是最为关键的一步,新手往往是无从下手,这是因为知识面不光,缺乏背景知识, + V% y4 S0 O$ ?" x& X! f0 k' i" s4 m: D) \
背景知识对建模型来讲是很重要的,如果课题的背景刚好是本专业的,那就会知道问题的关键是什么,该怎么样去解决,而事实上往往不是这样,问题的背景是所不熟悉的领域,这个时候就需要查资料了解这个问题的背景和了解问题的发展,特点,关键所在以及前人是怎么解决的等等。因此需要训练查找资料和查找文献的能力。新手在知道该怎么做以后碰到的问题就是不会做,这个就是相关知识的缺乏了。 * U, J! P9 s/ r. Z) c" q" g 3 f. x4 w4 I4 ^) P& Z! m( h比如需要做聚类分析,需要用遗传算法,需要做相关性分析等等的时候不知道该怎么做?这个就是相关知识的缺乏,当然知道了解掌握全部的算法和知识是不现实的,但是常用的算法和知识是必备的,也是必须的,数模论坛的ducy前辈(董乘宇)曾总结过数模竞赛应当掌握的十类算法(具体可去数模论坛查找):蒙特卡罗算法,数据拟合、参数估计、插值等数据处理算法,线性规划、整数规划、多元规划、二次规划等规划类算法,图论算法,动态规划、回溯搜索、分支定界等计算机算法,最优化理论的三大经典算法:模拟退火算法、神经网络算法、遗传算法,网格算法和穷举法,一些连续数据离散化方法,数值分析算法,图像处理算法。基本上涵盖了数模中几乎所有的算法了,如果掌握了这些对于运筹优化类的问题就可以轻松解决了,但是随着近些年的发展看概率统计的手段在数模中的作用越来越大,所以除了上述十大算法之外还应当对统计方法有相当的了解和掌握。1 D o$ ? J9 |& q3 ]
6 P( q+ B* m, ~$ N* T5 F3 M6 m$ k先前说过,要掌握所有的知识是不现实的,参加数模的其中一个能力就是现学现卖的能力,在最短的时间内掌握知识并将其应用,这个也是吸引很多同学为之着迷的原因,但这并不是说可以不去了解算法,什么都可以到竞赛的时候去学,那个时候就来不及了,因为只有了解的多,知识面宽广了,遇到问题时就知道该怎么办了,然后具体去解决问题。所以增广知识面,博览全书很重要。( Q A5 i! F( \9 Q: v* T
: r4 m, s* H5 |" j8 c
6 ~9 \8 A6 M+ G$ q1 g: {1 g) [
% v( w7 ^. |+ ~; J2 \2 H
2. 解模型: `' N/ F- F2 I. C* I; n1 M6 E) D" ^' y
模型建好了,该怎么解是个常常令人头痛的问题,这个不仅时新手,而且一般是令绝大多数同学头痛的问题,辛辛苦苦把模型建了,但是解不出结果来,这个时候往往时间很紧了,常常另人无奈,所以培训的时候多做这些方面的训练是十分必要的。解模型实质上就是算法的实践。一般来讲是用matlab,mathematica,lingo,lindo,spss等等数学软件来求解,当然有的时候c/c++是很实用的工具。在这里推荐几本数学软件的书《精通matlab6.5》(北航张志涌所著)、飞思工作室出的那套matlab6.5的书、《数学运算大师mathematica4》、万保成老师所写的电子版的《lingo8 for windows》、《最优化模型与实验》,这几本书都是很好的,对掌握这些数学软件是十分合适的。而有些算法数学软件往往无能为力,需要用c/c++来编制程序来解决,对于c/c++个人掌握程度不同,不过如果多看些算法方面的书,多做些ACM类的练习是十分必要的。- @; g' q& W) ^( C- W5 F
+ S, F" `8 B4 D6 t) F
5 I% I9 A0 f z9 Z z j# m, {# R说了这么多,综述下吧,查找文献是决定参赛论文起点高低的关键。三天中做的课题很少是重新起灶的,一般都是在文献的基础上做的,所以找到的文献如果离所做的课题越近则参赛成绩会好。所以在查找文献多下点功夫不会错的,砍柴不误磨柴功:& ^; W& L/ c) {5 q$ ^; Z, H' d
/ a+ j F; a9 z- W! {$ g0 V! j1 \$ y1 |9 b h/ P# z
# i4 |8 G$ n) v2 ^; D6 论文写作" f5 Y' u* ^" Y: L( s
5 c- U3 o1 ^2 G% E论文是建模中最后的一环也是最关键的一环,这环做好了那就圆满了,做砸了全功尽弃 % k4 {1 s; ]0 O8 c5 ?$ `% A6 x2 H w' j6 m+ h/ E
了。关于怎么写论文已经有很多文章介绍了,这就足以可见写论文的重要性了。先介绍下写论文的工具,或许很多朋友要纳闷了,写论文什么工具,不就是电脑呗,还有朋友会进一步说用word呗,两者都对,当然用电脑的这个说法绝对正确,如果说是用手那更对了,呵呵,其实指的工具是软件。很多人用word,对于word就不重点介绍了,要重点介绍的是tex,它是一个功能强大的特别适合排版科技文献和书籍的格式化排版程序。它是由著名计算机专家和数学家斯坦福大学D.E.Knuth教授研制的。 2 u# {: ^* n) k& k. @- | ( G! o% N" Z0 Q: I20世纪60年代,knuth准备出系列专著《计算机程序设计技巧》(The Arts of Computer Programming),前三册已经出版,当他正在撰写第四册时,出版社拿来第二册的第二版给他过目,结果令他大失所望,因为当时出版社的印刷技术没有使他的书稿更好看,反而变糟了,尤其是在数学公式和字体上面的缺陷更令他无法接受。于是他就打算自己写一个既能供科学家编排手稿又符合出版社印刷要求的高质量的计算机排版系统。这就是TeX排版系统的由来。 ?- n- ~& Y7 \0 H; {+ B/ n& u' i# o& O7 ` g/ _( _0 W$ ]/ i
TeX系统是由Pascal语言编写的,程序的源代码也是公开的。它包含300条基本命令和600条扩展命令,几乎可以排版任何格式的文献,如一般文章、报告、书刊和诗集等,对数学公式的排版也被公认是最好的。TeX系统的优点之一是它还支持命令宏,这使得使用TeX成为一种乐趣,用户可以自己编写红包来定义更多、更方便的新命令,这也是TeX能得以迅速发展的原因。而且TeX是一个可移植性系统,可以运行于所有类型的计算机(如苹果机、IBM、PC机及大型工作站)和各种操作系统(如DOS、Windows、Unix等),它的排版结果dvi文件于输出设备无关,可以在不同的操作系统上显示和打印。TeX源文件是ASCII码文件,可以方便地在网络上传播。目前,大多数学术部分和校园网上都安装有TeX系统。国际上许多出版机构也采用TeX系统来排版书刊,不少出版社还要求作者提供手稿的TeX源文件。 ! A! n, K, C2 I+ S' N2 r* ]/ u% \3 }/ W& c
虽然TeX的功能非常强大,用它可以排版任何式样的文稿,但普通用户要灵活掌握TeX的900条初始命令还是有困难的。因而,TeX公开几年后,利用TeX的宏定义功能开发的宏库AMSTeX和LaTeX就产生了。AMSTeX是Michael Spaivak受美国数学会(AMS)的委托编写的,重要用于AMS和其他分支机构出版的大量书籍、期刊和评论。AMSTeX含有一个宏包(Style file),供作者用来方便的准备稿件。用AMSTeX可以方便地排印出非常复杂的数学公式和AMS制定的全部数学符号。- \# G8 Z. s. \5 K% z9 A/ J
7 s F' D1 R5 s* g. t) h# ^LaTeX是由美国计算机学家Leslie Lamport于1985年开发成功的。尽管在排版数学公式和数学符号方便LaTeX不如AMSTeX,但LaTeX提供了大量易于学习和使用的命令,如非常有用的交叉引用命令(cross-referencing commands),这是AMSTeX所不具备的。因而LaTeX有更广泛的用途,特别是在排版信件、书刊、诗集等方面更优于AMSTeX。TeX的命令好比是建筑所使用的各种各样的材料,优秀的建筑师用它能建造出各种美丽的建筑;LaTeX的命令好比是已经建筑好的各种各样的房间和家具,用户只需选择适合自己的房间和家具就能得到满意的住所,而且这种房间和家具之多几乎无须用户自己动手建造。为了使用户既能使用LaTeX提供的大量命令,又能排版出优美的数学公式和数学符号,美国数学会又开发了AMSTeX。 0 n3 S' n4 z" d' a" [ ) w/ B! I; |: u M& CTeX的使用相对于word要麻烦很多,但是其优势势非常明显的,就举几个吧。word中数学公式是以图片形式保存的,一旦公式和图片多的话则很容易死机,在竞赛中则吃过大亏,在全国赛和国际赛中都发生过这些情况,辛辛苦苦写了很多,但是全部没了,那时真是欲哭无泪。4 l: [* F, g7 _9 M6 V; l9 n% T
! ~8 M- v' Y: ?" T) K现在是学乖了,用word写论文时时常按ctrl+s。并且不同版本不兼容,xp版本到2000版本就出现很严重的不兼容问题。而LaTeX则不会出现这种情况。用word写论文时可以发现当公式或数学符号在某行中时则行距撑的很大了,十分难看,LaTeX则不会出现这种问题。说到公式和数学符号则可很明显的感觉到word和LaTeX 的不同了,爱美之心人皆有之,学数学的很大程度也是因为被数学的美所深深的吸引而迷恋数学。而LaTeX排版出来的数学公式则比word要漂亮的多了。此外在写论文的时候对参考文献十分头痛,而LaTeX则在这个方面不要比word显的太强悍啊。 _3 P! S0 a+ a- j l9 ?$ K6 N9 b
7 i, f! T2 P5 T1 x
介绍了这么多LaTeX并不是说明LaTeX比word怎么怎么牛,每个事务存在就有它存在的的价值,word在很多地方有比LaTeX很明显的优势。只不过在数学论文这个方面LaTeX要比word强太多了,故而介绍这么多,推荐使用LaTeX写数学论文。2 s' z8 [; Q6 d0 B
0 m) C4 ?+ c& i; v; T由于全国赛是要求用word的,所以在全国赛的时候还是乖乖的用word好了,写到这忍不住想骂街了,数学建模全国赛竟然要求用word写,什么他妈的规矩,理工科现在都主流用LaTeX了,并且国外都普遍用TeX,word不被接受,在这么高规格的比赛中要用word,没天理啊,希望哪天那帮大爷教授们能开窍了,能接受LaTeX写的PP论文,能提供LaTeX的模板。在美国赛中则尽量用LaTeX写,优势太明显了,虽然在上次美赛中没用,不过如果再参加一次的话坚决用LaTeX编写。宣传完LaTeX了,开始介绍写论文的技巧。 6 y) N0 N" z/ n( a3 X J8 N0 _5 v9 A
在什么论文中摘要都是十分重要的,尤其是在全国赛和美国赛中摘要的地位很显赫的,两个组委会都提出了摘要的重要性,再三明文提醒参赛者要注重摘要。要知道,无论全国赛和美国赛第一轮都是看摘要筛选。在全国赛中或许还能看看,但在美国赛中只要第一轮通过摘要的筛选就可以获二等奖了。7 q! i! ~' H/ a' X3 D
. B x. x" q* [. T. B在摘要的写作中一定要花3个小时以上,反复修改,一定要修改修改再修改,修改个10几稿才能过关。在摘要中一定要突出方法,算法,结论,创新点,特色,不要有废话,一定要突出重点,让人一看就知道这篇论文是关于什么的,做了什么工作,用的什么方法,得到了什么效果,有什么创新和特色。一定要精悍,字字珠玑,闪闪发光,一看就被吸引。这样的摘要才是成功的。* _" R0 ~. a( j/ w. V' {1 R& R