$ L- `. G0 ~. J) I& N& o6 e; V: E. s& s/ v4 V- i7 z8 S; G, g d 数学建模经验谈(超实用) 数学建模个人经验谈( `4 @" @- L' c ]3 f3 H
# Q8 }5 `) _7 ]' f
1 序+ R$ n& `) ]4 q' W
) p2 b% D) s6 A( A5 w$ o6 y
感到要在全国赛中取得好成绩经验第一,运气第二,实力第三,这种说法是功利了点,但是在现在中国这种科研浮躁的大环境中要在全国赛中取得好成绩经验是首要的。这并不说明美赛中经验不重要,在美赛中经验也是首位的,但是较之全国赛就差的远多了,这是由于两种比赛的不同性质造成的。 $ I5 t: \2 L7 y$ X9 b9 n " q! t5 [$ x! T0 O/ Z全国赛注重“稳”,与参考答案越接近,文章通顺就可以有好成绩了,美赛则注重“活”,只要有道理,有思想就会有不错的成绩,这个也体现了两个国家的教育现状,这个就不扯开去了。在数模竞赛中经验会告诉我们该怎么选题,怎么安排时间,怎么控制进度,知道什么是最重要的,该怎么写论文......,或许有人会认为选题也需要经验吗?经过参加了多次比赛后觉的是有技巧的,选个好题成功的机会就大的多,选题不能一味的根据自己的兴趣或能力去选,还要和全体参赛队互动下(这个开玩笑了,不大容易做到,只能是在极小的范围内做到),分析下选这个题的利弊后决定选哪个题,这里面道道也不少,后面会详细的展开谈谈。) O3 P3 I: j. I' j( \0 W
, L. C/ ]" u* ^, n' O! u: D写这个东西当做是回忆下以前的点点滴滴,希望自己的经验能帮助一些新手(这样的说法不大好,暂时想不出更好的,凑活着先用着)能尽快的成长,尽快的发挥自己的能力,体验数学在应用中的作用,爱上数学,甚至和数学打一辈子交道。国防科大数学建模网的路过(向为)前辈曾经写过个新手教程,写的十分的好,希望写的这个能延续他写的那个教程,能给大家哪怕一点点的帮助。/ e9 @* L) ^3 Z1 V
+ J* v3 e. Y9 c6 i" S
1 ^( ~2 W- O( |/ {1 z" F( _ 9 ~) e' S/ t( q3 \1 _) Q2 u2 组队和分工 ; L& k. O$ T( J5 J, ], Q! P 1 L$ q% `' t6 |6 A5 ~7 E数学建模竞赛是三个人的活动,参加竞赛首要是要组队,而怎么样组队是有讲究的。此外,还需要分工等等一般的组队情况是和同学组队,很多情况是三个人都是同一系,同一专业以及一个班的,这样的组队是不合理的。让三人一组参赛一是为了培养合作精神,其实更为重要的原因是这项工作需要多人合作,因为人不是万能的,掌握知识不是全面的,当然不排除有这样的牛人存在,事实上也是存在的,什么都会,竞赛可以一个人独立搞定。但既然允许三个人组队,有人帮忙总是好的,至少不会太累。而三个人同系同专业甚至同班的话大家的专业知识一样,如果碰上专业知识以外的背景那会比较麻烦的。 " P$ P0 Y G5 g& [. Q & J# c; ^+ Q0 h, ?1 ]所以如果是不同专业组队则有利的多。众所周知,数学建模特别需要数学和计算机的能力,所以在组队的时候需要优先考虑队中有这方面才能的人,根据现在的大学专业培养信息与计算科学,应用数学专业的较为有利,尤其是信息与计算科学可以说是数学和计算机专业的结合,两方面都有兼顾,虽然说这个专业的出路不是很好,数学和计算机都涉及点但是都没有真正的学通这两门专业的,但对于弄数学建模来说是再合适不过了。应用数学则偏重于数,但是一般来讲玩计算机的时间不会太少,尤其是在科学计算和程序设计都会设计到比较多,又有深厚的数学功底,也是很不错的选择。 ; ]. T* a5 B/ o/ ^1 f4 e0 I2 n 5 g. B- z3 X2 z9 @有不少的人会认为第一人选是数学方面的那第二人选就应该考虑计算机了,因为学计算机的会程序,其实这个概念可以说是对也可以说是不对的。之所以需要计算机方面的人是为了弥补数学方面的人在算法实践方面的不足,但是不是所有的计算机方面专业人都擅长算法实践的,如果要选的话就选擅长算法分析实践的,因为学计算机的不一定会程序,并且会程序的不一定会算法。拿出一个算法,让学计算机的编写程序实践不一定能行,不是小看计算机的,但是这种情况还是比较多的,不然可以看到参加ACM的数学系的居多,比学计算机的搞的好。因此一定要弄清这个概念,不是计算机的就适合的。2 Q* |0 O" Y1 A2 v6 A
& s' V' ?$ I) _" ~0 l& C/ B
所以在组队中有两种人是必需的,一个是对建模很熟悉的,对各类算法理论熟悉,在了解背景后对此背景下的各类问题能建立模型,设计求解算法。一个是能将算法编制程序予以实现,求得解。当然有可能是一个人就将这两种都具备了,这样的话再找个任意具备上述两种能力的人就可以了,以减轻工作量,不然非累死不可。第三个就是专门需要写作的拉,从专业角度看是需要别的专业,比较适合的有生物、土木、机电、电信或机械等专业。在数学建模中各种背景的问题都会出现,所以有其他专业同学的话可以弥补专业知识方面的不足。 $ A' \, Y, w+ E' V 7 o! w6 K( z: q9 W/ V综上所述,组队要根据分工而来的,三个人要具备一个数学功底深厚,理论扎实,一个擅长算法实践,另一个是写作(弥补专业知识不足),如果一个组能有这样的人员配置是比较合理的。但是往往事事不能如意,所以不能满足这种人员配置的时候就尽量往这样人员配置靠。 ) E9 } R5 A6 i( K4 \/ P+ O5 J- ^$ v: z
3 培 训 ' y" ?1 |% K; \4 w* I. n# \; P7 j: J: x6 e8 |, |& x
很多刚接触数模的朋友都会碰到一个问题,那就是什么都不会做,看着题目不知道咱们下手,干着急,然后,一旦经过指导之后就知道该怎么做了,同时在做的过程中会碰到各种各样的问题,发现不是算法不了解就是软件不会使用。假使一个题目会做了,但是如果碰到另一个题目又不会了,又不知道该怎么办了。如何使新手尽快的成长是个大家很关心的问题,讨论的也很广泛。各个学校都又不同的方法,有的是开数学建模培训班,有的是以题带连,有的是通过协会普及教育...,各个学校都已形成自己的风格和方法。纵观这些方法,个人感觉有很多不是太科学的地方,有的学校投入很多但是出不了成绩,这时就需要调整下培训方法了。) ~+ L O" D$ }* d O
# V9 f" {/ c" s2 q/ b, s0 I9 K) S检验数模学的成果如何是每年的全国赛和美国赛,形式都一样是以通讯的方式完成给定的选题。而做课题的一般进程就是建模型,解模型,写论文这三步。所以从这三个方面去培训是最有效的,因此个人认为最有效提高自己的水平就是以题带练,在实践中提高自己。( W% s) K; @7 z S* P" z
{3 g7 X; p5 ]$ h . q) ^/ \! v: n+ i3 I; G* ~) B7 Z' E E: i9 D' f8 w% b9 s2 O1 `
1. 建模型:8 W4 I, j% R5 ^. A" k8 H
/ r9 x7 i- A# S: j# x! V' G建模型是最为关键的一步,新手往往是无从下手,这是因为知识面不光,缺乏背景知识, 8 O& f# E8 D+ \, e$ M7 y % y& A$ P* }! v0 x5 \# K7 i- U背景知识对建模型来讲是很重要的,如果课题的背景刚好是本专业的,那就会知道问题的关键是什么,该怎么样去解决,而事实上往往不是这样,问题的背景是所不熟悉的领域,这个时候就需要查资料了解这个问题的背景和了解问题的发展,特点,关键所在以及前人是怎么解决的等等。因此需要训练查找资料和查找文献的能力。新手在知道该怎么做以后碰到的问题就是不会做,这个就是相关知识的缺乏了。0 ]) f x/ L' F1 M
9 x" [, o: n7 M' v" c; [& l
比如需要做聚类分析,需要用遗传算法,需要做相关性分析等等的时候不知道该怎么做?这个就是相关知识的缺乏,当然知道了解掌握全部的算法和知识是不现实的,但是常用的算法和知识是必备的,也是必须的,数模论坛的ducy前辈(董乘宇)曾总结过数模竞赛应当掌握的十类算法(具体可去数模论坛查找):蒙特卡罗算法,数据拟合、参数估计、插值等数据处理算法,线性规划、整数规划、多元规划、二次规划等规划类算法,图论算法,动态规划、回溯搜索、分支定界等计算机算法,最优化理论的三大经典算法:模拟退火算法、神经网络算法、遗传算法,网格算法和穷举法,一些连续数据离散化方法,数值分析算法,图像处理算法。基本上涵盖了数模中几乎所有的算法了,如果掌握了这些对于运筹优化类的问题就可以轻松解决了,但是随着近些年的发展看概率统计的手段在数模中的作用越来越大,所以除了上述十大算法之外还应当对统计方法有相当的了解和掌握。 + c/ n1 R8 O) f/ |5 d8 ?! G2 F$ o/ E8 P- G/ ^: X
先前说过,要掌握所有的知识是不现实的,参加数模的其中一个能力就是现学现卖的能力,在最短的时间内掌握知识并将其应用,这个也是吸引很多同学为之着迷的原因,但这并不是说可以不去了解算法,什么都可以到竞赛的时候去学,那个时候就来不及了,因为只有了解的多,知识面宽广了,遇到问题时就知道该怎么办了,然后具体去解决问题。所以增广知识面,博览全书很重要。$ `2 i. Y9 q9 U; b
7 \/ R. v4 P7 j2 [0 R% B, o. k+ f- W2 ^2 k' n7 @% L9 ^0 V( X
+ u& L7 }# o$ w. i# t$ Z% z k2. 解模型: ! u/ h0 X& I7 E6 Z$ y+ l6 T0 J* t9 T7 R
模型建好了,该怎么解是个常常令人头痛的问题,这个不仅时新手,而且一般是令绝大多数同学头痛的问题,辛辛苦苦把模型建了,但是解不出结果来,这个时候往往时间很紧了,常常另人无奈,所以培训的时候多做这些方面的训练是十分必要的。解模型实质上就是算法的实践。一般来讲是用matlab,mathematica,lingo,lindo,spss等等数学软件来求解,当然有的时候c/c++是很实用的工具。在这里推荐几本数学软件的书《精通matlab6.5》(北航张志涌所著)、飞思工作室出的那套matlab6.5的书、《数学运算大师mathematica4》、万保成老师所写的电子版的《lingo8 for windows》、《最优化模型与实验》,这几本书都是很好的,对掌握这些数学软件是十分合适的。而有些算法数学软件往往无能为力,需要用c/c++来编制程序来解决,对于c/c++个人掌握程度不同,不过如果多看些算法方面的书,多做些ACM类的练习是十分必要的。 7 ]7 p( K: D6 j3 C& X - G8 X( h( a7 R& p5 `6 A 5 {' c: |' ^9 J7 ]+ [ : P, U, Q: o, ?6 a0 W; W+ ?3. 写论文:9 z( {4 V- d7 p; |4 [! a- `
4 g( F1 ~& W& C# ~3 d1 x9 c论文是很关键的一步,写到这里已经写了很多“关键”的词了,事实也如此,步步关键, - I5 Y9 q0 s7 D9 @) F8 Z5 d; O, h9 L" g6 z
其中一步做的不好都对结果有很大的影响,论文是所有工作的体现,如果论文写的不好就功亏于溃,在这里就吃过很大的亏的。因此多写写多练练绝对是有好处的,并且不是写完就算了,要不断的修改,修改到自己非常满意,修改到象所发表在数学期刊中的论文那样才可以。 $ e; C% `+ p- [, ^, X7 o) X , P2 Y ~- A7 z: H! S' u: } x4 V综上可得,最快最有效的提高水平的方法就是通过做题来发现自己的不足,通过学习弥补自己的不足,这样就查漏补缺,提高了自己的水平了,并且最大程度上取得了经验。 " {" ~$ x- v2 N8 \/ N + \$ }, x4 g' p% r3 `9 M* b' E6 [
4 X9 l: b. t. O0 cTeX的使用相对于word要麻烦很多,但是其优势势非常明显的,就举几个吧。word中数学公式是以图片形式保存的,一旦公式和图片多的话则很容易死机,在竞赛中则吃过大亏,在全国赛和国际赛中都发生过这些情况,辛辛苦苦写了很多,但是全部没了,那时真是欲哭无泪。5 A4 w( P6 k, m4 N" e
4 v0 P' M. s* e$ ]& w# f+ x现在是学乖了,用word写论文时时常按ctrl+s。并且不同版本不兼容,xp版本到2000版本就出现很严重的不兼容问题。而LaTeX则不会出现这种情况。用word写论文时可以发现当公式或数学符号在某行中时则行距撑的很大了,十分难看,LaTeX则不会出现这种问题。说到公式和数学符号则可很明显的感觉到word和LaTeX 的不同了,爱美之心人皆有之,学数学的很大程度也是因为被数学的美所深深的吸引而迷恋数学。而LaTeX排版出来的数学公式则比word要漂亮的多了。此外在写论文的时候对参考文献十分头痛,而LaTeX则在这个方面不要比word显的太强悍啊。 0 ?; f3 w6 a# O7 T; F " r& R. X# l7 H1 F! \) ^" j介绍了这么多LaTeX并不是说明LaTeX比word怎么怎么牛,每个事务存在就有它存在的的价值,word在很多地方有比LaTeX很明显的优势。只不过在数学论文这个方面LaTeX要比word强太多了,故而介绍这么多,推荐使用LaTeX写数学论文。& e0 _9 H/ {" ]% e
- k W' u9 \9 w9 @- a由于全国赛是要求用word的,所以在全国赛的时候还是乖乖的用word好了,写到这忍不住想骂街了,数学建模全国赛竟然要求用word写,什么他妈的规矩,理工科现在都主流用LaTeX了,并且国外都普遍用TeX,word不被接受,在这么高规格的比赛中要用word,没天理啊,希望哪天那帮大爷教授们能开窍了,能接受LaTeX写的PP论文,能提供LaTeX的模板。在美国赛中则尽量用LaTeX写,优势太明显了,虽然在上次美赛中没用,不过如果再参加一次的话坚决用LaTeX编写。宣传完LaTeX了,开始介绍写论文的技巧。4 ~; \' G5 Q0 H
5 P( d. F# V# H4 A& E
在什么论文中摘要都是十分重要的,尤其是在全国赛和美国赛中摘要的地位很显赫的,两个组委会都提出了摘要的重要性,再三明文提醒参赛者要注重摘要。要知道,无论全国赛和美国赛第一轮都是看摘要筛选。在全国赛中或许还能看看,但在美国赛中只要第一轮通过摘要的筛选就可以获二等奖了。 0 J* T7 G B p9 s% } C5 {! b. u' S5 U8 s) F+ N3 F6 c
在摘要的写作中一定要花3个小时以上,反复修改,一定要修改修改再修改,修改个10几稿才能过关。在摘要中一定要突出方法,算法,结论,创新点,特色,不要有废话,一定要突出重点,让人一看就知道这篇论文是关于什么的,做了什么工作,用的什么方法,得到了什么效果,有什么创新和特色。一定要精悍,字字珠玑,闪闪发光,一看就被吸引。这样的摘要才是成功的。 # c" H$ @% j: u; n0 l6 y1 T, h 9 m6 O9 d, Y5 q+ x+ y5 R2 Z论文的主题部分也要修改修改再修改,当然主体部分的要求没有象摘要这么要求高了,但绝对不能马虎,用电脑的都知道,很容易打错别字,这个都是QQ或MSN 惹的“祸”,有的时候为了图方便在不影响理解的情况下别字满天飞,所以难免在写论文的时候不自觉的打错别字。所以首要是找错别字,第二就是要修改语句,理工科的学生在文学上的造诣都是有数的,大学后没有文学课,也不看文学刊物,有的读理工科还就是为了避开语文课,写出来的东西干巴巴的,除了名词和动词就没有什么了,难得见个形容词。因而修改语句很关键,一定要通顺,文采什么的到不要紧。此外逻辑一定要清楚,如果逻辑混乱那就出丑大了。在写论文当中一定要体现数学功底,要写的符合数学习惯。评论文的几乎都是数学工作者,绝大部分是教授,有没有数学功底一眼就撇的出来,其实这个我们也一样,经过二年数学训练后的学生写出来的 3 U/ R6 b! O$ I$ Z& B6 f f/ } 8 Q! Z% t8 h0 ^9 Z2 B' a6 ]+ z西多多少少都带有数学系出来的印记。顺带提下,编程最要用matlab,因为评委们普遍喜欢用matlab写的程序,虽然他们不看,就算看也看不懂,但是尽量迎合他们总不会错的。再者,用matlab写数学程序一般是数模的首选,最爱。在写论文的时候总要参考文献的,所以文献一定要整理好,并率先在参考文献中排好次) ^7 L1 c) l4 [
* H( H3 |& B T( d. Y* u
序,以免混乱,一旦乱了,那个麻烦大了,很痛苦的。并且在引用他人的地方一定要注明,这个是最起码的诚信问题了,引用他人多少东西不要紧,不要以为这个是抄袭,只要注明了就不是抄袭,当然不能整篇引用了,那样的话就真的是抄袭了,呵呵。4 _( ?) H! T5 D% b
- ]/ }! U) J& U: |: Y3 n3 r# ]
在论文写作中一定要注意能用图表的地方尽量用图表来表示,图表比用文字阐述要来的清楚直接。一张图表往往能代替一大段干巴巴文字。并且图文并茂多爽啊,要知道教授们大都年纪不小了,为了教授们的眼睛,减轻他们受文字的折磨多用图表绝对是不二的选择。同时这也是偷懒和使论文增色的不二选择。 5 n' H) m2 F9 l4 b0 X 9 N$ X: l+ H% B须注意的是图表的引用要规范,在交叉引用的时候一定要小心,不然会对不上就麻烦了。如果用word写,则强烈推荐看候捷大牛写的《word排版艺术》,对于这本书不详细介绍了,搜索下就出来了,是本不错的东西,牛人的作品啊,的美赛论文就用它给搞定的,很不错。 6 {3 C. Q% v( d6 q9 Y: ^! _+ |$ G ; L" t4 i* o. w5 Z) W5 T& r% T; P. I& D! c4 |9 ?4 k: B) S* o
+ X; a# i* [4 o+ l, e: Y
再附上个用Word编辑论文的几个建议(作者不详): * W5 r! W: m% D6 g# O7 x# y7 n ; V+ }$ Y1 @: i0 w( n9 i1 Z由于各方面的原因,大家主要还是用Microsoft Word (以下简称Word)编辑论文。Word在写科技论文方面虽然有一些先天不足,但却提供了非常强大的功能。如果不能充分利用这些功能,可能经常要为不断地调整格式而烦恼。我把自己以前使用Word的经验和教训总结一下,抛块砖。 7 p: p: O, p% x) M3 h ) a$ g% N2 s* Z. l5 F原则: 内容与表现分离5 m9 T" E; u( D% R) V$ `