计蒜之道2016 总决赛

来源:互联网 发布:人间失格 知乎 编辑:程序博客网 时间:2024/04/28 07:27

大体情况

  虽然说我已经身败名裂了,但还是很感谢蒜头。
  今年复赛打了rank60+(去年好像是爆零了,不过今年确实简单些),结果前面有的人不去顺延到了我。
  蒜头还特别土豪,帮买了机票,开了五星级酒店(里面各种高端设施,找拖鞋还找了很久),把选手都当成爷,伺候得很好,唯一办挫的事大概就是最后一天选的旅游团大坑。
  

day1

  中午到达泰山饭店,里面已经聚集了好些选手了,签了到,上房间睡了一会,和室友以及他的同学打了一会UNO(不明白他们为什么对这个有那么大的兴趣),晚上前往滴滴大厦试机。一路上对选手们的背景有了更多的了解,当然有的人之前就认识,总觉得我极大拉低了选手的平均智商。随后我们到达滴滴大厦,机器是一个笔记本,裸的Ubuntu系统,上去随便装了些可能会用到的东西…这个时候,我们还是不清楚所谓的“工业题”是什么。

day2

  由于各种原因,比赛delay了1h+,但这不重要,我们参观了一下滴滴大厦(环境非常不错),开始比赛。开场的时候,我去了趟厕所,导致我错过了规则介绍,就有点慌,赶紧阅读纸质的规则说明,但由于糟糕的心态,反复读了几遍才明白。这个题目是写一个游戏的AI,进行双人对抗,游戏改自Pacman。这里不得不说我玩过PKU的botzone,对这个背景有一定的了解,算是具有一点优势。
  我开始思考计算机博弈AI里面常用的2种方法。
* 极大极小搜索+alpha-beta剪枝,感觉效果不佳,首先比赛时间只有5h,这种方法需要一定时间去调试,其次游戏棋盘会很大,局部对抗少,搜索深度不够时严重缺乏大局观,再者游戏中有行为随机的NPC,搜索难以解决这种情况。
* 蒙特卡洛树,尽管相对好实现而且可以模拟随机行为,我对它的熟悉程度不如ab剪枝,纠结了一下决定放弃,毕竟还是直接贪心更为简单粗暴。
  接下来开始研究主办方定义的类,还有如何编译、运行、调试,这也花费了一些时间,总体来说还算顺利。和botzone一样,AI程序由judge程序调用并互相传递信息。我的方法的核心就是最短路,包括我到星星的最短路,到鬼的最短路,到对方的最短路。在此基础上判断何时远离鬼,何时逃跑,何时追杀,还有如何选择吃星星的方向(关于这个问题大局观不够好,有点无脑)。接下来我出现了一个致命失误,竟然去dfs最短路(应该bfs),过了好长时间才发现问题…得到最短距离以后,就是各种调参,增加逻辑分支,微调策略了。我一直调到比赛结束前十几分钟,感觉在样例地图上的运行效果还算满意,能比样例多得上千分。然后想起还要在大地图上测试,随手就造了一个大地图,猛然发现程序报RE!!!瞬间崩盘,慌乱之中的debug无济于事…比赛结束,大家兴奋地交流自己的策略,我却在做最后的挣扎…我感到无力,看到眉飞色舞得意洋洋的对手,却无法交流(zhuang)思路(B)。这一跪,使得接下来的活动都失去了意义…

day3

  上午恭王府半日游,下午自由活动去了下健身房,晚上揭晓比赛结果,毫无悬念小组赛全跪,我还是无法从失败的阴影中恢复过来。

一些感悟

  • coding能力弱得已经无法直视了。那些失误都是自己不够强大导致的,怪不得rp。
  • 为自己热爱的事情奋斗,是令人向往的,一直想要开发一个AI平台,希望有朝一日能够实现。
  • 蒜头组织的比赛处处体现出了专业,决赛游戏规则设置很合理(从积分随时间减少,鬼在各种情形下的移动方式这些规则的设计都能看出出题人对这个游戏的对抗性有研究)。看似比赛时间短,但对能打进决赛的选手来说这个要求并不过分。不足之处是缺少一点必要的说明,比如超级星只有2颗,这大概是原游戏Pacman带来的默认配置?这就相当于比赛地图都不具有一般性了。
  • 希望蒜头能够分享更多的东西,比如更多比赛对局的replay,judge源码等等。
  • 明年一定再战。
2 0