2009-10-04 63 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