大家好,我是来自东南大学的小轩,目前是一名研二学生,专业是复杂系统与复杂网络。在全国大学生计算机博弈大赛中获得一次全国一等奖,一次全国三等奖,在全国计算机博弈锦标赛中获得季军一次。
我自2016年Alpha Go横空出世后,对计算机博弈(人机博弈)产生了浓厚的兴趣。2020年,Science封面是德州扑克的算法研究,人机博弈一直是科研的顶级问题。
正好全国大学生计算机博弈大赛是国内计算机博弈方向的最高赛,很荣幸能够参加过两次这样大型的高水平比赛,我把自己的比赛经验和学习过程总结如下,希望能对一些对计算机博弈(人机博弈)感兴趣的小伙伴有所帮助。下面,我从比赛角度和个人经验角度全面地进行一下分享。
1、赛事介绍
中国大学生计算机博弈大赛暨中国计算机博弈锦标赛是由中国人工智能学会和教育部高等学校计算机类专业教学指导委员会联合主办,是国内人机博弈的最高赛事。大赛自2006年以来首届比赛举办以来,比赛吸引北京理工大学、东北大学,吉林大学、南开大学、华中科技大学、东南大学、西北工业大学等68所知名高校踊跃参加,2020中国大学生计算机博弈决赛暨第十四届中国计算机博弈锦标赛中,共有365支队伍、969名选手注册,参赛高校数、决赛队数创下了大赛历史新高。
现在大赛共设置了19个项目,其中面向在校大学生的有10个项目,包括五子棋、六子棋、点格棋、苏拉卡尔塔棋、亚马逊棋、幻影围棋、不围棋、爱恩斯坦棋、军棋、海克斯棋等;面向全社会人士的有9个项目,包括国际跳棋、斗地主、桥牌、中国象棋、德州扑克、围棋、藏族久棋。今年具有广泛群众基础的大众“麻将”,也首次成为计算机博弈大赛的博弈项目。
人机博弈——计算机博弈大战格外引人注目。计算机博弈是人工智能领域最具挑战性的研究方向,也是新工科人工智能创新人才培养的重要内容。
2、赛前准备
对于计算机博弈比赛,主要是针对博弈系统的编写、人机博弈的算法和强化学习算法的编写。我一般使用的是C++及Python3.X,作为博弈系统主要编写语言。当然这个编程语言没有特别的限定,我也有同学使用JAVA进行博弈系统的编写,甚至参赛队伍有用matlab进行博弈系统的编写,而且在19年的决赛中获得了一等奖。对于编程语言的学习是一个比较重要的环节,也是对同学们今后对数据挖掘研究的一个基础。
下面我给大家推荐一些书目:
针对低年级同学:
-
全国大学生计算机博弈大赛培训教程 王静文,吴晓艺
-
PC游戏编程(人机博弈)王小春
-
C/C++中国象棋程序入门与提高
强化学习进阶:
-
人工智能与游戏 乔治斯·N·扬纳卡基斯 朱利安·图吉利斯
-
强化学习入门:从原理到实践
3、比赛经验
我两次参加全国大学生计算机博弈大赛,在亚马逊棋项目上分别获得三等奖与一等奖,一等奖那次也成功杀入了中国计算机博弈锦标赛决赛斩获季军。我将从组队、分工、比赛中的建议进行介绍。
一、队友的选择
由于比赛任务量比较大,所以靠谱的队友一直是比赛成功的关键一点,对于队友的选择
一般参照如下几点:
1. 有一定编程能力的同学,还是需要寻找能够使用python,C++/C、JAVA等编程;
2. 寻找一些有项目或比赛经验的同学;项目可以是关于APP/小程序,CV或者NLP等等,比赛可以是ACM,CCPC,蓝桥杯等。
二、项目的分工
计算机博弈项目设置,一共有19项博弈项目都不太一样。但是一般项目分工可以分为大概如下几个方面:
1. 博弈项目规则及棋盘的表示:对于不同的比赛项目都有它本身的比赛规则,需要将这些规则用编程语言表达出来,如对于行棋是否合法,对于胜负判断等等,需要进行合理编写;对于棋盘棋子的表示,有很多方法,这些方法也影响着算法的运行效率,所以对于表示方法也是项目优化的一部分。
2. 交互式界面的编写:对于交互式界面编写是比赛中很重要的一个组成部分,编写好的图形界面对于后续的研究也有很大的帮助。
3. 核心算法的编写:对各个项目的估值函数的研究与编写,搜索算法如Alpha-beta算法,PVS算法,UCT算法的编写。
三、比赛中的建议
能否取到好成绩,关键就在比赛期间了。有这么几个点需要注意:
1. 明确团队分工、定时沟通进度、及时的交流,都是获得好成绩的前提。
2. 必要时要和指导老师沟通进度,对一些算法的疑问及时沟通,及时进行战略上的调整。
3. 对于博弈系统一定要编写好悔棋功能,以免在比赛中出现差错,直接判负。
以上就是我的参赛经验分享,希望对大家有所帮助!