整理一下个人见解,希望对大家带来帮助。
一个数学建模过程,包含模型假设、模型建立、模型求解、模型验证等过程。
一. 数学建模比赛的一般过程是:
1.组委会发布赛题。一般有3-5道题,每道题涉及的领域不同,侧重点和考察点不同,解决方法也不同,但难度一般相当(当然了,对于个人来说,每个人的兴趣点、专业领域和特长都不同,所以不同的题目对个人而言难度不同)。
2.选题目。三个人根据个人特长、专业领域以及查找到的文献,共同商议选哪个题目。
3.建模、编程。建立模型,设计算法,编程实现,得到结果,解决问题。
4.写论文。将建模和求解的整个过程用文字和数学语言表述出来,形成一篇数学建模论文,论文格式要遵守比赛要求,可以用Word写(但最终要转成PDF),也可以用LaTeX写(最后导出PDF形式)。
5.提交论文和附件。将论文命名成题目所要求的形式,比如“队号+队长姓名”。附件一般包含两部分,一部分是题目所要求的求解结果,例如Excel文件等。另一部分是解决问题所用到的代码的源程序文件。
6.评奖。组委会组织专家对论文进行评阅,分别对每个题目评选出奖项,一般有特等、一等、二等、三等、成功参赛奖等。不同题目的论文之间不存在竞争。
二. 数学建模怎么组队
数学建模是三人一组,大致分别负责模型、编程、论文。
1.负责模型的队员:
所需特长:数学知识充沛,涉猎广泛,逻辑思维强。
赛前任务:熟读各类经典数模模型和算法。
赛中任务:查文献,找模型,设计模型和算法,确定解题框架和思路。
2.负责编程的队员:
所需特长:编程大佬,尤其是MATLAB编程大佬。
赛前任务:掌握MATLAB常用语法和指令,熟悉经典建模算法的MATLAB实现。
赛中任务:将队友提出的算法用MATLAB或其他语言实现,得到结果。亦可用C/C++/Python等。
3.负责论文的队员:
所需特长:文字功底好,擅长把算法转化成论文语言,最好会用LaTeX,精通Word或LaTeX排版。
赛前任务:广泛阅读历届获奖论文,掌握语言风格和论文结构,最好掌握LaTeX用法。
赛中任务:将问题分析、队友的模型/算法、运算结果写成论文语言。
尽管三人有所分工,但三人的分工界限不能太明确,而要模糊,也就是模型、编程、论文既有人专攻,又一起合作,尤其是在查阅文献、找模型、设计算法的过程中,三个人要共同参与和完成。
三. 参加数学建模,应该准备什么?
1.课程:数学建模所需的基础课程有高等数学、线性代数、概率与统计。这些课程一般被安排在大一或者大二。所以不建议大一就参与数学建模,建议从大二开始接触学习数学建模,并在大二下学期开始参赛。
2.编程:参加数学建模时所用的编程语言非常多样,可以自己选择,只要能够得到结果、解决问题即可。大多数专业在大一时都会学习一门编程语言,一般是C或者C++,这两门语言在数学建模时完全可以使用,但他们是比较纯粹的编程语言,并不专门用于解决数学问题。在数学建模中,最常用的编程语言是MATLAB,它的名称是matrix(矩阵)和laboratory(实验室)两个词的组合,中文意思是矩阵工厂(矩阵实验室)。在MATLAB中,有许多现成的数学工具,与数学相关的函数极其丰富而且调用起来极其简单方便,尤其是处理矩阵特别方便,例如对矩阵求逆、矩阵相乘等操作,在MATLAB中用一条语句即可实现。目前,Python在数学建模中也非常常用。许多数学建模问题有可能需要用机器学习的方法来做,这时Python就是最契合的编程语言了。如果大一时只学过C/C++,而没有学过MATLAB/Python,没有关系。大一时对C/C++的学习,已经让我们掌握了编程的基本思想,学习到了“学习编程语言”的能力,所以可以非常快速地自学其他编程语言。
3.写作。在数学建模比赛中,最终需要提交的是一篇论文和附加材料(求解结果和代码源文件)。如果忽略附加材料的话,数学建模比赛作品的呈现形式就是一篇论文。所以,论文的措辞、结构、排版就非常重要。如果论文的语言不过关,即便模型和算法再优秀,也仍然会得到较低的分数。所以我们应该多看多学历年优秀获奖论文。学习它们的论文语言和排版,学会用数学语言表达思路,并且掌握Word或者LaTeX写建模论文的方法和流程。
白嫖历年优秀论文链接:https://pan.baidu.com/s/1uIyH-FBPS6hx7zttI9Bc1Q
提取码:pZ27 。
4.模型和算法。在大多数情况下,我们在数学建模比赛中用到的模型和算法是现成的,例如层次分析法、神经网络、遗传算法、生成树等等一些经典算法,或者我们在这些算法的基础上进行改进和组合,使之能够解决问题。因此,在赛前,我们要学习和熟悉常见算法。推荐大家阅读司守奎的《数学建模算法与应用》(它讲解了一些常见算法,并且附了MATLAB程序)以及姜启源的《数学模型》(以实际问题和模型为侧重点,更易上手)。(附图如下)
当然,也不一定非要在学习完各种模型算法后再参赛。很多时候,在比赛开始之后,我们根据题目,去现找模型、学算法。
四.数模常用算法
在下面整理了几个算法:1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。
2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。
3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。
4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。
5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。
6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。
7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。
8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。
9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。
10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。
五.建模论文写作技巧
一片完整的数学建模论文的组成:
1.摘要
评委老师在评审论文时,最先看到的就是摘要。因为,摘要要全面、简洁、准确地将论文的关键内容展现出来,包括模型、算法、结果。语言要简练,篇幅要适当,一般不超过一页。
2.问题重述
问题重述并不是将问题复制一遍放上,而是对问题的重新描述。首先,要对问题的背景进行介绍,可以适当地对解决问题的意义进行拔高。然后,可以对国内外的研究情况进行简要介绍。最后,将题目中的问题进行润色、精简、重新整理,重述到论文中,并且还可以清晰地将问题涉及的定义、关键数据、重要条件等内容做专门整理,还可以将文字形式的问题,转化成纯数学问题,用数学语言再重述一遍。
3.问题分析
在问题分析中,主要是对题目中的问题,逐一分析解题思路,阐述模型建立和求解的步骤,最好能画流程图。
4.问题假设
在这一部分中,要罗列出所需的假设。例如在飞机航线规划问题中,有可能需要假设飞机一直保持平飞,没有俯仰角。有些假设是题目中给出的,也要列上,还有一些是我们为了简化问题而额外列上的。不要害怕额外加假设,老师不会因为我们额外加假设而认为我们投机取巧,反而,合理的假设能够让问题的解决更加高效和合理。
5.符号说明
罗列出论文中出现的主要符号,并且解释符号的含义。
6.模型建立
依次针对每个问题,建立模型,写出模型或算法的详细步骤,主要以数学语言和数学公式来呈现。
7.模型求解
按照模型建立中设计的步骤,对模型进行求解,编程实现,并且得到结果。
8.模型验证/灵敏度分析
分析模型求解结果的优劣,对结果进行验证,分析一下结果对参数的改变是否敏感,模型的复杂度怎么样。若有时间,还可以将所设计模型与其他模型进行对比。
9.模型优缺点
对模型的优点和缺点进行罗列。不要害怕写缺点,也不要吝啬于写优点。
10.参考文献
罗列出文章中引用过的参考文献。
11.附录
在附录中列出因篇幅而不便于放在文章正文中的数据,以及源程序代码。
其中:
1.目录可有可无,具体也要看比赛要求。
2.以上的各部分并不是一定要全部包含,例如符号说明也可以没有,模型验证和模型优缺点也可以没有,但建议都有。
3.模型建立和模型求解可以合并为“模型建立和求解”。在模型建立/模型求解/模型建立和求解中,可以直接建立一个大模型,但一般情况下,题目中的每一个小问之间,差异可能较大,所以可以针对每一小问建立一个模型。
(2)论文语言
1.对于论文语言,可以参考曾经学过看过的数学类科目的课本的语言风格,也可以直接参考历年获奖论文的语言风格。
2.语言表达不能太口语化,一定要采用数学措辞,比如采用“不妨设”、“不失一般性”、“若”、“则”、“可表示为”等词语。
3.尽量用公式来表达问题,来代替繁琐的文字叙述。避免大段的文字叙述。
4.多用图和表来表达问题,尤其是看起来“很高级”的图,有些求解结果,能用图表表示的话,尽量用图表。
(3)论文排版
1.强烈建议负责写论文的同学在赛前学习LaTeX排版。学习时,不需要将LaTeX全部学会(如果能够全面掌握甚至精通,那当然更好,但可能会需要较长时间和精力),只需要掌握基本的操作、基本语句,知道在哪里去找各种数学符号的LaTeX表示,并且知道如何画表格和插入图片。转发集赞可得的资料中,有一份我当时用的LaTeX教程。
2.参加国赛或美赛时,最好能直接找到国赛或美赛的专用LaTeX模板(评论区领)比赛时直接套上。
3.比赛时,如果用LaTeX写,那么需要做表格时,把表格的LaTeX代码复制过来,再进行填充,主要要用三线表。要插入图片时,把插入图片的LaTeX代码复制过来,再进行填充。要输入公式时,需要哪个符号,就去LaTeX教程里查找这个符号对应的代码。
4.LaTeX可以对论文的标号、格式进行自动排版,更为美观。
5.如果用Word写,更为直观,但是需要对排版进行反复调整。
6.图片要居中,如果在一起的图片较多,可以一行两张图。图片的标题在图片下方。
7.表格也要居中,但不能太窄,也不能太宽,要用三线表。如果一个单元格内的内容太长,可能会让表格超出页面,这时候要么减少单元格内内容,要么在单元格内换行。表格的标题在图片上方。
以上就是我的一些经验和看法,希望对大家有所帮助。祝大家在数学建模比赛中都取得满意的成绩!