Versión del motor:
0.5
Fecha de publicación:
16 - Julio - 2018
Versiones disponibles:
Windows de 32 y 64 bits.
Protocolo de comunicación:
UCI
1) Introducción.
2) Instalación.
3) Requisitos.
4) Progreso de ELO.
5) Técnicas utilizadas.
6) Los planes futuros.
7) Contenido.
8) Opciones UCI.
9) Rendimiento.
10) Licencia.
11) Créditos.
Todo empezó cuando decidí actualizar el programa de AjedrezNet a una versión más moderna, utilizando la plataforma Framework .Net
Intenté realizar la migración de AjedrezNet a .Net y no me terminó de gustar y empecé a reescribir todo el código con una estructura mejorada.
Al llegar a la sección del algoritmo de los movimientos que se pueden realizar, que también intenté migrar a .Net ví que era una burrada de código y poco optimizado, entonces empecé a mirar de generar un motor de ajedrez.
Algo que tenia en mente realizar para que AjedrezNet tuviera su propio motor o IA pero que nunca realicé.
Ahora tengo la parte gráfica (AjedrezNet) aparcada y estoy volcado en el motor Coiled.
En un principio el motor lo realicé en Vb .Net ya que la idea era integrarlo a la parte gráfica (AjedreNet).
Pero su rendimiento no me terminaba de gustar. Al final opté por migrar a C.
También reconozco que me ha costado y me cuesta manejar C, ya que no he programado nunca en C, sobre todo el trato con cadenas (lo que sería un string), pero la sintaxis es parecida a php (sintaxis que conozco) y casi todo el programa son funciones matemáticas.
He utilizado CodeBlocks con MinGW versión 6.3.0, para su compilación para Windows.
Coiled no incluye de un tablero de ajedrez, solo calcula los movimientos. Requiere de una parte gráfica para jugar cómodamente. Existen muchos programas para esta tarea, paso a enumerar unos cuantos.
Entornos gratuito
Entornos comercial
Descomprimir el archivo coiled_0.5.zip en una carpeta, donde tenga su colección de motores. Apto seguido abrir la GUI preferida y buscar el motor Coiled para su instalación.
Para una correcta instalación consulte el manual de la GUI de como instalar un motor.
Coiled funciona tanto en 32bit como 64bit, solo debe seleccionar el archivo correcto:
- 32 bit: Coiled_05_x86.exe
- 64 bit: Coiled_05_x64.exe
X86
X64
PROCESADOR
Intel Pentium o AMD-K6. (Instrucciones x86)
Intel Core 2 o Ahtlon 64 (MMX, SSE, SSE2)
RAM
128MB Mínimo. 1GB Máximo
128MB Mínimo. 2GB Máximo
Versión 0.3 No publicada. Se incremento en 250. Dado así una fuerza de 2250 ELO
La versión actual de Coiled 0.5 calculo que alcanza los 2600 ELO.
Protocolo:
UCI.
Representación del tablero:
Mailbox. 8x8 unidimensional tipo entero.
Generador:
Sencillo.
Búsqueda:
Profundidad iterativa.
Ventana de aspiración..
PVS / Alpha-Beta.
Quiescence.
Reducciones y podas:
Distancia mate.
Movimiento nulo R = 3..
Reducciones de movimientos finales. (LMR)
Tabla de transposición.
Futility.
Razoring.
See (Static Exchange Evaluation).
Extensiones:
Jaque.
Peón en séptima..
Ordenación:
PV.
Tabla de transposición.
Profundización iterativa Interna. (IID)
MVV / LVA.
Killer heurístico.
Histórico heurístico.
Evaluación:
Evaluación balanceada.
Estado de juego mediante (Phase)
Material.
Posición de las piezas en el tablero.
Estructura de peones.
Pasado.
Aislado.
Retrasado.
Doblados.
Imparable.
Candidato.
Candidato falso. (Fake).
Peón pasado oculto (Hidden passed).
Alfil
Pareja de alfiles.
Atrapado.
Alfil ataques y defensas.
Movilidad.
Caballo
Outposts.
Atrapado.
Caballo ataques y defensas..
Movilidad.
Torre
En fila abierta y semi-abierta.
En séptima.
Atrapada.
Bloqueada.
Torre ataques y defensas.
Movilidad.
Seguridad rey.
Enroque.
Estructura de peones.
Ataques en conjunto.
Tropismo.
Finales (KP vs k, KBN vs k, KR vs k, KQ vs k, KBB vs K...) ampliada y mejorada.
Otros:
Detección final del juego con las reglas de la FIDE.
Incluyendo triple repetición y la regla de 50 movimientos.
Tablas por material insuficiente: KNN vs k, KB vs k...
Tabla de transposición:
Si.
Pawn Hash Table:
Si.
Tabla de finales:
Gaviota. Por Miguel Ballicora.
Ponder:
No. Anulado en esta versión.
Libro de aperturas:
Si. Formato SqlIte.
Lenguaje de programación:
C
Modo de juego:
Control por tiempo (convencional, incremental y tiempo fijo por movimiento), profundidad fija, infinito (para análisis de archivos .epd tipo wac.epd en el entorno Arena).
Elo estimado:
±2600 (?).
Alcanzar un Elo de 2000 o 2500. Ya que con el formato de representación del tablero elegido, creo que es lo máximo.
Con activación de casi todas las opciones soportadas por el protocolo UCI.
Integrarlo a la parte gráfica (AjedrezNet)
Coiled_05_x86.exe
Motor para Windows de 32Bits.
Coiled_05_x64.exe
Motor para Windows de 64Bits.
sqlite_x86.dll
Librería para manejar el libro de aperturas, formato sqlite de 32Bits para Windows.
sqlite_x64.dll
Librería para manejar el libro de aperturas, formato sqlite de 64Bits para Windows.
gtbprobe_x86.dll
Librería para manejar las tablas de finales de Gaviota de 32Bits para Windows.
gtbprobe_x64.dll
Librería para manejar las tablas de finales de Gaviota de 64Bits para Windows.
Book.db
Libro de aperturas en formato SqlIte.
Leeme.html
Este archivo.
Coiled.bmp
Logotipo de Coiled.
Coiled.jpg
Logotipo de Coiled.
Hash
Para ajustar el tamaño de la tabla hash. (por defecto: 128Mb)
OwnBook
Para usar el libro propio del motor. (por defecto: false)
OwnBookLimit
Para limitar el numero de jugadas máximas obtenidas desde el libro de apertura. (por defecto: 8)
ShowPv
Para limitar la información enviada a la GUI, tales como: Estado de la tabla hash, nodos analizados, puntuación y la variante principal.
GaviotaTbUse
Para activar/desactivar el uso de tablas de finales de Gaviota. (por defecto: false)
GaviotaTbPath
Para asignar la ruta de las tablas de finales de Gaviota. (por defecto: Vacío)
GaviotaTbCache
Para asignar la cachea de las tablas de finales de Gaviota. (por defecto: 32Mb)
GaviotaTbCompression
Para asignar el tipo de compresión de las tablas de finales. (por defecto: 4)
Existe la opción de realizar un perft para descubrir fallos en la generación de movimientos, los pasos son:
- Desde una posición inicial:
ucinewgame
perft <X> (Realiza una búsqueda de todos los movimientos hasta la profundidad X, con divide)
- Desde una posición en concreto:
position fen 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -
perft <X> (Realiza una búsqueda de todos los movimientos hasta la profundidad X, con divide)
- También esta la opción de comprobar la integración del libro de apertura, ya que es fácil su manipulación, inserción y eliminación de aperturas:
book (Comprueba la integridad del las jugadas en las aperturas del libro. Máximo 100 caracteres por registro el resto lo omite.)
Coiled es libre de ser usado y distribuido libremente sin ninguna restricción, salvo modificaciones de su contenido.
Se ha probado en gran medida sin causar ningún problema.
Utilice este programa bajo su propio riesgo.
Este programa es un producto sin garantía.
En ningún caso, el autor se hace responsable de los daños y perjuicios derivados de la utilización de este programa.
Estoy muy agradecido a las siguientes personas:
- A mi familia y amigos, que siempre están ahí para ayudar.
- A todos aquellos que han decidido compartir el código fuente de sus motores (Me han aclarado funciones y entendimiento de ellos).
- A la web CPW http://chessprogramming.wikispaces.com por todo el contenido sobre las técnicas aplicables a un motor ajedrez.
- A todos aquellos que han jugado con el motor y han publicado su experiencia y opiniones.
- A los archivos .epd de posiciones estratégicas tipo: WAC, IQ6, mes400... En especial a la web https://sites.google.com/site/strategictestsuite/
- A la web CCRL 40/4 por realizar un torneo y darle una clasificación de ELO.
- A la web CEGT 40/4 por realizar un torneo y darle una clasificación de ELO.
- A la web E4E6 por realizar un torneo y darle una clasificación de ELO.
- A toda web que haya publicado una clasificación ELO o/y haya añadido un enlace a mi web.
- A Pedro Castro por ser el primero en probar y realizar un torneo. Autor de la web Motores de ajedrez hispanos y autor de DanaSah.
- A la web Motores de Ajedrez Hispanos por realizar su primer torneo y darle una clasificación de ELO en su primera versión.