复赛的硝烟依然在燃烧,提前退场的小采风只能默默在这里,看人家一展宏图。开篇之际,不得不抱怨一下,西北赛区真是太难了,先不考虑每个赛区最高分的情况,85分左右,在其他赛区基本可以稳定前32的,来到大漠孤烟的西北,也只能在64左右徘徊了。具体的赛题思路,稍后会献上网上大牛的博客,希望在此,与众位看官一起,回忆一个月走来的跌宕起伏。
一、队友选择
一个人,走得快,两个人,走得远。第一届的德州扑克,第二届的路径优化,还有今年的整体规划,看来主要集中在算法优化了。曾经和队友还想过,今年会不会出和机器学习相关的时下比较火热的内容,看来还是想多了,毕竟硕士生的积淀,还是略显薄弱的。
感谢队友的信任,没有多想,就答应了小采风的请求。谢谢一路走来,二位的不离不弃,谢谢从开始之际,每次主楼的讨论。最后一天的夜晚,0.1分带来的兴奋,也真是难能可贵的体验,明年有机会,愿与君,豪情一场。
团队协作的闲话就不多少了,三个人在一起对脾气就行。积极的钻研,有效的沟通,勇敢的尝试,都会有不错的收获的。如果明年可以,请给小采风一个新的机会。
二、进展思路
因为只是参加过初赛和复活赛,没有复赛的机会,所以只能分享比赛第一个阶段的事情了。其实,最开始大家基本上思路都是相对局限的。面对一个新的问题,尤其是并不擅长的领域,当然觉得无从下手。随着各个赛区群里面的讨论,以及华为大大在各个校园里面开展的技术大咖面对面的活动,思路就逐渐清晰起来。以至于提交代码的最后,都是整体规划、蚁群算法、遗传算法、退火算法之类的,剩下的就是自己的参数等问题了。所以,只要坚持,就能不断的往前更近一步。
这里,给出本次比赛的一位大神的博客链接,里面给出了做题的思路,有兴趣的你,可以自行查阅喽。2017华为软件精英挑战赛参赛心得 ,小采风真的很佩服这位。
三、语言选择
三届大赛,语言方面,可供选择的有C、C++及JAVA。在追求算法的道路上,JAVA似乎有一些些不足。作为JAVA初级选手,还只算是一个门外汉,不太明白JAVA的精华吧!由于我们是基于遗传算法,多次迭代优化的,迭代次数就是关键因素。在90秒的限定时间内,迭代次数越多,出现更优解的可能性就越高。
认识一个团队,也是基于遗传算法的,只不过语言是C++。我们在跑同一个高级case的时候,迭代次数仅为人家的一半,所以出现最优解的可能性就降低。当然,也是自己JAVA功底不够深厚,需要进一步提升。赛区群里面也有讨论,是否可以考虑把不同语言分队排名,不过似乎没有什么用。华为大大,可能有自己的考虑吧。
越往后比赛,出现的问题越来越明显。对象构造不是很精准,方法说明不是很明确,代码注释更是有些糟糕,以至于有时候看着看着,会有些心神不宁。看来,程序员的基本功,着实是硬道理,日常养成良好的代码风格,看来要列入小采风的工作计划了。
四、比赛心态
这是一个磨人的比赛,没有良好的心态,患得患失,就得不偿失了。
从发布赛题开始,到初赛结束,基本上是四周多一点的时间。我们算是积极主动型的,第二周过半,就开始提交代码。初次上榜,还不错呢?没记错的话应该是16左右,中间最好一次进过前十。随后的一周,也是逐渐开始进一步的丰富和完善。
第三周过半后开始,各位神奇的大佬开始发力,排名莫名其妙一直往下走。笑到最后才算是笑的好。第四周开始,成绩已经非常不稳定了,甚至有时候会跌出榜单。小采风算是学到了,原来大咖前期都在不断的思考,迎接高级case的考验呢。
第三周的松懈,导致我们后面的被动。暂时的松懈,确是在清明节期间给我们带来了不小的压力。游离的榜单边缘,真让人力不从心。尤其是每晚的12点左右,一波波代码提交之后,小伙伴们不断优化更新,看不见的才是最可怕的。还是感谢,清明假期的时间,守住了最后的防线,一切还算可以接受。
我们总是笑谈,我们可是少有的出现在榜单各个层次的人儿。确实,64强,基本上每个阶段都出现过。当然,高级case出来的第一天,也算是奇怪的惊喜,激励以后继续向着浩瀚银河前进了。
对于多有决定参加比赛的你来说,请做好心理准备,这不是一蹴而就的征程,是需要你持之以恒的坚持探索,不断提升,这一点确实有华为大大的品质。
五、打破常规
清明节期间,也是排名掉的最狠的阶段,一时间真的遇到很大的瓶颈。度打折寻找影响力最大化节点,启发式搜索路径,遗传算法更新交叉和变异概率,调整各种可调的参数,却总是没有太大的起色。
队友的无心插柳,却带来了巨大的改观。按照算法思路,种群规模应该是最好偏大一些。结果,故意减小种群规模,却带来迭代次数的提升,很大的改善了性能,也就是这一改动,基本确保我们可以榜上有名了。
这里,有一点确实必须说明,比赛的case从4月1号到初赛截止,不更换,这一举措是否合适。由于赛题更优解具有一定参照性,很多队伍可以通过不断提交代码,通过比较每次代码的分数,来更改自己的参数,使之强迫适应比赛测试case,队友哭笑到,这可能就是既面向对象编程之后的新的提升,面向case编程。复活赛的时候,case一更换,名词又往前走了10名。这一点,似乎确实有些不妥。
科研的道路,也许会有意外的惊喜。有时候,确实让人哭笑不得。敢于试错,惊喜或许就在身边了。
六、交流沟通
本次参赛除了心态的问题之外,最重要的在于没有积极与大佬交流沟通。虽然大佬不会直接贡献源码供你参阅,可是往往有时候一句话,点醒梦中沉睡已久的你我。
群里面的大神,其实是可以积极联络的,工程师间的针锋相对,才能一步步让世界更美好,不是吗?我们应该积极主动的联系,交流,想法,确实是在碰撞中产生的。
初赛64强,西电38支队伍;复赛36强,西电16支队伍。其实,我们都在努力,都在走向星辰大海,走向自己平凡生活中的英雄梦。也是你,一个个优秀的你,才会影响与推动更加优秀的我们。时间很短,老校区的三年,已经走过去了八个月。希望各位都可以遇见更好的自己,一起走向那个不平凡的自己喽。好久没有鸡汤了。撤了。
多半年没有写过东西了,业精于勤荒于嬉。多看书,多码代码,多写写。