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多分。

至此第一版代码就开发完成了,接下来就是换各种牛x的算法………

等着排名往下降

后来就是不断进行版本的迭代,提前找好指导老师,并不希望老师能太多的参与进来,老师的想法和思路很有借鉴意义,有个老师提出了用贝叶斯概率模型进行预测(原谅我听懂了你说的啥,但不会写呀),预测方面我们打算试一下LSTM,bp神经网络,RNN神经网络;放置策略上各种启发式算法解决背包问题,最后两两搭配、逐一调参(注意:这是理想情况),事实是,写这些算法都需要查阅大量的资料、论文,先看懂原理,再找到参考代码或者伪代码(ps:今年华为官方查重和代码抄袭挺严格的,不要抱着侥幸心理),然后自己写,这期间小伙伴们几乎每天都会盯着排行榜看,看着排名一点点往下降,到最后上榜都需要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两个用例)。

我是第二天早上8点才知道这个消息的,当时各大赛区交流群里面出现最多的问题是用例3,6,9崩溃,我们这种情况还是独一份,也没谁可以交流参考(mmp,无fuck说),接下来开始各种随机盲调,负责搭建框架的伙伴以为是框架原因(框架确实存在一点瑕疵,但并不影响大局),一上午我们就用掉了3次提交的机会(正式比赛每天只有5次机会)。到了下午还是一点头绪都没有,我和matlab建模大神决定必须先在本地将错误复现出来,官方给的训练数据大概只有3000条,我们将数据扩充到9000多条,本地运行还是正常(整个debug过程一度陷入停滞),妈的,那时大家都没啥信心了,毕竟已经晚上7点了,硬着头皮往前搞,我把代码转移到ubuntu上,想完全模拟官方的判题环境。在复制训练数据的时候,一怒之下多复制了一把,数据量直接上12000了,巧的是,数据量一上万,程序运行就出错了,出错了,他娘的终于出错了,我找了一天的错误呀,segment fault,这个错误一般是由于数组越界,访问了不该访问的内存空间导致的,后面的工作就是定位错误、改正了,具体过程就不细说了,也是经历了一段波折,最后改了一波不知道是不是错误的错误(我们检查了一遍代码,并没有出现数组越界),大概晚上9点左右的时候9个用例都运行成功了,小伙伴心中斗志重燃。

一盆冷水

可能这套代码已经备受蹂躏,禁不起在折腾了,我们队一个多月练就的丰富的调参实战经验在这里完全不起作用,越调越低,直到第二天所有调试机会全部耗尽,分数定格在222分。

当无奈把代码提交上去的时候我们心里就已经没抱多大希望了。(毕竟即使所有用例都跑过了,还是不知道当时那个错误为什么会产生,不是数组越界问题,这才是整个过程中最令人感到无力的)。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用例崩溃的情况就是读取数据时处理空格和\r\n方面不够健壮(这原因还是官方的专家提示的,因为实在太多队出现这种情况)

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

2018华为软件精英挑战赛体会相关推荐

  1. 2018华为软件精英挑战赛

    今天12点,历时一个多月的2018华为软件精英挑战赛训练赛结束了,最后分数215.597(总分300),很遗憾,前64都没能进,不过还算尽力坚持到最后. 3月初,华为软赛开始一周后,看到师兄他们在弄, ...

  2. 2018华为软件精英挑战赛-模拟退火算法

    2018年的华为软件精英挑战赛题目简介:给出华为云虚拟机过去的租借数量历史数据,用以训练模型并预测下一个时间段里的虚拟机租借数量,然后把这些预测得到的虚拟机装填进一定规格的物理机中,即分为预测和装填两 ...

  3. 2018华为软件精英挑战赛总结及代码

    //   我是分割线君 2019复赛结束,成渝季军,深圳决赛见 交流加wei: lidian1993 //   我是分割线君 先贴上我们的名次,我们是成渝赛区的[OB观光团]队,在下是队长[无力吐槽的 ...

  4. 2018华为软件精英挑战赛总结

    早在被淘汰的时候,就想写一波总结了,还是忍到了比赛结束. 1.初赛赛题 整个赛题主要分为两部分,"利用稀疏的少量数据预测接下来一段时间的销量"+"二维装箱问题" ...

  5. 2018华为软件精英挑战赛经验(一)

    初赛.复赛.比赛耗时50天.忙忙碌碌.紧紧张张. 西北赛区真的很强,最终成绩初赛6/64 复赛6/36.真是666!!! 简单说一下赛题: 赛题围绕两个点展开:销量预测问题.放置优化问题. 请求 预测 ...

  6. # 2021华为软件精英挑战赛C/C++——build.sh/build_and_run.sh/CodeCraft_zip.sh注释

    2021华为软件精英挑战赛C/C++--build.sh/build_and_run.sh/CodeCraft_zip.sh注释 1.build.sh #!/bin/bashSCRIPT=$(read ...

  7. 2021华为软件精英挑战赛(附赠线下判题器链接)——经历

    2021华为软件精英挑战赛(附赠线下判题器链接)--经历 1.题目解析 本次赛题源自现实的互联网企业面临的问题,怎样购买与部署服务器最便宜! 服务器:不相同型号的服务器有着不同的CPU与不同的内存,每 ...

  8. 2023华为软件精英挑战赛,探寻软件人才与科技创新的最优解

    作者 | 曾响铃 文 | 响铃说 今天,软件行业正呈现出江河入海一般的大汇流趋势. 一方面是技术的汇流,诸如人工智能等前沿技术与软件行业的深度融合,正全面颠覆软件产品的开发模式和服务逻辑. 另一方面则 ...

  9. 2016华为软件精英挑战赛:赛题及其答疑汇总

    注:本文文字均摘自官方指定网站和论坛,权威且可信,答疑见中间部分,非常全,众玩家可放心阅读. 同时文末给出了包括自己在内的诸多玩家的解法. 前言 赛题源自"未来网络"业务发放中的路 ...

  10. 2021华为软件精英挑战赛,思路框架,欢迎留言讨论

    2021华为软件精英挑战赛,思路框架. 1.对数据初始化封装 服务器 用集合来进行封装,集合由字符串和数组组成键值对 {"服务器型号":[cpu内核,内存,硬件价格,能耗]} 例如 ...

最新文章

  1. 耗材领用登记系统php_简单说一说,实验室管理系统LIMS系统功能描述吧
  2. STL容器的应用场景
  3. Hyperic HQ 应用性能管理解决方案
  4. ES6新特征总结与介绍——声明与表达式
  5. linux semaphore,在CentOS 7操作系统上安装Semaphore的方法
  6. linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
  7. 有什么推荐的计算机视觉项目?来自微软亚研院的清单
  8. spark中一些不是很有意义的数据结构
  9. JVM Class 类文件结构 (系列号2)
  10. C++ explicit关键字应用方法详解
  11. Bailian4097 报站【暴力】
  12. mysql语法_MySql实用技能,最常用的删除语法
  13. 基于JAVA个人饮食营养管理信息系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  14. 腾讯QQ空间登录的方法实现方式与验证过程分析
  15. Heidisql中如何解决MySqlServer go away问题
  16. SQL中where in的用法
  17. js实现oss批量下载文件_jquery批量下载文件
  18. 武汉第一职业教育中心计算机技能高考,武汉市第一职业教育中心2019年招生简章...
  19. 容联CPO熊谢刚:“通讯+AI”打造数智化新基建
  20. html5+css3布局尝试

热门文章

  1. 真实遇到的产品经理面试题
  2. linux环境下hadoop版本的升级、更换
  3. 2019年湖南省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书-A卷
  4. 软件测试工作基本流程
  5. 0x0000011b共享打印机无法连接解决方法
  6. 基于java SpingBoot框架的企业办公管理系统
  7. python 修改pdf_使用Python编辑PDF
  8. Spring 框架的学习心得
  9. 计算机变异指标可以,变异系数公式_在EXCEL中怎样计算样本标准差和变异系数
  10. 伟创ac80b变频器故障代码_安川变频器故障代码和安川变频器报警详解