自動判和
由於象棋引擎在測試時,和棋的裁決只有循環和棋和 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)
