数学建模学习体验

综述

更新记录
2017/10/12 与一位朋友交流记录
2019/04/19 反思与更改
2019/05/12 补充:如何阅读往年优秀论文
2019/11/22 补充

建模心得

我的建模路

小的成绩

2019国赛国一 together with Liu & Xu
2019美赛M together with Jiang & Zhou
2018美赛M together with Liu & Cui
2018国赛国一+优秀论文 together with Liu & Cui

常见问题

  1. 数学建模从入门到参赛,需要投入多少精力进行准备,三人需要分工的话,需要各自向哪些方面努力;
  2. 数学模型包括离散模型、稳定性模型等好多种类,是否需要每个都进行深入研究,竞赛或测验时是自己选题目类型还是随机决定?
  3. 需要哪些数学方面的基础?教材推荐?
  4. 学习数学建模最应该侧重的是哪方面,是多学习理论,还是多侧重直接实践?
  5. Matlab等软件方面是最好在准备期间自学还是直接拉有经验的同学组队?
  6. 信息搜索等方面,是否需要准备VPN,哪种搜索引擎最好用?

回答

  • 美赛与国赛不同。国赛的话要冲国奖如果建模手的话除非遇到了本专业的专业题目一般来说是两年(一年实在有点不太现实,paper writing都不一定搞得定)。美赛的话,如果你的想法很奇妙,而且也确实自圆其说,并且论文写作很好的话,可以冲o的。但是一般来说比较困难,因为很多“美妙”的模型的建立一般都是要有一定的经验的建模手可以搞出来,当然对于本身有天赋的可能例外。
    必须有一个论文写好的,而且学术英语要比较好,我们那年就是摘要写的不好,摘要不好直接没人看论文的。有人会找英语专业的学生,但是注意,你一定要确保沟通与表达,否则写出来很怪,当然也有人选择是生科,材料,电气,物理——他们英文写作也不错!(CS的英文写作也很不错啊!!!
    论文的写作需要学习一段时间,如何引用文献、如何设置符号、编辑器的选取之类的。
    有人使用latex,有人是word;我更喜欢latex。

  • 国赛一般要求有具体的结果,也就意味着,编程手应当必须完成程序设计并给出正确答案。但是美赛可以给不出答案,我们老师说有过没给出答案但是拿M的。这也就意味着某些问题的确切答案可以不给出。这里不是说我们可以以“不给出确切结果”为目的而只空建模。而是说,强调了我们“模型”的思路和想法,不必过分追求答案多么好。事实上,仔细观察会发现,美赛有人给出的模型中会出现一些np-hard问题,这种问题本身就基本拿不到最优解(当然也有可能,只是时间问题罢了),合适的时间内只有满意解——好的满意解也不错啊。或者像前些年那个飞机场排队论问题,也不是简单的服从泊松分布的单服务台排队问题,而是多个服务台,此外,加之每个人的服务时间不同,还有随机事件,所以一般性的排队论我觉得也很难出彩。这样的话即使编程给出了结果也没有什么太大意义——模型本身就很naive。这也就意味着美赛注重思想,编程手的任务出去一般的模型实现外,更多的是帮助建模,或者说仿真模拟,比如去年的b题。我看到学长使用的vissim进行模拟。从而帮助建立模型或者验证模型。当然我说的模型实现强调实现模型并给出模型的解。
    如果强调分工的话我们的做法是:一个人主笔论文,一个编程和辅助建模,一个人主力建模和推导。

  • 关键看题目是否对口。比如出了一个偏物理的连续性问题,这时候肯定是队伍里有物理学院的吃香,比如某年国赛b题,肯定是计量经济学或者说统计学的吃香,千万不要忽视这一点!我们队伍起步较早,早期主攻评价问题,后来主做优化类问题,特别地,选址优化。数学建模内容太多了。全部精通很难,一般都是选几个自己队伍擅长的方向或者说感兴趣的方向。然后看看历年的命题趋势。我们一般是老师给我们提问题我们然后自己就去研究了。

  • 学习过程
    书籍:山东大学刘保东老师的建模教材,看完才算入门;然后看一下司老师的那本黄皮书《数学建模方法与应用》(《matlab在数学模型中的应用》 进阶级 );然后是看一些老师的模范论文、以及队伍的获奖论文,这些都在网路上可以找到。多刷题也很重要!

关于如何阅读建模论文?答:1.学习他的建模方法。看他的方法你见过吗?比如:有人用元胞自动机模拟交通,那么什么是元胞自动机?数学形式是什么?适用的问题情况是啥?有啥特点?如何编程?如何针对不同问题给出编程设计方案?求解的质量如何?求解效率如何?2.学习他的写作组织技巧,如何写作?如何表述,基本上看上十几篇你会了然的。3.他的技巧,比如如何进行参数识别?如何处理数据(数据驱动类题目):标准化、归一化等等、优化模型的参数连续化处理等等4.他的漏洞。一定有的,而且有些建模论文漏洞非常大,也一点要避免误入歧途。更重要的,感知不同题目大概是需要什么样的模型?这一点非常重要,这决定了你在真正比赛时候,反映的速度和准确度。比如你练习了很多、思考了很多。那么你建模拿到一个题目,你就知道大概是一个什么的建模思路,避免“这个题目好像用评价类思路可以搞”、“优化类题目可以搞”、“这个方法好像可以”、“那个也不错”这样的迷惘。

对于学习历程:以我自身为例,从大一下开始:
早期:先学习微分方程,这里主要是一个典型的根据人口、传染病建立的模型。
然后学习概率论,并跟着一些数据挖掘的书学习数据处理。然后研究的评价性问题,我关注的是:topsis方法,熵权法等等,我个人认为,从确定的角度来看,建模里面不要用涉及隶属读函数或者层次分析这样的方法,对于隶属度而言很多时候,选取权重或者说隶属度函数(初学者主要是用偏大(小)型柯西分布)的理由很难给出来——涉及偏好和取向。然后学习的图论(当时是刚好离散学到了所以就直接搞了搞),所有涉及图论的问题对编程要求都较高——不要指望matlab提供的那些封装方法,他们往往都不够用。
后来:微分方程部分边值问题往往比较重要,所以可以阅读《微分方程及其边值问题》(好像是那本书)知道基本的处理方法,并记录里面的一些模型,然后是对流扩散方程(这个在国赛里面比较重要,主要是偏微分)。然后是统计里面的主成分分析,聚类,k均值等等,然后是支持向量机,后来是蚁群,模拟退火和遗传算法(GA是我到目前为止学习、训练比较多的算法)。其中我大一暑期是重点研究遗传算法。一般性的遗传算法不涉及小种群问题、防止乱伦机制等等此外遗传算法——或者说是所有的启发式算法最重要的是参数的设计!以及一些标定函数的选取,你会发现有了启发式算法你几乎就神了!但是这个需要慎用,不然容易出事,建模课老师强调不要滥用启发式算法。我是暑假学的lingo,我以前是用的matlab,但是发现每次都要标准化方程,很麻烦,所以才用的lingo。但是从灵活性而言还是最爱MATLAB。

  • 没有理论几乎无法实践。有了理论没有建模思维也不行,因为这不是编程大赛,只给出结果的话是不被看好的。手中有一万种方法没有给出模型也不行。先从基础打起——理论,然后再学习如何使用它们,如何把建立好的模型。就可以了。
  • 计算机专业与数学专业最好自学matlab,Matlab 的作用不止限于建模比赛,在机器学习(当我没说),仿真模拟等很多科学计算领域都很重要!如果你matlab只是入门的话,建议找matlab比较好的队友,因为matlab也好lingo也好需要积淀。
  • 我觉得国赛的话中国知网,美赛google学术可以,翻译的话使用google翻译。

2019国赛:最后一次国赛了,有点遗憾,比赛和其他一些紧急的事情冲突了,分散了很大精力。所以做得并没有达到自己的目标。只能说是遗憾吧,或许也是命运的安排。只是心中对于那些对我们最大付出、最大期待的老师以及并肩作战的队友还是十分愧疚和亏欠的。

你可能感兴趣的:(数学,数学建模)