AlphaZero_Gomoku icon indicating copy to clipboard operation
AlphaZero_Gomoku copied to clipboard

关于写禁手的疑问

Open tristantian opened this issue 5 years ago • 5 comments

我想增加禁手规则,但是我无法根据board.current_players判断谁是先手。我自己增加了标志,但是在start_self_play中失效了。看代码,我怎么觉得在start_self_play中永远都是p1先手?想问一下

tristantian avatar Nov 15 '18 12:11 tristantian

因为self-play是一个MCTS同时下双方,所以默认一直是p1先下。如果要判断当前play的是先手还是后手,可以根据board.state里元素个数的奇偶性判断,目前board.current_state函数里是这么处理的;另外如果想设置先手player编号的话,也是可以在board.init-board里设置的,可以参考start_play函数

junxiaosong avatar Nov 16 '18 00:11 junxiaosong

谢谢回答。另外我想问一个白痴的问题,我在训练中模型和pure_MCTS对比达到了“win :10 lose 0”的状态,但训练的结果还是很差(和我自己下,他不会拦,每次都我赢)。这个情况让我很意外,我不知道是我的禁手出了问题(训练出来模型的一直在诱导对方下禁手?所以才win:10)还是这种情况本来就有可能发生呢。

tristantian avatar Nov 16 '18 01:11 tristantian

对阵使用多少次playout的pure_MCTS达到了10:0呢?如果playout次数很少的话,pure_MCTS本来就是很弱的,另外目前的pure_MCTS实现的时候是没有考虑禁手的

junxiaosong avatar Nov 16 '18 05:11 junxiaosong

次数的话大约6、7百次。pure_MCTS本来就很弱呀,那我再继续训练试试。

tristantian avatar Nov 16 '18 05:11 tristantian

新年快乐~@junxiaosong 如果想要增加禁手规则大概需要改哪些文件呢?

人工智能来玩五子棋,若无禁手规则。。感觉总缺了那么一块,毕竟有先手必胜,/无奈,有空还是加上吧。。

cxgreat2014 avatar Feb 17 '19 09:02 cxgreat2014