Coiled motor de ajedrez de protocolo UCI.

Coiled motor de ajedrez de protocolo UCI escrito en C.

¿Te apetece una partida al ajedrez?

Coiled. Versión 1.2

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.

Características

    - Protocolo:

    UCI.

    - Código abierto:

    - Tipo de licencia:

    GNU General Public License v3.0.

    - Sistema operativo:

    Windows y Linux 32&64 bit.

    - Multihilo:

    Si.

    - Variante Chess960:

    Si.

    - Soporta redes neuronales:

    Si. (NNUE)

    - Tablas de finales:

    No.

    - Libro de aperturas propio:

    No.

    - Lenguaje de programación:

    C.

    - Ponder:

    No.

    - ELO estimado:

    ± 2800 Interna. ± 3380 con NNUE.

    Incremento ± 75 con 4CPU

Técnicas utilizadas

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.

Singular.

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)

Multihilo:

Si.

Tabla de transposición:

Si.

Ponder:

No.

Tabla de finales:

No.

Libro de aperturas:

No.

Chess960:

Si.

Lenguaje de programación:

C

Modo de juego:

Por tiempo:

Convencional.

Convencional e incremental.

Por movimiento.

Profundidad.

Mate.

Infinito.

Imágenes

Coiled Coiled Coiled Coiled Coiled

Requisitos mínimo

Windows & Linux

X86

X64

PROCESADOR

Intel Pentium4 o Amd K7

Intel o Ahtlon con soporte MMX, SSE, SSE2

RAM

2 Mínimo.

4MB Mínimo.

Novedades

30-07-2023 - versión 1.2

Añadido

- Multi-Hilo para la búsqueda. Detección automática del numero de CPU máximo.

- Implementación singular extensión, basada en: Koivisto, Berserk, Seer.

- Implementación histórico de capturas, basada en: Ethereal, Berserk.

- En caso de no cargar una opción UCI correctamente, no enviá readyok, para evitar una mala configuración. Enviá "notready" (No estándar, del protocolo UCI)

 

Mejorado

- Solución al Histórico de jugadas, en partidas largas 300 jugadas o más.

- Estructura de almacenamiento Hash. Ahora ocupa 16 Bytes. Más Espacio de almacén con la misma memoria Hash definida.

- Opción UCI 'NnuePath' ahora: NnueFile.

- Opción UCI 'PreventTimeout' ahora: MoveOverhead. Para estandarizar los parámetros más usados/comunes como: Hash, Threads, OwnBook, Ponder, MoveOverhead...

- Control de tiempo.

- Opción hashfull, ahora la variable no se reinicia en cada jugada y llega al 100%.

- Incremento de ELO: 50± Interno. 50± NNUE.

- Perft, ahora soporta Multi-Hilo. Mucho más rápido. Se configura mediante la opción UCI 'Threads'

- Errores menores.

- Estabilidad.

 

Corregido

- Memory leak en la función SplitString. (Que mal llevo los string o array de tipo char y/o punteros)

- Memory leak al reservar la memoria Hash. (malloc) en la versión de 64bit

- Memory leak con stdin.

 

Eliminado

- Opción UCI: NnueUse, NnueTechnology, OwnBook, OwnBookLimit, Chess960CastlingSign.

- Las .DLL, ya que no soportan multi-hilo.

- La carga automática de una red neuronal (NNUE).

- La función EntradaStdIn. (Ya no es necesaria)

- He decidido eliminar el libro de aperturas propio. Ya que la GUI es la que se encarga de plantear una apertura. También se elimina las librerías sqlite3_x86.dll y sqlite3_x64.dll encargadas de gestionar el libro de aperturas.

- Tablas de finales: Gaviota, Scorpio y Syzygy.

Versiones anteriores

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 (NNUE)

ELO ± 3150. Coiled 0.8 (NNUE)

ELO ± 3200. Coiled 0.9 (NNUE)

ELO ± 3250. Coiled 1.0 (NNUE)

ELO ± 3300. Coiled 1.1 (NNUE)

Enlaces de interés

Interfaces o GUIs

Arena Chess GUI

The Tarrasch Chess GUI

Cute Chess

PyChess

WinBoard - XBoard

Torneos de motores

CCRL rating lists 40/4

CEGT rating lists 4/40 ( 2GHz)

Ajedrez por internet

Play Chess Online - Free Games

Ajedrez en línea gratis

Strategic Test Suite

STS Strategic Test Suite

Todo sobre las técnicas aplicables a un motor

Chess programming wiki

Enciclopedia de todos los motores de ajedrez

Chess Engine List

Foros de ajedrez - Hispanos

Foro SiliconChess - Programas de Ajedrez y Actualidad

Foro gratis : AjedreMas

Foros de ajedrez - Ingles

Foro de ajedrez

Foro de ajedrez

CCRL Public - CCRL Discussion Board

Foro de ajedrez

Winboard Forum

Página web hispanos. Torneos, Ranking, Información...

Motores de Ajedrez Hispanos