我从大一寒假的美赛开始做数模,当时做MCM复杂网络的题目,得了H奖。大二的时候参加了国赛没有得奖,美赛因为时间不合适没有参加。大三的时候得了校赛一等奖、国赛省一等奖和美赛M奖。大四参加了国赛,得了全国二等奖,目前正在准备美赛,也是最后一次参赛了,所以想借这个机会认真总结一下一路走来的经历和收获。 # H8 t3 b7 q, L 9 g& I) y, O1 T1.什么是数学建模 ; ?) Z8 j' k! f8 P1 N- z2 b/ } t8 z
数学建模是把一个实际问题,通过适当的假设和抽象,提炼成一个数学问题,并用合适的方法求解,最终得到合理结果的过程。- G: v6 t! |8 d( I
/ ] C/ J3 X* A- J1 Q% D最简单的例子是小学时候的应用题,比如航行问题:甲乙两地相距750千米,船从甲到乙顺水航行需30小时,从乙到甲逆水航行需50小时,问船的速度是多少? 我们首先要做出合理假设,假设船速和水速都是常数。然后用符号表示相关量,距离d>0千米,顺水a小时,逆水b小时(b≥a>0),未知量:x, y表示船速和水速(千米/小时,x>y≥0)。接着用物理定律(匀速运动的距离等于速度乘以时间)列出数学式子(二元一次方程)。接着进行求解和检验,带入原问题得知船的速度。 . B5 {3 X6 k. m& {5 ~) v+ B/ M" ]) C; y) p; r8 Y- y( \
这就是通过数学建模解决问题的过程。# M) i6 P% q: v5 P. M
! t6 g+ U# T1 [2.数学建模竞赛的一般流程! \$ Q7 S% _5 A- q
7 K6 S% J: z8 c; @数学建模竞赛要求三个人三到四天的时间解决一个实际问题,提交一篇论文。大体的步骤包括选题、查阅文献、确定模型、编程求解、写论文五个步骤。一般分工为建模、编程和写论文,但是不能太明确,每个人都应该参与每个步骤中,尤其是建模的时候,需要三个人的头脑风暴。编程求解以后,应该一个人主写论文,其他人补充结果、做结果图、示意图,辅助完成论文。论文完成后,要花足够的功夫写摘要,三个人一起讨论一起修改。 * b- \0 k$ l, L2 ]+ d f- S5 x% O; ~0 G2 \* \; J3.队伍组建原则 * A) N: @+ m5 c2 k+ ^+ o4 B4 Q9 y, ~1 E4 O% N0 P U' `
在我看来,标准的队员分布应该是一个理科生(数学或者物理专业),一个计算机或者相关电类工科学生(熟悉编程),另一个可以是文科生或者工科生。三个人中最好有一个是女生,女生建模编程可能稍差一点,但是写论文、画示意图时的细心和规范是比男生强很多。一个完美的数学建模过程应该是工科生的思维,理科生的方法,文科生的表达。 % V0 F T7 y$ h% z3 W) N% [ S* ~) r$ v! u) m' l' B4.基本问题和基本模型 5 h5 s8 {6 _* h7 c$ V: t/ m8 c3 [ - f5 S7 C) {2 T& `& x1 U基本问题有三类:优化问题,评价问题,预测问题。& u1 o. C6 M" u
C* g3 n" R& ?- A优化问题:优化问题是最经典的数模问题,但是据我的几次比赛经验,优化问题相对比较少,或者比较偏数学,选的人会比较少。主要用到的优化方法包括线性规划,整数规划,非线性规划等规划方法。把问题归结为规划问题求解也是科研中经常用到的方法,如果合理使用解决了问题是一件非常有成就感的事情。优化问题也可以用启发式算法求解,比如遗传算法、蚁群算法等,在解决调度问题等偏“算法”而不是偏“数学”的问题的时候使用比较多。 7 e# F6 [1 `5 Y5 I D( A1 O5 y& D M! ?! P8 E- }) b
评价问题:评价问题在比赛中出现得很多,一般前面一问对问题的各个因素进行评价,后面一问进行预测或者做其他研究。一般的方法包括层次分析法、模糊综合评价法、因子分析法等方法,但是我不太喜欢这样的题目,觉得评价类问题主观性相对较大,缺乏那种“解决问题”的美感(也可能是我境界太低,欢迎拍砖)。 " x! k8 S* @* w( S) h! ]* ?( H9 a* ?' j
预测问题:预测问题一般分两部分,一是对已有的数据进行分析,得到两个量之间的关系。二是对两者的进一步发展做出预测。第一部分是关键,主要用到的问题包括微分方程、回归、时间序列法、灰色系统法等,还有神经网络、SVM等机器学习的方法如果比较熟悉也可以用。 / @0 o" L) J2 B" B: w ) S' S& U7 a' {" k: Y) s6 ^4 s! V) X3 k这三类问题中,我个人比较喜欢偏“算法”类的优化问题以及预测问题,对偏“数学”的优化问题一般不敢选,评价问题往往无法避免但是一直做得不太满意,还请各位指导。 " S1 |: u9 P% q+ A0 ]& u3 ^5 j
5.关于创新点 2 z( _& c0 J& M+ \) ~! i; R/ z) z1 D$ Z9 r4 n, F) {! S- r
有所创新是比较难的,一旦有就是文章的一大亮点,但是通常“解决问题”才是最重要的,如果通过大量查阅文献发现以前已经有了很多研究,很多成熟的方法,或者说已经有了跟自己原始的想法相近的解决方法,那么就用文章里成熟的方法就行(这也说明了大量查阅文献的重要性,如果文献里有相近的思路,那么相比自己想会既快又好)。一定要记住“解决问题是第一位的”,不要盲目追求创新。创新点的主要来源应该是在自己以前有的研究经历或者学习经历中深入思考过的问题,争取能够巧妙得结合在一起。这样能做的比较顺利,也会很有成就感。 ( \7 t$ \" U0 y. M7 p" ?" Y * e: l, A( J* z$ J. z0 h" a2 d6.关于论文4 T0 {3 B1 Z8 q; X0 C) o/ M2 t
1 O& H& V. q5 A2 t. Y论文的几个主要部分:摘要、问题重述、假设、符号定义、模型建立、模型求解、灵敏度分析和优缺点分析。' X" t3 d' `) X
) v" i& X: H6 Q, X2 E摘要大家知道,非常非常重要,是评委首先关注的东西。要做到简练、准确、清晰,让评委能看清楚做了哪些东西,有什么亮点。2 O5 J+ w: T8 z
1 E9 w6 h6 N+ A& z \问题重述抄一下题目或者用自己的话表述一下都行,没人关注这一块。 : k. P$ E% S w$ e7 A' ?6 x; z5 x5 N' \. g% T d
假设很重要,是数学建模的精髓所在,要把一个实际问题进行抽象、简化,变成一个数学问题,假设部分就是这个抽象和简化的过程。一个最经典的假设是高中研究了很多的“质点”,任何一个东西都能归结成一个有质量的点,会大大有利于后面的研究。在数模比赛中的例子包括在交通建模中,我们可以假设只有一个车道,假设车辆大小相同,假设一段没有红绿灯的道路车辆匀速行驶,有红绿灯时车辆先匀减速、等待红灯、再匀加速,等等。假设的合理性直接决定了模型的合理性和难度。我的建议是模型假设一定要“大胆”,不要怕假设得太理想,尤其是当不使用文献中模型而是自己提模型的时候。如果觉得自己的模型太过简化,可以等后面再逐步提出扩展的、难度加深的模型,也可以留在结果分析的时候多说一点模型与现实之间的区别,如果说得好还可能成为一个亮点。 ( r- F2 E J. e: s, [& e( E" |0 C1 j
符号定义部分比较简单,但是要注意用三线表,要分布行,另外建议这里定义过的变量在模型中真正使用的时候再说明一次,方便评委阅读。7 V: \/ |& u! p" s w' l; y
. i* G) H2 p* B F- K模型建立和求解是主干部分了,几个建议,一是要小标题或者文章分段要清晰、明白,多分点叙述。二是多图多表,包括示意图、流程图和表达数据的曲线图等,这些图是评委在看模型的时候重点关注的。三是表达的逻辑性是很重要的,要首先想清楚自己的逻辑,然后写明白,要从一个旁观者的角度看看自己的表达能不能让人看懂。 ( S, U) v7 Y% T b + O! w! u3 Q2 \" o灵敏度分析,灵敏度分析是必不可少的一部分,据说有些评委会因为没有这一部分而直接拍死一篇论文。灵敏度分析要做的事情是微调模型中的参数,看最终结果是否会有较大的改变,改变的程度就称为模型对这个参数的灵敏度。比如在最开始的航行问题中,将参数a或者b微调1%,看看最终结果会改变多少。6 S6 p( s8 z; y5 H; h; `0 b
2 n# M+ ]! c+ \, _1 O
优缺点比较简单,要注意的是缺点可以大胆地写,不用担心,如果能切中要害在评委看来也是一个加分项。! t" d/ i$ `4 J8 u