2009-10-04 23 views
5

Sto cercando un AI di scacchi che può essere eseguito su Google App Engine. La maggior parte degli IA di scacchi sembrano scritti in C e quindi non possono essere eseguiti su GAE. Deve essere abbastanza forte da battere un giocatore casuale, ma abbastanza efficiente da poter calcolare una mossa all'interno di una singola richiesta (meno di 10 secondi).scacchi IA per GAE

Idealmente sarebbe scritto in Python per una più facile integrazione con il codice esistente.

mi sono imbattuto in un paio di progetti promettenti, ma non guardano maturo:

risposta

5

Cosa c'è che non va con PyChess? È puro Python, abbastanza maturo, e sarà sicuramente in grado di battere un giocatore occasionale.

E 'stato un po' che ho usato pychess, ma una rapida occhiata attraverso some of the source fa indicano che è possibile impostare un limite di tempo su quanto tempo per la ricerca di una mossa.

Il motore PyChess scritto in Python puro è in pychess.Utils. Nello specifico, se si guarda pychess.Utils.lutils, è possibile vedere ad esempio the move generator written in Python.

+0

Ho dato un'occhiata a pychess, ma i motori di scacchi che utilizza sembrano essere basati su C: http://code.google.com/p/pychess/wiki/ChessEngines – hoju

+0

grazie per il puntatore! – hoju

+0

@Richard: supporta i motori C, attraverso le classi CECPEngine e UCIEngine. Tuttavia il motore che impacchetta e che viene usato per l'analisi interna, è scritto in Python. –

1

Questo problema è un match povero per l'architettura GAE, che è stato progettato per le operazioni CRUD efficienti e non per le attività a uso intensivo della CPU. In pratica, tutto ciò che richiede più di qualche decina di millisecondi per richiesta farà saltare in aria la quota della CPU abbastanza rapidamente.

+0

ancora, la quota CPU gratuita è molto generosa a 6,5 ​​ore. Se la mossa media di intelligenza artificiale ha richiesto ~ 3 secondi CPU (alcuni sono in libro) e ci sono ~ 40 mosse/gioco, allora questo mi darebbe ~ 200 giochi/giorno, che è più del necessario. (Spero che le mie supposizioni siano corrette) – hoju

+0

In realtà è possibile creare motori potenti con poca potenza della cpu, se lo si fa correttamente. Un buon motore di scacchi sfrutta l'albero in modo così pesante, che la somma dei nodi cercati, per esempio, la profondità 7 è entro 1 secondo da un linguaggio interpretato. –

+0

Se si prendono più di 500ms circa, il processo viene ucciso e l'utente riceve un HTTP 500. –