自动判和
由于象棋引擎在测试时,和棋的裁决只有循环和棋和 60 回合自然限招,和棋的步数会很长,所以可能会有自动判和的措施来弥补一些测试速度,但是要考虑到对结果的影响。
常见的自动判和例如场上只存在士相或者连续 x 回合双方引擎 ±n 分,后者就可能对实际结果产生影响,只是影响的强弱问题,因为引擎测试中,长回合均势但后期走输的情况是会存在的。
为了结果严谨,皮卡鱼团队在测试平台测试的自动判和保证当前的局面百分百不会分出胜负。
目前皮卡鱼测试平台的自动判和主要看当前的子力组合。子力组合中,不可能分出胜负的子力组合仅有:
- 1 炮 vs 1 士 n 象
- 1 炮 n 相 vs n 象
- 1 炮 vs 1 炮
(注:不考虑超时因素;由于不可能逼迫一方违规,所以也不考虑循环违规因素;n 的范围为 0~2。)
另外,还有部分子力组合,任何一方想要取胜,最佳着法的最长局面必须只能一步将死或困毙。由于 GitHub 引擎内置了这类子力组合的棋盘操作,让引擎在这类子力组合中和棋的局面不可能出现输棋的情况,这种也是可以自动判和的。
判断方法
轮到一方走棋时,只需要考虑要走的棋会不会被对方一步将死或困毙,若不会,则走这步棋就不可能会输;若会,换一种着法,且不可能存在所有着法都会被对方一步将死或困毙的情况。
- 1 炮 vs 2 士 n 象
- 1 炮>0 相 vs 1 士 n 象
- 1 炮 n 象 vs 1 炮 n 象(且双方象的总数>0)
