1.这是一个什么项目
这是一个用于计算机博弈大赛军棋比赛中的一个军棋AI,在2018年计算机博弈大赛中获得三等奖,在2019年计算机博弈大赛中获得二等奖。
2.用到了什么技术,为什么用这项技术(以及每项技术很细的点以及扩展)
最大最小值搜索树,α-β剪枝。
3.过程中遇到了什么问题,怎么解决的。
项目整理:
AI运行逻辑:由裁判程序发送一段一段的字符串指令,然后对指令进行分析后分别进行不同的操作。
收到一系列请求程序名称,队员信息的指令后返回信息。
收到开始指令后初始化棋盘信息,棋子位置,初始化概率表。
while(两方的旗子都存在){
收到对方行棋指令后,刷新概率表,刷新棋盘,更新棋盘棋子,调用决策函数,判断31步,下棋
收到我方下棋后裁判的反馈结果,刷新概率表,刷新棋盘,更新棋盘棋子,判断31步
}
游戏结束
现在详述决策函数
设置一个for循环最大为4,最小从1开始,最开始只进行1次最大最小值搜索树,第二次循环变为进行2层深度,最终变成4层深度,如果超时或者必胜的时候跳出循环
最大最小值搜索树函数和α-β剪枝:首先将必胜的条件列出,如果必胜直接返回最高价值。
通过一个函数计算出所有可能的走法保存到一个数组中,然后使用快排基于每个走法的价值进行排序。深搜模拟每一种走法。每一层为自己或者敌人,叶子节点评估函数返回局面得分。最后通过函数得出最佳走法