我希望這不是太大的任意問題的,但我一直在尋找通過Faile和TSCP的源代碼,我一直在玩他們反目成仇。據我可以看到引擎有很多共同點,但Faile每秒搜索約130萬個節點,而TSCP每秒僅搜索300k個節點。爲什麼Faile比簡單國際象棋程序(TSCP)快得多? (國際象棋引擎優化)
爲faile的源代碼可以在這裏找到:http://faile.sourceforge.net/download.php。 TSCP源代碼可以在這裏找到:http://www.tckerrigan.com/Chess/TSCP。
通過查看它們之後,我看到一些相似之處:兩者都使用陣列板表示(儘管Faile使用144尺寸板),兩者都使用帶有某種轉置表的alpha beta搜索,兩者都具有非常相似的評估函數。我能找到的主要區別是,Faile通過具有片段位置的陣列來使用板的冗餘表示。這意味着當移動產生時(通過兩個程序的非常相似的功能),Faile必須循環更少的壞塊,同時維護這個數組的成本要少得多。
我的問題是:爲什麼會出現在這兩個方案的速度4倍的差異?另外,爲什麼Faile會一直擊敗TSCP(我只是通過觀察他們的動作估計大約200個ELO差異)?對於後者,這似乎是因爲Faile正在深入尋找幾層。
感謝您的回答。在此期間,我可以分享一些我研究過的研究。我認爲我發現這也許是最大的原因,但你說的是一個很好的理由,雖然起初TSCP似乎使用換位表,但事實上並非如此。它會創建一個Zobrist鍵,但只能用於重複繪製。這意味着它可能會多次分析某些職位。根據我的閱讀,轉座表可以組成3-4倍的性能提升。 – 2012-03-17 23:51:25