跳至主要內容

记 2021 UESTC 数学建模新生杯

CK...大约 12 分钟建模算法数学建模感念

记 2021 UESTC 数学建模新生杯

2021 数学建模新生杯落下帷幕,在两天半的头脑风暴后,我想把这一切,包括所想所感所学,全部记录下来,作为 CK's blogs 的一篇正式的博客。希望这是一个美好而有意义的记录。


准备比赛

电子科技大学的数学建模文化一直很浓厚,作为一个什么比赛都想试试的人来说,数学建模当然要参加。在第一学期已经很幸运地寻找到两位志同道合的队友,并成功参赛第一学期美赛模拟赛的基础上,我对这次新生杯比赛已经不再陌生,甚至会有一些期待。

期待比赛意味着必须要对这次比赛做好万足准备,对于这次新生杯比赛,有哪些做的好的地方,又有哪些需要改进的地方呢?做一个系统的总结在这时显得非常有必要,接下来,我将从准备与进行两方面展开我的想法。

建模准备

数学建模的核心当然是编程提前学习了解各大模型及其算法程序,这当然是一个数学建模人必修的功课,但在比赛前昔,我们可以粗略地浏览一遍各大类型模型,比如规划模型类、评价模型类、预测模型类如下图所示等等,

做到心中有数,拿到比赛题目时就可以直接划分题目大概属于哪一个个类型,在那个类型的模型中,再逐一去具体地找合适的模型。

在这里也列出我的一位校友学长的个人博客,这篇博客是我在比赛前昔查阅到的,这篇博客以至于这位学长的其他博客深深震撼、惊艳了我,因此这也成为了我开发个人博客的源动力,这篇数学建模模型总结也具有相当高的质量,下面这篇博客也正是这位学长的:

geminiplanet.cnopen in new window


编程准备

编程想要速成是很难的,能做的可能只有祈祷模型所需要的求解算法已经有很多前人做好了轮子。但依然可以找到所谓的“算法程序包”,抱歉这里不方便列出,但会熟练地使用程序包是意义不大的,因为就像本次比赛一样,在原有的算法基础上,题目条件偏偏要给你改变一下,要你不得不修改或者重新编写自己的程序。这就要靠长久的学习和积累。说实话,这也是我想要努力提升自己的一方面。正式比赛前的准备依然可以从各大算法开始着手了解。


写作准备

我至今都相信,建模编程占五分,写作一家就占五分,可能会更多,一篇好的模型,倘若写的稀巴烂也没有任何意义,但是一个连自己都无法说服的模型,只要写作手能圆好,一样有可能可以受到青睐。

“我能把正的忽悠邪了,能把奸人忽悠苶了,小两口过的挺好,我给他忽悠分别了。今天卖拐,一双好腿我能给他忽悠瘸了”

而对于比赛前写作的准备,我认为首先需要提前清楚待参加数学建模比赛类别(如国赛、美赛)及其写作要求,并做好或找到 LaTeX 模板准备,对于LaTeX 模板,可以去 GitHub (需要科学上网)上寻找,在这里列出本次新生杯所用的国赛模板 GitHub 地址:

GitHub 上国赛 LaTeX模板open in new window

拿到 LaTeX 模板,clone 到本地后一定要在自己的编译器上做好调试,出现了任何问题都有时间及时解决,不能把比赛的宝贵时间浪费在无用的调试 LaTeX 代码上,这肯定是没有意义的。一般提供的模板是以模板使用说明的方式提供的,所以需要备份两份,一份作为使用说明,一份准备套入写作模板。

本次比赛就在这方面尝到了甜头,一路写下来非常顺利,即使我已经很久没有用过 LaTeX 了!

除了对模板的准备外,写作格式需要有所约束,我在比赛前一天,研究了一下历年来的国赛一等奖论文,尤其是被我们学校数模教练推荐的获奖论文,从这些论文里,你发现一定可以提炼出一套写作模板。在正式比赛当中也可以随题目小做修改。下面是这次的写作格式模板:

  \section{问题重述}
  	\subsection{问题背景}
  	\subsection{问题要求}
\section{问题分析}
  \section{名词的解释与变量符号说明}
  	\subsection{名词解释}
  	\subsection{变量符号说明}
  \section{模型的建立与求解}
  	\subsection{XXX模型}
  		\subsubsection{XXX模型的建立}
  		\subsubsection{XXX模型的求解}
  	\subsection{XXX模型}
  		\subsubsection{XXX模型的建立}
  		\subsubsection{XXX模型的求解}
  \section{模型检验}
  \section{模型评价}
  	\subsection{模型优点}
  	\subsection{模型缺点}
  	\subsection{模型改进}
  \section{参考文献与引用}

进行比赛

1. 读清题意

在本次比赛的过程中,我认为我们所犯的最严重的错误便是没有一开始确定自己理解的题意,当题目概念众多且陌生,条件纷纭变换,题目中的每一个关键的词都有可能影响对题目的判断。

负载能力、处理能力、阈值、任务属性消耗因子、风险因子。。。

最可怕的当是,三个人有三个对题目的理解,有三个不同的概念解释,这是恐怖的,这当然也是绝对不可行的。所以当题目发布后,第一时间组内统一题目理解,统一概念解释是非常有必要的。而在正式建模的过程中需要对题目概念理解做出改变的时候,再统一改变也不迟。

  • 读清题目变量概念

负载能力、处理能力、阈值、任务属性消耗因子、风险因子、消减因子。。。

  • 读清题目约束条件

“部分特殊任务”到达阈值时将对工作台负载能力造成一个常数的消减

  • 读清题目所问问题

2. 查阅资料

除了扎实的数学功底外,数学建模同样需要的一项重要的能力便是信息检索和数据收集能力。反应到正式的比赛中,我认为能够查询到合适、相关的论文,也是致胜的一个关键。

论文搜集必备网站(UESTC 学生入口:)

  • 国内:

中国知网 CNKIopen in new window

万方数据知识服务平台open in new window

维普智立方知识资源服务平台open in new window

  • 国外:

Science Directopen in new window

SCIopen in new window

国外学位论文中国集团全文检索平台open in new window

ACM digital Libraryopen in new window

非 UESTC 学生用户需要具体前往各大官方网站查阅相关资料

数学建模组内另建资料群显得尤为重要,发题后三位组员开始在各大资源网站疯狂寻找相关论文,并总结发送在资料群内,我相信肯定有一篇能为你的建模或算法提供灵感。

3. 抽象的模型

其实我一直把握不准一篇数学建模论文中抽象与具体的平衡关系,但我内心深处是向往抽象的数学符号,而不是一串串相对丑陋的具体的阿拉伯数字。但我确定的是,在建模的过程中,模型的建立与表达一定是用抽象的数学语言来展示。这除了需要我们了解众多模型的核心内涵,并通过题目条件套入其中外,针对这次比赛,我还想谈谈其他的细节。

模型假设

模型的建立往往少不了对一些相关条件的假设,而在这次与上次比赛中,条件的假设往往是我们所忽略的或者不重视的,条件统一的假设不仅有助于我们简化和统一模型条件,也让模型的建立更加合理。所以,需要我们尽可能的去考虑周全问题的所有条件,在必要之时,做出问题假设。

符号说明

抽象意味着将具体的量用抽象的符号来表示,而在变量纷纭复杂的情况下,如何用符号去代表变量,这是一个问题。

在比赛的过程中,模型建立时一个又一个变量,让我巴不得 a,b,c,d 这样轮流用下去,但这肯定是不合适的,我尝试在网上寻找答案,好像也没有所谓的规定,那该如何定义符号量的数学意义呢?我觉得需要正确把握人们的习惯性思维对称性原则,比如 iijjkk 就是常用于角标量作为计数,而 μ\muλ\lambda ,等希腊字母常做系数常数。但更重要的是,自己定义的变量需要牢牢记在自己的脑海里,绝对不能在写作的过程中把他们搞得凌乱不堪。另外同一个符号不能拥有多层含义,符号含义应当区分开来并在正式建立模型之前交代清楚。

模型的检验与评价

模型的建立是一篇论文的高潮,但模型的检验和评价一样不能被忽略或轻视。本次比赛中,我们采用具体实例的模型检验 是否可行有待商榷 ,但据张神马之言,模型的检验需要大家公认的方法,具体的模型有着相应的检验方式。而在模型的评价过程中,一定要控制模型的优势多余模型的劣势,并且尽量说明模型的劣势为难以操控的不可抗因素。

4. 具体的编程

最快捷的编程方法是“Ctrl + C,Ctrl + A, Ctrl + V 一键三连!”。

第一时间寻找成品代码固然没错,但此次比赛也让我发现了这样做的一些弊端。首先,网络上的代码成品层次不齐,并不是每一个都很有效,代码中也会出现莫名其妙的 Bug ,最重要的是代码成品不一定适合你将要做的问题,这往往需要你做出改变。

值得反思的是,在第一天模型建立成功的晚上,我几乎浪费了一晚上的时间去寻找成品代码,却坚信题目要求难以编程实现。而在第二天早上,清醒头脑再看待这个问题时,发现其实编程实现是可行的并成功实现。—— 这就是一昧相信三连大法造成的惰性!

有时真正难以实现的部分,可以通过两个方法去解决:

  1. 修改模型
  2. 牺牲功能

修改模型,需要与模型手商量,削弱部门模型条件,让编程实现变得可行。但在保证编程功能可以满足大部分条件的情况下,我认为完全可以牺牲编程代码的部分功能,因为美赛和校内赛是不要求提供代码的(doge)。当然,这适用于自建模型并自建实例,对于提供数据的赛题而言,还是需要尽可能实现代码功能。而我想强调的是,不要过于依赖各大网站的代码成品,而更应该自己去动手敲!

5. 纠结的写作

在前期 LaTeX 的准备后,写作的过程只是一个仅需要关注写作内容而非写作格式的过程,而写作内容,我认为是纠结的过程,推敲 应当是常态。对于我们小组这样先分写再合并的过程,虽提高了写作效率,减轻了写作压力,但缺点也是显然易见的。首先是写作风格不统一,用词不统一。例如我习惯以“本文”代第一人称,而另外两位队友习惯以“我们”代第一人称。所以,这就需要合并文章时统一写作用词,统一写作风格。再精益求精一些,需要注意标点符号的统一与字母、符号、数字的准确。

演算寰宇方寸间,运筹万物帷幄中!

小时候,总是调侃自己学的数学只能用在买菜上,而数学建模却真正是让你的数学知识转换为应对生活实际问题的过程,这个过程是美妙的,也是神奇的,希望各位数模人能一直保持对数模的这一份热爱和追求!!!