我希望这不是一个随心所欲的问题,但是我一直在浏览Faile和TSCP的源代码,并且一直在相互对抗。据我所知,引擎有很多共同点,但Faile每秒可搜索约130万个节点,而TSCP每秒仅可搜索30万个节点。
失败的源代码可以在这里找到:http://faile.sourceforge.net/download.php。 TSCP源代码可以在这里找到:http://www.tckerrigan.com/Chess/TSCP。
看完它们后,我发现一些相似之处:两者都使用阵列板表示法(尽管Faile使用144尺寸的板),都使用带有某种换位表的alpha beta搜索,都具有非常相似的评估功能。我可以发现的主要区别是,Faile还通过排列棋子位置的阵列来使用棋盘的冗余表示。这意味着在生成移动时(两个程序都具有非常相似的功能),Faile必须循环遍历更少的坏块,同时保持此阵列花费的资源要少得多。
我的问题是:为什么这两个程序的速度相差4倍?另外,为什么Faile始终击败TSCP(仅通过观察他们的举动,我估计ELO会相差200左右)?对于后者,这似乎是因为Faile正在更深入地搜索几层。
最佳答案
TSCP没有哈希表(-75 ELO)。
TSCP尚未下令杀手行动(-50 ELO)。
TSCP不能空移(-100 ELO)。
TSCP具有不良的攻击功能设计(-25 ELO)。
在这4件事中,您大约有250分的ELO差。这将增加每秒的节点数,但是您不能在不同的引擎上比较每秒的节点数,因为程序员可以对什么是节点使用不同的解释。
关于c - 为什么Faile比The Simple Chess Program(TSCP)这么快? (国际象棋引擎优化),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9746632/