2009-10-04 94 views
5

我正在尋找可以在Google App Engine上運行的國際象棋AI。大多數國際象棋似乎都是用C編寫的,所以不能在GAE上運行。它需要足夠強大才能擊敗休閒玩家,但其效率足以在一次請求(小於10秒)內計算移動。用於GAE的國際象棋AI爲

理想情況下,它將用Python編寫,以便與現有代碼更輕鬆地集成。

我碰到了幾個有前途的項目,但他們不看成熟:

回答

5

PyChess有什麼不對?它是純粹的Python,相當成熟,並且一定能擊敗休閒玩家。

這已經有一段時間,因爲我用PyChess,但遍覽some of the source 確實表明您可以設置多長時間來搜索移動的時間限制。

用純Python編寫的PyChess引擎是pychess.Utils。具體來說,如果你看看pychess.Utils.lutils,你可以看到例如the move generator written in Python

+0

我看了一下pychess,但它使用的國際象棋引擎似乎基於C: http://code.google.com/p/pychess/wiki/ChessEngines – hoju 2009-10-04 22:36:38

+0

感謝您的指針! – hoju 2009-10-05 23:01:36

+0

@Richard:它通過CECPEngine和UCIEngine類支持C引擎。然而,它捆綁的引擎,用於內部分析的引擎是用Python編寫的。 – 2010-08-29 21:12:31

1

這個問題的GAE架構,其目的是一個貧窮的比賽用於有效的CRUD操作,而不是CPU密集型任務。在實踐中,每個請求需要超過幾十毫秒的任何內容都會很快導致CPU配額不足。

+0

還有,6.5小時的免費CPU配額非常慷慨。如果平均AI動作花費約3 CPU秒(有些是在書上)並且有約40次動作/遊戲,那麼這會給我200次/天,這比我需要的多。 (希望我的假設是正確的) – hoju 2009-10-05 00:37:39

+0

實際上,如果你做得正確,你可以用很低的CPU功率創建強大的引擎。 一個好的國際象棋引擎會如此嚴重地修剪樹,以至於搜索到的深度7的節點總數在解釋語言的1秒之內。 – 2010-08-29 21:15:25

+0

如果你花費的時間超過500毫秒,你的程序就會被終止,你的用戶將得到一個HTTP 500. – 2010-08-29 23:28:52