2009-10-04 8 views
5

Je suis à la recherche d'une IA d'échecs qui peut être exécutée sur Google App Engine. La plupart des IA d'échecs semblent être écrites en C et ne peuvent donc pas être exécutées sur le GAE. Il doit être assez fort pour battre un joueur occasionnel, mais suffisamment efficace pour pouvoir calculer un mouvement dans une seule requête (moins de 10 secondes).IA d'échecs pour GAE

Idéalement, il serait écrit en Python pour faciliter l'intégration avec le code existant.

je suis tombé sur quelques projets prometteurs mais ils ne regardent pas matures:

Répondre

5

Qu'est-ce qui ne va pas avec PyChess? C'est pur Python, assez mature, et sera certainement capable de battre un joueur occasionnel.

Il a été un moment que je l'ai utilisé PyChess, mais un rapide coup d'œil à travers some of the source indique-t que vous pouvez définir une limite de temps sur la durée de recherche d'un déménagement. Le moteur PyChess écrit en Python pur est au pychess.Utils. Plus précisément, si vous regardez pychess.Utils.lutils, vous pouvez voir par exemple the move generator written in Python.

+0

J'ai jeté un oeil à Pychess, mais les moteurs d'échecs qu'il utilise semblent être basés sur C: http://code.google.com/p/pychess/wiki/ChessEngines – hoju

+0

merci pour le pointeur! – hoju

+0

@Richard: Il supporte les moteurs C, à travers les classes CECPEngine et UCIEngine. Cependant le moteur qu'il regroupe, et qui est utilisé pour l'analyse interne, est écrit en Python. –

1

Ce problème est une mauvaise correspondance pour l'architecture GAE, qui est conçu pour des opérations CRUD efficaces, et pas des tâches gourmandes en ressources CPU. En pratique, tout ce qui prend plus de quelques dizaines de millisecondes par requête va faire exploser votre quota de CPU assez rapidement.

+0

encore, le quota de CPU libre est très généreux à 6,5 heures. Si le mouvement moyen de l'IA a pris ~ 3 CPU secondes (certains sont sur le livre) et il y a ~ 40 mouvements/jeu, alors cela me donnerait ~ 200 jeux/jour, ce qui est plus que nécessaire. (J'espère que mes hypothèses sont correctes) – hoju

+0

En fait, vous pouvez créer des moteurs puissants avec peu de puissance du processeur, si vous le faites correctement. Un bon moteur d'échecs élague si fortement l'arbre, que la somme des nœuds recherchés, par exemple, la profondeur 7 est à 1sec d'un langage interprété. –

+0

Si vous prenez plus de 500ms, votre processus est tué et votre utilisateur reçoit un HTTP 500. –