2009-10-04 20 views
5

Ich bin auf der Suche nach einer Schach-KI, die auf Google App Engine ausgeführt werden kann. Die meisten Schach-KIs scheinen in C geschrieben zu sein und können daher nicht auf dem GAE laufen. Es muss stark genug sein, um einen gelegentlichen Spieler zu schlagen, aber effizient genug, um einen Zug innerhalb einer einzigen Anfrage zu berechnen (weniger als 10 Sekunden).Schach AI für GAE

Idealerweise würde es in Python geschrieben werden, um die Integration in vorhandenen Code zu erleichtern.

stieß ich auf ein paar vielversprechenden Projekte, aber sie sehen nicht reif:

Antwort

5

Was ist los mit PyChess? Es ist pures Python, ziemlich ausgereift und wird sicherlich einen Gelegenheitsspieler schlagen können.

Es ist eine Weile her, seit ich PyChess verwendet habe, aber ein kurzer Blick durch some of the source tut zeigen an, dass Sie eine Frist, wie lange für einen Umzug suchen einstellen.

Die PyChess-Engine, die in reinem Python geschrieben wird, ist in pychess.Utils. Wenn Sie sich beispielsweise pychess.Utils.lutils ansehen, sehen Sie beispielsweise the move generator written in Python.

+0

Ich habe mir die PYCHESS angeschaut, aber die verwendeten Schach-Engines scheinen C-basiert zu sein: http://code.google.com/p/pychess/wiki/ChessEngines – hoju

+0

danke für den Zeiger! – hoju

+0

@Richard: Es unterstützt C-Motoren, durch die CECPEngine und UCIEngine-Klassen. Die Engine, die es bündelt und die für die interne Analyse verwendet wird, ist jedoch in Python geschrieben. –

1

Dieses Problem ist ein schlechtes Spiel für die GAE-Architektur, die entworfen ist, für effiziente CRUD-Operationen und keine CPU-intensiven Aufgaben. In der Praxis wird alles, was mehr als ein paar zehn Millisekunden pro Anfrage erfordert, Ihre CPU-Quote ziemlich schnell sprengen.

+0

immer noch ist die freie CPU-Quote bei 6,5 Stunden sehr großzügig. Wenn die durchschnittliche KI-Bewegung ~ 3 CPU-Sekunden brauchte (einige sind im Buch) und ~ 40 Züge/Spiel, dann würde ich ~ 200 Spiele/Tag bekommen, was mehr ist, als ich brauche. (Hoffe, meine Annahmen sind richtig) – hoju

+0

Eigentlich können Sie starke Motoren mit nicht so viel CPU-Leistung erstellen, wenn Sie es richtig machen. Eine gute Schach-Engine beschneidet den Baum so stark, dass die Summe der gesuchten Knoten, zum Beispiel Tiefe 7, innerhalb von 1 Sek. Einer interpretierten Sprache liegt. –

+0

Wenn Sie mehr als 500 ms benötigen, wird Ihr Prozess beendet und Ihr Benutzer erhält ein HTTP 500. –