2018华为软件精英挑战赛体会

2018华为软件精英挑战赛体会(附代码参考)


从2月末了解到这个比赛到4月15好初赛正式比赛已经过去了一个多月,期间穿插了几个面试,虽然最后比赛失利,略显遗憾,但这个比赛还是很有意思的,有兴趣的可以参加,这篇博文就大致谈一下参赛经历。

比赛介绍

18年华为软件精英挑战赛没有复活赛,从3月9号官方放题到4月13日晚10点为初赛训练赛,4月14到15日中午12点正式比赛。初赛安排大致就是这样。

再来说一下我们队员,一位matlab和建模大神(这哥们可以一个人用matlab把整套流程都实现),一位c/c++操作炫的飞起的负责代码框架搭建,剩下的就是我这个渣渣队长负责算法代码编写。

官方3月9号放出的题目,今年的题目是云虚拟机的预测和布置,毕竟华为正在云计算上发力,出这个题目也并不觉得奇怪,我之前就有使用阿里云的经历,理解起这个题目来倒不是很费劲,赛题大致分两部分,一部分是预测虚拟机的数量变化,一部分是在物理机上放置虚拟机。

第一版代码

开始阶段我们队效率还算比较快(还有个同赛区的队更彪悍,11号就开源了代码),建模大神先用matlab把整个思路流程跑了一遍(不得不说matlab的库函数是真好用,最后大神写出来的代码简洁而高效),另一个队友整个框架迅速搭建完了,算法方面我们使用二次指数平滑法进行预测,自己想了一个类似于贪心算法的放置算法,这个放置算法还是蛮靠谱的,利用率一直都是95%左右,有了matlab的检验和参考,核心算法我也很快写出来了,整个第一版的代码在一个星期内搭建完毕,怀着试一下的小激动,我们上传了代码,20分(小伙伴都傻眼了),不过不要紧,第一版代码主要目的还是测试整个流程(框架、开发、提交),经过我们的参数调整分数一下子上升到了70多分。

78分也不够
然后,然后排行榜上就看不到我们了。

重回排行榜

当时武长赛区的竞争太过激烈,85分都排不上前20,队友都感到不能再这么下去了,是时候搞一波公关了,碰巧队友认识的一个研究生学长也在做这个比赛,于是我们去交流了一波,研究生学长他们也是70多分,我们相互
公开了思路,学长他们的去噪方法给了我们很大的启示。官方给出的数据集里面是有一些噪声点的,而我们此前并未进行数据处理,当采用了均值滤波的方式进行数据预处理之后,分数一下子往上升了7分,我们又重回排行榜了!

不来一点意外怎么行

比赛进行到3月下旬的时候,各大赛区的竞争都开始进入了拉锯战,最高分94左右,倒是最低分一直在刷新,打破这一局面的是京津冀东北赛区一大神,他直接上95分,当时写代码的时候我们队就开玩笑说,要是谁能上95,我们就去告发他提前掌握了答案,结果就打脸了。可能连官方都觉得这不科学,于是下午意外就发生了,官方发现判题系统出bug了,进行了修改,结果几乎所有人分数都降下来了,普遍降8分,官方也没有将所有的代码重新跑一遍更新排行榜,于是就出现了排行榜上新分和旧分共存的现象,大家都不知道自己的真实排名,场面一度混乱,几天后所有代码才重新判了分。anyway我们的分数又降回了77分。

高端算法一定好吗

到4月初的时候,LSTM, RNN神经网络,BP神经网络还有启发式的放置策略总算都写出来了,但不论怎么调参始终突破不了现有的分数,各大赛区的交流群里面也有人说神经网络比不上平均数预测,但也有的人用神经网络的方法取得比较好的结果,造成这种情况具体原因不是很清楚,总之我们这边智能算法算是彻底凉了。
4月初到正式比赛前,排行榜的底线也是不断刷新,到最后,6分的分差卡了64个人,分数分布太过密集,基本上就是1分干掉10人。

这里写图片描述
到了比赛前一天晚上,我们队三个人决定商量一下明天比赛的安排顺便优化一下代码(完善了放置策略,试了几个随机数),谁知道这一优化上到了81分,练习赛截至时到了29名。

这不科学

同组那个matlab大神晚上不睡蹲点,00:40的时候在交流群里面发消息,我们的高级用例蹦了2(第7和第8两个用例)。

最后结果
当无奈把代码提交上去的时候我们心里就已经没抱多大希望了。(毕竟即使所有用例都跑过了,还是不知道当时那个错误为什么会产生,不是数组越界问题,这才是整个过程中最令人感到无力的)。10个小时转瞬即逝,等着官方晚上10点公布最终排名吧(ps:今年的正式比赛是看不到排行榜和自己排名的)

尾终

华为临到终了还来了一个小插曲,15号晚上10点的时候官方发布公告称:由于存在较多代码重复和抄袭,专家正在连夜进行排查和相关同学求证,结果延期发布。what专家难道不睡觉的吗,今天周日耶!!结果是第二天中午出的,大略的看一眼,入围分数228,之前练习赛排在很靠前的几个大佬也没进复赛(也有可能是改队名了)。

多么痛的领悟

这次比赛启示和教训还是挺多的,第一次参加codecraft,没什么经验可说的,还是说说感受吧!

  • 队员之间一定要选择相同的开发环境,这次我们队就躺过坑,我是gcc4.8.1 建模大神gcc4.9.2另外负责框架那个的用的是vitural studio(不知道vs上的编译器是什么),练习赛期间就发生过vs和gcc编译结果不同的情况,正式比赛debug时gcc4.8.1和4.9.2也分道扬镳了。。。。。
  • 引入版本控制,版本控制这东西之前就会,可是没怎么用过,这次比赛全去优化算法去了,也没用上,结果本地保存的代码就成这样子了。
    版本控制
    版本控制虽然前期会显得比较麻烦,但后期决定可以帮助团队提高效率。
  • 代码的鲁棒性,比赛当天很多队的代码出现3、6、9用例崩溃的情况就是读取数据时处理空格和rn方面不够健壮(这原因还是官方的专家提示的,因为实在太多队出现这种情况)

大三狗,第一次参加这个比赛,大学三年中实战性很强的比赛也很少参加,还是理论学的居多,希望我的经历能对后来者有所启示,最后感谢同组两位大神的配合,贴上我们的代码,凑合着看吧,大佬们轻打!!!

来源:mythinker2

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年3月16日
下一篇 2018年3月16日

相关推荐