时间过了这么久,依然想写写自己对于这次国赛的一些感悟,毕竟也是第一次参加这种有点含金量的比赛。全国大学生数学建模官网上写着“一次参赛,终生受益!”这么一句标语,确实写了有快大半年的数模论文,作为半个建模人,在比赛的历练中也学到了很多,像Latex排版,因子分析,大数据处理等看起来高深的方法,也略有掌握。但身为大二的萌新,三个计算机学院的愣头青,就凭着一股满腔的热情,连数学建模这本书页没看过的人,在大佬林立的大三学长面前,不免感到有点捉襟见肘,面对浩瀚的数模知识库,感到自己是如此渺小。面对暑期培训一题一题题目的狂轰乱炸,不断的上知网查文献,与队友不定期的集中讨论,思考,分析,本着走一步再走一步的原则,靠着我们才大二本来就不如大三的心态,坚持着将题目做完,也很感谢我的队友陪我一起坚持下来。
数模培训阶段
当初报名暑期培训的时候,也是想暑假反正在家也没什么事,还不如来学校学点自己感兴趣的知识,就找了两个队友一起报名组队。培训分为两个阶段,第一阶段为7月15日~8月4日,每7天一题共3题,我们安排的地点是自己在家里做,安排的方式基本是题目出来那一晚晚上连麦对题目进行讨论,之后开始上网查找相关资料,第二天晚上继续讨论,由于我们队全都是计算机学院的,对于数学建模这方面的知识比较薄弱,且不在一起写的局限性,对于题目上下关联不大的,我们更多的是安排分题写,这样虽然质量不太高,但每个人基本能了解自己的思路,多线程推进,也加快了完成论文的速率。由于是在家里写的,这期间还要忙着学车,并没有对数模下太大的功夫,基本只是把自己写的这问写完,更别说达到写出色的水平,也还是怪自己太菜,遇到概率论的知识就不会了,好在网上有知识可以现学现抄。分开写时,我们多采用的是WPS多人协同编辑,排版很难统一,且数学公式的复杂,在Word中也很难美观的展示出来。这也使得我们前几篇的论文只有2分,1分(共5分),格式是一个很大的问题,这个在第二阶段有所改进。由于缺乏所需的知识,论文水平只能停留在初级阶段的水平,前期连数学建模,这个建模是什么意思都没搞懂(不知道萌新是否都是这种想法),真是废物啊。好在最后通过互相协作,将第一阶段的论文都提交成功。
8月4日,从家出发去学校,进行第二阶段的培训,第二阶段从8月5日~8月27日,每四天一篇论文,共5篇论文,这阶段还安排了报告讲座,在每写完一篇论文后。5日开始第一次讲座,前一小时讲了些排队论的知识,听的迷迷糊糊,啥也不会的感觉,后面讲了一些数模培训的安排,从总共报名的队伍中选取32支队伍代表学校参加国赛,作为菜鸡的我们顿感压力山大,也曾考虑是否经过这两月的努力,没被选上,努力白白浪费,毕竟是优胜劣汰,总有人要没被选上,可还是不希望是自己,哎,人总是这么的功利心,也就只能边写边看了。讲座的期间,第二阶段的第一题也发布了,我们在当天下午两点便安排集中讨论题目,总共有5小题,只给4天的时间写,确实有点紧迫,好在大家面对面的讨论,效率有所提高。第一题是有关仓内拣货的问题,相当于是个TSP问题(当时第一次听说这个方法),好在我们找到了相关资料,最后抄了手蚁群算法的代码,对问题基本进行了求解,对于其他几问也基本上在交卷前两小时赶着完成了。这期间我们在论文处理方式上也完成了蜕变,从Word到Latex的转变,只能说Latex写出来的论文,即使论文质量不高,但版面还是让人看着很舒心。数学建模的小组分工基本是一名建模手,一名论文手,一名编程手,由于我们队伍的特殊性,建模方面的知识缺失,并没有很好的合理安排分工,好在通过后面几篇论文的写作,队友之间相互了解,配合也越来越默契,基本可以弥补这样的不足。第二次报告讲座的时候,老师特意讲了下,现在的队伍从原来的60多支只剩下38支队伍(由于培训规定,一旦有一题题目未提交,就判定为退出培训,不予以比赛资格)。当时心想感谢自己坚持下来了,没有半途而废,离自己的目标又近了一步,可还是有机会被筛选出局,只能继续努力了啊。讲座后面有要求队伍上去分享自己的论文报告,由于没什么队伍上去,老师会随机抽队伍(这我们怕了啊,想想自己的论文水平,也就只想混个分,最后能参加个国赛试试水而已,没想到挑战这么大),只能感谢老天眷顾了我们四次讲座一次都没抽到(感觉当时要是被抽到,肯定抵挡不住底下老师的疯狂输出)。期间一次老师讲了有关因子分析的知识,刚好在做一道题的时候,查阅资料发现可以用因子分析去回答,便花了个晚上学习了下(SPSS软件可以直接进行因子分析,直呼NB),在不懂方法原理时,通过直接学习SPSS软件的使用,依然可以得到我需要的数据,这个方法也被我们用到了国赛上(只能说当时自己也只会用这种方法)。在写一题的时候,也用到了机器学习的知识,当时队友学了一手,抄了手代码(没想到国赛也用到了,只能说幸运)。最后坚持着五篇论文写完,我们也基本保持每篇2分的水平,菜是真的菜啊,不过才大二,我们还有时间。最后也就是最紧张的时候,等待自己有没有被选上,队伍总共15分,可能幸运是留给努力的人吧(很感谢剩下六组把机会让给我们),我们以第32名垫底被选上。后面培训结束,基本没什么事,大家自己学学知识,后面又发布了一题,练练手,也没仔细写,等着9月10日的比赛。。。
比赛阶段
9月10日晚
由于学校为了给各队一个相对安静且舒适的环境比赛,全校队伍被安排入住到一个宾馆(这也算白嫖了四夜三晚的宾馆啊),9月10日中午出发,下午到达宾馆,到房间后,第一步肯定是配置环境,确保所有万无一失了,就等着晚上六点比赛发题。晚上六点时间到,果然官网卡的一批,好不容易下载了,速度却慢的要死(可能是当时用宾馆的网的原因,后面都改流量了)。快7点了,题目基本上下下来。首先大家先各自看题,A题是炉温曲线,一道工业相关的问题,大概是考虑产品加工,设备温度控制的题目;B题是穿越沙漠题,当我看到完这题后,觉得这题非常有意思,大概就是设计一个游戏,寻找最优方案;C题就是常规的中小型企业信贷决策,一个银行对于企业的贷款问题,之前培训时有做过类似(无人车承运之类的),题目只有三问,一看就是大数据处理题,附件给的数据也就100多万行。然后进行讨论,对于A题我们稍微看了些,分析了下,发现我们队没有一个物理系的,直接一个热传递公式就把我们难住了,上网查资料,一堆难懂的数学推导公式,搞得人头大,没分析多久就放弃了。B题确实有趣,但问题要考虑的因素太多,每一问都层层递进,且计算最优路径,答案唯一,万一算错基本凉凉,且涉及到一些图论的知识,又到了我们队伍的知识盲区,想了想也放弃了。那就只能C题数据处理,C题其实也是最适合我们的,不需要繁琐的数学公式,只需对数据进行分析处理,这Python跑跑,岂不是我们强项。由于第一次参赛(且并没有抱着拿国一的心态,其实是自己真的菜),思想上没有很紧张,三个人稍微对题目进行分析,网上查了查资料,(之前也打算第一晚就确定题目,这失算了啊,后面几天累成狗),就出去散步了。。。晚上回来看看资料,稍微讨论了下,秉着第一晚不熬夜的心态,早早的11点就睡了。
9月11日
比赛期间一定要保持良好的作息,所以定了早上七点的闹钟,吃完早饭,回来讨论基本上就八点了,第一次打比赛,大家思想上都没太集中,甚至一个早上在知网上查资料,稍微对第一问进行讨论,讨论第一问数据要怎么处理,一个早上没有什么进展,中午吃完饭,甚至还睡了会。到下午紧张感突然到来,时间过半任务要过半,然而我们却没什么进展。下午大家开始动手,首先附件给的数据为企业代号,发票号码,开票日期,销方单位代号,金额,税额 ,价税合计,发票状态。我们首先对数据进行预处理,这由我们的编程手开始对数据进行删减,最终我们得到企业代号,17-19全部的净利润,19年的进项交易次数,19年的销项交易的次数,20年的未分配利润,19年的未分配利润,18年的未分配利润,17年的未分配利润,16年的未分配利润,三年进项金额,信誉评级,是否违规,2017-2019总体税率情况 2019作废票占比,2019进项作废的支票,2019消项作废的支票,2019年进项负数发票占比,2019年进项负数发票的数量这几个指标,我对于他们处理的数据进行比对(期间确实发现有些数据代码跑错了,只能说数据量太大)。把附件的数据进行预处理,得到我们所要的数据时,发现指标还是太多了,所以我们就用因子分析去做(暑假幸好学了一手),最后得到5个指标来评价一个企业的信贷信誉分别为营运能力、发展能力、信誉能力、偿债能力、盈利能力,之后通过因子打分对企业进行排名,完成这些基本到晚上,但我们对于信贷策略模型依旧没什么想法,晚上一直查资料,也没查到相关文献,很烦躁,时间过了一天,第一问还没解决,晚上我们几乎干到了两点,效率有所下降,有点撑不住,决定还是睡了。
9月12日
也是常规的7点起床,吃完早饭8点左右,开始对于信贷策略模型进行查资料,分析,10点左右队友说要不用正态分布吧(当时概率论还没学,就全网上查资料)实在太缺乏知识了只能说,想了个正态分布来对企业进行贷款(但凡有点数模基础的可能也不会这么写,但无知可能就是最大的创新了)。之后就是动手对数据进行分析,贷款策略的给出,基本到中午结束了第一问。第二问是第一问的拓展,基本与第一问类似,吃完午饭,回来立马干活。第二问缺乏企业信贷等级,因此我们考虑用机器学习(对第一问数据学习得出信贷等级,暑假学到了又派上用场了),可能这也是我们论文的亮点,完成了信誉等级后,就是第一问的常规操作,一直到晚上七八点结束,也算时间有点赶上。晚上开始对第三问进行分析,查资料,队友查到类似的论文,他开始对论文进行阅读,而我和另一个队友,打算对企业的行业进行分类,由于不会Python关键字筛选行业,只能手动进行分类(幸好只有302家企业我和队友分工进行)。阅读论文的队友基本能看懂方法(后来知道为层次分析法,当我后来学会后,只能说自己太菜了),但还有点问题,不过基本能进行下去,1点多队友有点撑不住,我还精神,他们先睡了,我就对已经写好论文进行细看,查找其中的错误,需要改进的地方,记录下来,等明天处理,大概也是两点左右,我也睡了。
9月13日
基操7点起床,8点左右开始干活,这次只剩下那个层次分析法还有点问题,我和那个队友就进行讨论,给出解决方案,另一个队友也开始对论文进行复查。10点左右我们的问题解决,思路基本清楚,接下来只剩下写。吃午饭大概12点多了,回来后就进行对剩下部分写作,以及之前论文中的问题进行修正,论文摘要,分析和优缺点也是那时候补上的,过程中也加入了每一问的思路流程图。四点的时候只剩下摘要(由我来负责写),大概六点钟完成了论文的写作,进行大雅查重,发现为15%点多(惊了,明明全自己写的,后来查到是数据,代码重太多了,这能怪我们???),老师说论文大雅不要超过10%,8点前交卷,之间就很紧张,一直在降重复率,可很多关键性数据是不能改的,头大啊,之后降到12%点多,改不了了,7点20几交了论文,得到MD5码。只能大呼一声结束了,也算认真写了三天吧。晚上老师没安排,和队友去城区散步吃东西了(后来才记起当时降重复率,刚好卡在饭点,晚饭都没吃,真就废寝忘食)。那天晚上感觉很轻松,和队友在城区街道走走聊聊,吹吹9月夜晚的凉风,看着都市的繁华,街道车辆呼啸而过,很是一种特殊的感觉。。。。
9月14日早上9点启程回校,坐在等待的大巴上,看着酒店的大门,感叹:唉,爷的第一次数模就这样结束了!!!
很惊讶最终得了个省二,对于我们这种菜鸡队伍,本来目标是拿个省三,能拿个省二也是对自己这一个暑假付出的回报吧。。。