2018数学建模国赛回顾(国一)

2018年数学建模国赛终于尘埃落定,第一次参赛,非常幸运地拿到了国一,在这里记录下这段难忘的经历,分享一些个人的看法心得。

其实严格来说,我从接触数模到参赛只有一个月左右的时间,我之所以能拿奖很大程度上要感谢两位认真负责、经验丰富的队友,当然我也绝不是一路躺过来的,我们每个人也付出了很大的努力。

作为计算机专业的,其实一开始并没有想到要参加这个比赛,甚至一度认为这比赛特别高大上,特别难,而我数学学得又不太好(虽然高数线代都是90+,但知道自己只是会做题而已),所以潜意识里有点不敢参加。但为了将来保研的时候能提高竞争力,就想拿个奖,听说数模含金量相对高一点,就开始关注起这个比赛。

后来阴差阳错地在老乡群里看他们聊数模比赛,也过去凑个热闹,认识了后来的队友。他们也恰好缺个编程的,就一拍即合组了队。

然后介绍下我们的队伍配置,我觉得是比较完美的阵容了。
队友A机械专业,负责建模
队友B应数专业,负责论文
我计算机专业,负责编程

其实我有看到那种三个都是理学院或者三个都是偏计算机或者信息专业的,我觉得这样不好(当然大佬除外),最好不同专业组合着来,各自发挥特长。如果让文案能力强的妹子来负责论文就更完美了哈哈哈哈。

当然这并不是意味着每个人只干一种活,首先自己负责的部分一定要保质保量地完成,然后最好对其他人的工作也能帮得上忙,毕竟大家是一个team。比如大家要一起讨论模型,一起找资料,一起改论文,配合默契很重要。
然后队友很放心地把所有编程工作都交给了我,这样他也可以专注建模不必多考虑其他因素,如果模型我觉得不能实现我也会告诉他。

接着讲讲我这次从准备到参赛的整个过程吧。我们学校是每年派出30+个队参赛,校内培训赛报名了90+队,所以还要刷人。不过两个队友已经有过一年多的数模经验了(队友拿过一次省一、美二),所以培训赛就是让我练手的。培训赛有八次题,前三题的时候我还在实验室实习,所以都是队友再弄,我水过。后五题是全程参与的,而且是按照国赛的时间点,三天一题,中间休息一天拿来讲评,那半个月还是挺累的。而且学校出了好几道大数据的题,有点押题的意思(虽然没压中2333),数据清洗痛不欲生T_T。最后学校根据八题得分排名选队伍参赛,其实我们培训赛做得并不好,所以参赛前还是有点慌慌的。后来也是赛前拿着论文去找老师,给我们指出一堆问题,主要还是在论文表述上的,模型解释不清等等。从培训赛结束到正式比赛的一周时间里,A整理各种常用模型,我看了一堆常用算法,备了些代码模板,B看了一堆历年的优秀论文,大家都卯足了劲冲国奖。

国赛那三天学校给包了一层宾馆,每个队一个房间,待遇真的很不错了。倒霉的是那天A的电脑居然坏了,开不了机,最后自己试了半天都不行,然后拿去店里修,那时候都已经放题了。然后我和B就在房间里看题找资料。
A题是隔热服,偏物理的,看了下第一题就是给了些数据,建一个回归模型,模型的建立需要查文献来确定,而第二题、第三题就是在此基础上的线性规划问题。这种题对第一题建模和计算的要求较高,也应该是有个固定的答案,如果没算对国奖的几率就很小了。

B题是RGV调度策略,典型的调度规划问题。第一题针对一道工序,第二题针对两道工序,第三题是在前面的基础上引入了故障情况,难度是越来越高的。由于A是机械专业的,有背景知识,而且A题感觉看了些文献也没有什么眉头,于是当晚十点我们就决定了做B题。

说实话这题刚开始觉得很复杂,因为小车移动、上下料、CNC车床加工零件都分别需要不同的时间,系统运行过程中会有各种时间差。第一晚我们查了些资料,一点钟左右就睡觉了,没熬夜。

第二题一大早起来就开始深入读题,一上午基本上把上下料这些的流程给弄清楚了,之前有过前车之鉴,如果题目没理解就开始动手,后面如果发现走错路就gg了。刚开始考虑当作TSP问题来做,作为线性规划问题用lingo来解,最后发现情况实在太复杂没法建模。之后也考虑过排队论,用遗传算法的思路来解,最后都否决了。所以第一天还是很痛苦的,搞了半天没啥头绪。在队友苦思冥想建模的时候,我就开始手工推算前几次的情况,看看能不能发现什么,最后还真发现,第一轮的时候当RGV给每个CNC上完料以后,第一台机子还在加工中,这段时间RGV根本动不了,而当第一台机子加工完成后,RGV过去换料,过程中其他车床也陆续完成了加工。可以这么认为,只需要对第一轮加工过程进行调度,后面都只是在重复第一轮,直到八个小时结束!但是这种做法并不妥,是迎合数据去的(CNC加工时间比RGV移动、上料的时间要多出一个数量级),不过倒是坚定了我之前的一个想法。

作为计算机专业出身,看到这题我第一反应就是操作系统的进程调度算法,FCFS、SJF、RR调度等等,如果能简化成一轮内的调度问题,那就相当简单了,代码也非常好写。但我之前有担心一个问题,就是"饥饿"问题,有可能会造成一个现象,就是在这种调度情况下,某台CNC永远处于闲置状态,然后CNC在其他几台车床间来回跑,这种情况是不符合实际的。但是明显这题的数据是给凑好的,不会造成这种现象。

最后我们采用了动态规划的思路来建模,初始阶段就是第一轮,通过搜索全排列四万多种组合,找出用时最短的一种方案作为起始,之后每一次调度都当作一个子问题,基于”最近距离先服务“的调度原则求解每个子问题,然后进行状态转移,以此类推。
思路定好以后,就开始了神奇的建模和编程分离的过程...因为我们都明白思路了,然后A开始造模型,写公式,我就用模拟仿真的形式去实现代码求解,解出答案填表格。

第二题两道工序更加复杂了,不过还是延用同样的思路,在此基础上假设CNC是严格按照第一道工序、第二道工序交替进行,来简化问题的复杂度(其实题目的意思也是如此)。然后A根据他的专业知识提出用生产节拍同步来计算两道工序刀具的配比。这题我是第二天晚上熬夜写完的,所以印象深刻哈哈哈。

第三题就是引入故障情况,我也没管队友模型咋建,按着自己的想法来写代码了。
最后做了个模型推广到多台RGV的情况,算是个小特色吧,为了拿国一有点小料。

晚上8点前先交了一波,然后开始改论文摘要,改排版,九点半交了终稿。然后吃了顿夜宵,美美的睡了一觉~

最后总结和分享一些备战国赛的经验吧:
1.参赛时间点:最好还是早点接触,第二次参赛和第一次参赛的简直就是天壤之别,我们学校拿国一的基本都是大二的。一年玩下来,这个比赛啥套路基本都摸清了,参赛就很有优势。如果是为了保研的话,大三参赛是来不及的,因为出成绩都11月了,保研早结束了。

2.关于队友:有大腿抱可以成长地非常快,但是抱大腿不是意味着躺,而且你得有一定的实力,大腿才会愿意带你。

3.学习资料:建模这块入门看姜启源的《数学模型》,其他的诸如《数学建模方法与应用》进阶也可以看,不过我是编程的,所以这块没怎么深入。算法这一块,去图书馆随便借几本MATLAB的书就行,入门的话可以看下中南大学的MATLAB的网课,还是很不错的。然后编程这块最好是计算机专业的同学来负责,学过数据结构、算法之类的课,不管是设计算法还是敲代码都很高效。 

4.多读优秀论文:组委会将历年评选出的优秀论文都公开出来了,可以去学习一下(重点还是在于结构、格式、模型表述等方面,毕竟内容需针对题型,但形式的规整和美观可以模仿) 历年国赛优秀论文

5.想拿国奖,切忌无脑套模型、算法,尤其是遗传算法、模拟退火、神经网络等等元启发式算法,除非很熟悉并且能够定制化地进行设计,否则不要轻易尝试,会被评委认为是“不懂装懂”、“套用模型”、“为了建模而建模”。

6.摘要是重中之重:一份论文20页,评委根本没时间细看,所以摘要要好好写,务必写满一页。还有要提的一点是,用语不要太口语化,要让评委觉得这像是一篇科研论文,而不是小学生作文,毕竟第一印象很重要。举个栗子,“带入数据发现,最好的策略就是按照这样的方案不断重复:XXX”这样的说法感觉就有点口语化,改成“代入数据,计算可得对于任一阶段的最优调度策略为XXX”读起来就显得书面化一点。最后,摘要最好能腾出三个小时以上的时间来写,大家一起读一起改,避免一些语句的语病、逻辑错误等等,不要因为语文不好而错失国奖。

7.坚持!如果要冲击国奖,意味着暑假的大部分时间都要投入到备赛当中,当别人还在享受暑假,旅游打游戏的时候,你要苦逼地练数模,这时候你要能抵制诱惑坚持下去,同时也要对自己充满信心。我们队在校内培训赛的时候,成绩也只是中等偏上,完全不是老师眼里冲击国一的种子队伍,但我们相互之间也常常鼓励,一有机会就找老师揪问题然后改进。所以我想说,尽人事听天命,越努力越幸运

最后附上本组源码:赛题程序源码(matlab)
然后本人也整理了一堆网上搜刮来的资料,各种模型、软件、代码、教程等等大概20个g,我自己备赛用的就是这些,需要的可以自取,下载地址: 数模资料  链接:https://pan.baidu.com/s/1zNwtnq0-PS8X211aP7nj-w 提取码:ry3p 

关于论文,因为一些原因暂时不方便公开出来,可以的时候我再放出来。现在回头看看其实写的一般,要模仿学习的话,建议还是看组委会公开出来的优秀论文,那些参考价值更大。

  • 112
    点赞
  • 349
    收藏
    觉得还不错? 一键收藏
  • 438
    评论
### 回答1: 数模国赛2018 A 题是四川省举办的一场赛事。本题为模型建立与求解题,要求参赛者通过建立数学模型解决实际问题。 首先,我们需要阅读题目并理解要求。根据题目,我们了解到有一座桥梁,汽车在桥上通行会产生共振。问题要求我们确定载重汽车通行桥梁时产生共振的速度范围。 其次,我们需要建立数学模型来解决这个问题。可以考虑使用机械振动的基础方程,和振动的耗散方程。我们可以建立汽车与桥梁之间的耦合振动方程,从而得到一个二阶微分方程。其中,载重汽车的质量、刚度以及阻尼系数,以及桥梁的长度、质量和刚度都是需要考虑的因素。 然后,我们需要求解数学模型。首先,要确定汽车和桥梁的初始条件,包括初始产生共振的速度范围。然后,我们可以利用数值模拟的方法,比如欧拉法或者四阶龙格-库塔法,来求解这个动力学方程。通过不断调整汽车的速度,我们可以得到桥梁的振动响应的频谱。 最后,我们需要分析结果并得出结论。根据求解得到的频谱图,我们可以确定载重汽车通行桥梁时产生共振的速度范围。共振速度范围的确定对于确保桥梁的安全运行非常重要。 总结起来,数模国赛2018 A 题是一个模型建立和求解的题目,要求参赛者通过建立数学模型解决桥梁共振问题。回答这个问题需要阅读和理解题目、建立数学模型、求解模型、分析结果,并得出结论。这个问题涉及到机械振动、动力学方程的求解,以及数值模拟等方面的知识。 ### 回答2: 数模国赛2018年的A题是关于网络信息流量最大化的问题。题目给出了一个有向图,节点代表网络中的用户,边代表用户之间的关系,并且每条边上还附带了一个数字表示该边上的信息流量。 我们的任务是选择一个起始节点,使得从该节点开始,经过若干条边后,能够最大化网络中的总信息流量。 解决这个问题的思路可以采用图的遍历算法,如深度优先搜索(DFS)或广度优先搜索(BFS)。以某个节点为起点,遍历所有可到达的节点,不断累计每条边上的信息流量,并记录最大值。 具体步骤如下: 1. 从某个节点开始,将当前节点标记为已访问。 2. 遍历当前节点的所有邻居节点(即当前节点的所有出边的另一端节点),如果该邻居节点未被访问过,则继续下一步;否则,跳过该邻居节点。 3. 将当前节点与邻居节点之间的边的信息流量累加到总信息流量上。将邻居节点设置为新的当前节点,继续执行第2步。 4. 如果没有可访问的邻居节点,回到上一个节点,继续执行第2步。 5. 当所有节点都被访问过时,得到的总信息流量即为最大的网络信息流量。 要注意的是,由于给出的是有向图,边的方向需要遵循题目的要求。在实现算法时,可以使用数据结构来存储节点的访问状态,记录已访问节点和待访问节点等信息。 综上所述,我们可以通过深度优先搜索或广度优先搜索算法来解决数模国赛2018年A题,并得到网络中的最大信息流量。这样的解答可以帮助我们理解题目要求,并为编写程序提供一个思路。 ### 回答3: 数模国赛2018A题是一个复杂的问题,需要综合运用数学建模、计算机算法和实际问题分析等多方面知识进行解答。由于篇幅限制,以下是该题的主要思路和解决方案。 题目要求设计一种城市交通路线优化方案,使得满足居民通勤需求的同时最大化交通效率。 首先,需要对交通网络进行建模。可以将城市划分为若干个交通网络节点,每个节点代表一个重要地点,比如公交站点或者交叉路口。然后,根据实际情况,得到各个节点之间的距离、道路容量等重要参数。 接下来,需要建立数学模型来描述交通流量和交通效率之间的关系。可以采用流体力学的思想,将交通流量视为液体在网络中的流动,通过建立交通流量守恒方程和流速-容量关系,来推导出交通网络的流量分布和交通效率。可以运用线性规划或者图论算法等方法对模型进行求解。 在优化方案中,还需要考虑居民通勤需求的满足程度。可以通过调整公交线路、设置换乘站点等方式来提高乘客的出行体验。同时,还可以考虑引入智能化调度系统,根据实时交通状况优化公交车的发车间隔和路线选择,以减少拥堵和提高交通效率。 最后,为了验证方案的有效性和稳定性,可以通过仿真实验来模拟不同交通流量和出行需求下的交通状况。通过对比不同方案的指标,如交通流量、通勤时间等指标,来评估方案的优劣。 综上所述,数模国赛2018A题需要综合运用数学建模、计算机算法和实际问题分析等多方面知识进行解答。通过建立数学模型、优化方案以及进行仿真实验等方法,可以找到一种有效的城市交通路线优化方案。
评论 438
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值