Coiled motor de ajedrez de protocolo UCI escrito en C.
¿Te apetece una partida al ajedrez?
¿Te apetece una partida al ajedrez?
Coiled es un IA de ajedrez de protocolo UCI escrito en C. Es un programa de línea de comandos (Aplicación de consola), que no está diseñado para usarse directamente, sino a través de una interfaz de usuario o GUI, con capacidad para tratar el protocolo UCI, como: Cute Chess, Tarrasch, Banksia, c-chess-cli, Arena, Fritz...
Su origen empezó hace un tiempo, cuando decidí actualizar el programa de AjedrezNet (AjedrezNet es una GUI que es capaz de gestionar motores de ajedrez de protocolo XBoard, realizado en vb6) a una versión más moderna, utilizando la plataforma Framework .Net, con mejor soporte para Windows Vista, Windows 7 y 10.
Reconozco que me ha costado y me cuesta manejar C, ya que no he programado nunca en este formato, sobre todo el trato con cadenas (lo que sería un string). Sin embargo, la sintaxis es parecida a PHP (sintaxis que sí conozco) y casi todo el programa son funciones matemáticas y poco trato con cadenas.
En agosto del 2013, Coiled fue publicado por primera vez para el usuario final. Desde entonces, he ido realizando actualizaciones, depurando errores, incrementando su fuerza de ELO, etc.
Actualmente Coiled es capaz de jugar a la variante Chess960, usar tablas de finales, soporta redes neuronales aunque hay algunas redes neuronales que no pueda cargar, sobre todo los de tamaño de 40MB.
Existen muchos motores de ajedrez hoy en día. Cada uno con su técnica o forma de juego diferente. Como las personas.
Para leer más sobre algunas de las técnicas utilizadas en Coiled, consulte la página Wiki de programación de ajedrez de Chess programming Coiled. (inglés)
Ahora Coiled es de código abierto.
Quiero aportar mi pequeño granito de arena a la comunidad de investigación, que tanto me ha aportado a mi en la creación de Coiled.
Espero no infligir nada, no ofender a nadie y de ser así hablar del tema.
Toda ayuda y mejora sera bien recibida.
También quiero decir que es mi primer proyecto de código abierto.
- Protocolo:
UCI.
- Código abierto:
Si. Coiled in github
- Tipo de licencia:
GNU General Public License v3.0.
- Sistema operativo:
Windows y Linux 32&64 bit.
- Variante Chess960:
Si.
- Soporta redes neuronales:
Si. (NNUE)
- Tablas de finales:
Si. Syzygy, Gaviota y Bitbases.
- Libro de aperturas propio:
Si, formato SqlIte.
- Lenguaje de programación:
C.
- Ponder:
No.
- Multihilo:
No.
- ELO estimado:
± 3300 NNUE. ± 2675 Interna.
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 poda.
Reducciones de movimientos finales. (LMR)
Poda de movimientos finales. (LMP)
Beta Pruning or Static Null Move Pruning
Tabla de transposición poda.
Profundización iterativa reducción. (IIR)
See (Static Exchange Evaluation).
Extensiones:
Jaque.
Ordenación:
Movimiento Hash.
Profundización iterativa Interna. (IID)
MVV / LVA.
Killer heurístico.
Histórico heurístico.
Movimiento refutación.
See (Static Exchange Evaluation).
Evaluación:
Redes neuronales (NNUE).
o
Evaluación interna:
Estado de juego.
Material.
Posición de las piezas en el tablero.
Estructura de peones.
Pasado.
Aislado.
Retrasado.
Doblados.
Alfil
Pareja de alfiles.
Movilidad.
Caballo
Movilidad.
Torre
Fila abierta y semiabierta.
En séptima.
Movilidad.
Dama
Movilidad.
Seguridad rey.
Estructura de peones.
Ataques en conjunto.
Reconocimiento de nodo interno Finales:
En construcción
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.
Soporta redes neuronales:
Si. (Formato NNUE)
Tabla de transposición:
Si.
Ponder:
No.
Tabla de finales:
Si. Syzygy. Por Ronald de Man.
Si. Gaviota. Por Miguel Ballicora. *
Si. BitBases. Por daniel shawul.
Libro de aperturas:
Si. (Sqlite)
Chess960:
Si.
Lenguaje de programación:
C
Modo de juego:
Por tiempo:
Convencional.
Convencional e incremental.
Por movimiento.
Profundidad.
Mate.
Infinito.
ELO estimado:
± 3300 NNUE. ± 2675 Interna. ELO
* Formato de compresión .cp4 (LZMA).
Windows & Linux
X86
X64
PROCESADOR
Intel Pentium Pro o Amd K7
Intel o Ahtlon con soporte MMX, SSE, SSE2
RAM
16MB Mínimo.
64MB Mínimo.
11-11-2021 - versión 1.1
Añadido
- Compilación para linux versión de 32 y 64 bit.
- Opción PreventTimeout. Pare evitar timeout en partidas por tiempo.
Mejorado
- Detección de tecnología SSE2, SSE3, SSE4.1 y AVX2. Para NNUE. Con __builtin_cpu_supports
- Control de tiempo, inspirado en Ethereal. (Blitz)
- Incremento de ELO ± 3300 NNUE. Y ± 2600 Interno.
- Estabilidad.
Corregido
- Fallo en buffer en partidas largas de 180 jugadas en adelante. Realizando movimientos ilegales. Eliminación setbuf(stdout, NULL); setbuf(stdin, NULL); hPly = 0. Modificado el método SplitString. Test 960 partidas, 0 jugadas ilegales.
- Compilación en linux, definiciones múltiples... gcc 10.2.1.
- Syzygy, fallo en la comprobación del resultado. TB_LOSS y TB_WIN.
- Mejorado el acceso a las tablas de finales.
- Fallo en el movimiento refutacion. En almacenar y al recuperar.
- Errores menores.
Eliminado
- Comprobación de las tablas de finales en root.
ELO ± 1725. Coiled 0.1a.
ELO ± 1925. Coiled 0.2b.
ELO ± 2500. Coiled 0.4.
ELO ± 2600. Coiled 0.5.
ELO ± 2600. Coiled 0.6.
ELO ± 3050. Coiled 0.7.
ELO ± 3150. Coiled 0.8.
ELO ± 3200. Coiled 0.9.
ELO ± 3250. Coiled 1.0.
Interfaces o GUIs
Torneos de motores
CEGT rating lists 4/40 ( 2GHz)
Ajedrez por internet
Play Chess Online - Free Games
Strategic Test Suite
Todo sobre las técnicas aplicables a un motor
Enciclopedia de todos los motores de ajedrez
Foros de ajedrez - Hispanos
Foro SiliconChess - Programas de Ajedrez y Actualidad
Foros de ajedrez - Ingles
CCRL Public - CCRL Discussion Board
Página web hispanos. Torneos, Ranking, Información...