programa problemas para online motores motor mejores mejor mas fuerte entrenar chessbase ajedrez resources chess

resources - problemas - ¿Cuáles son algunos buenos recursos para escribir un motor de ajedrez?



programa de ajedrez para entrenar (8)

Al crear mi motor de ajedrez, pasé meses intentando reunir buenos recursos que describen algunos de los aspectos más difíciles de crear un juego de ajedrez. Aquí hay una lista de los que encontré más útiles:

Programación de ajedrez por François Dominic Laramée

Este es el artículo que me metió en el ajedrez de la computadora. Es una gran descripción de cómo las computadoras juegan al ajedrez. Es extremadamente fácil de leer y le presentará todos los términos y palabras clave.

http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/chess-programming-part-i-getting-started-r1014

Wiki de ajedrez por computadora , esto realmente se ha expandido en los últimos meses. Es un excelente recurso para material de referencia.

http://chessprogramming.wikispaces.com/

Enlaces de ajedrez por computadora de Louis Kessler

Una vez que revisa los recursos anteriores, puede encontrar el resto en la siguiente página de enlaces.

http://www.lkessler.com/cclinks.shtml

Por último, pero no menos importante, escribo un blog de Computer Chess que lo guía a través de todos los pasos para escribir un motor de ajedrez en C # desde cero, incluye una sección de enlaces de ajedrez de la computadora y un kit de inicio del juego de ajedrez.

http://www.chessbin.com

Adam Berent

Estoy interesado en escribir un motor de ajedrez (sobre todo como ejercicio de aprendizaje) y me interesaría cualquier recurso que la gente conozca que pueda ser de interés o uso, cualquier cosa realmente: documentos, libros, teoría, tutoriales, cualquier cosa que pueda ser útil.


De mis archivos:


El artículo de Claude Shannon de 1949 (advertencia: PDF) sobre el tema es un buen lugar para comenzar


El mejor tutorial de programación de ajedrez para principiantes es en GameDev . Es muy fácil de entender, mientras que va mucho en detalles.


Esto es básicamente en el campo de la Inteligencia Artificial (AI).

La forma más común de hacer que una computadora "piense" en un juego de ajedrez es usar el método mini-max donde la computadora "piensa" al analizar los resultados de realizar diferentes movimientos con anticipación al estado actual.

La "bondad" de los resultados de diferentes movimientos se puede determinar a partir de muchos criterios, como la puntuación, el número de enemigos que quedan, el estado ganador, por ejemplo. Por ejemplo, si mueves al jugador hacia la derecha y ganas el juego, ese es un muy buen estado. Pero si lo mueves hacia la izquierda no obtienes nada. Es razonable moverse hacia la derecha. Esta función que define "bondad" generalmente se llama función heurística.

Este proceso se realiza recursivamente durante muchos turnos. Mientras mayor sea el número de giros, más tiempo necesitará. Y cuanto mayor sea el número de giros, más inteligente será su software. Pensar en el futuro en un solo turno solo puede resultar en una selección codiciosa. El software inteligente de ajedrez tiene una gran función heurística y piensa en el futuro en muchos turnos.

PD. Hay algunos detalles del algoritmo mini-max que no explique aquí, pero esto debería cubrir la idea básica.


La descripción de muchos algoritmos útiles en el ajedrez, frayn.net/beowulf/theory.html , debería ser un buen punto de partida para comprender la medida del problema y varias formas de simplificar el trabajo computacional.

-Adán


Me uní a la misma liga de Paul Wicks (arriba), yo también quiero escribir un motor de ajedrez para mi propio aprendizaje, solo la restricción es mi trabajo diario (que es trabajar en aburridos servicios web y esas cosas ...) pero vale la pena el dolor.

Decidí construirlo usando un enfoque capa por capa. Casi he terminado con la parte de jugadores múltiples, es decir (HUMAN vs HUMAN).

Una vez que haya terminado con esto, me encantaría incorporar la capa AI para apoyar el esquema de juego (COMPUTER vs HUMAN). Esta es la parte que más me preocupa, he encontrado muy buenos consejos de ayuda aquí en este hilo, un gran agradecimiento a todos ustedes.

Actualmente, el idioma con el que estoy versado es Java, en caso de que haya un golpe de rendimiento, entonces podría portarlo a C ++.


Siempre puedes echar un vistazo al código GNU Chess .