Coiled 0.2b - Motor de ajedrez por Oscar Gavira. España.

Versión del motor: 0.2b
Fecha de publicación: 21 - Julio - 2014
Versiones disponibles: Windows/Linux de 32 y 64 bits
Protocolo de comunicación: UCI

Tabla de contenido

1) Introducción.

2) Descripción general.

3) Los planes futuros.

4) Contenido.

5) Opciones UCI.

6) Rendimiento.

7) Licencia.

8) Créditos.


Introducción

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 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 y casi todo el programa son funciones matemáticas.


He utilizado CodeBlocks con GNU GCC, para su compilación, tanto para Windows como para Linux.


Por el momento, Coiled estimo que tiene alrededor de 1725 ELO es su versión 0.1a

Según CCRL 40/4 - 1707 ELO.

Según Motores de Ajedrez Hispanos - 1758 ELO.


Descripción general

Coiled tiene las siguientes características:


Protocolo: UCI.
Representación del tablero: Vector lineal de 64. Tipo entero.
Generador de movimientos: Sencillo.
Búsqueda: Profundidad iterativa.
PVS/Alpha-Beta.
Quiescence.
Reducciones/Podas: Distancia mate.
Movimiento nulo.
Reducciones de movimientos finales.
Tabla de transposición.
Futility.
Razoring.
Captures. (Margen + See).
Extensiones: Jaque.
Peón pasado.
Ordenación de movimientos: PV.
Tabla de transposición.
Profundización iterativa Interna. (IID)
MVV/LVA.
Killer heurístico.
Historico heurístico.
Evaluación: Material.
Posición de las piezas en el tablero.
Estructura de peones.
Peón retrasado.
Peón candidato.
Peón doblados.
Peón aislado.
Peón pasado.
Pareja de alfiles.
Alfil malo.
Alfil atrapado.
Caballo atrapado.
Caballo Outposts.
Caballo valor decreciente según desaparecen los peones.
Torre valor creciente según desaparecen los peones.
Torre en fila abierta y semi abierta.
Torre en octavo.
Torre atrapada.
Torre bloqueada.
Seguridad del rey.
Enroque.
Estructura de peones.
Finales (KP vs k, KBN vs k, KR vs k, KD vs k, KBB vs K).
Otros: Detección del final del juego con las reglas de la FIDE, incluyendo triple repetición y la regla de 50 movimientos.
Tablas por material insuficiente con (KNN vs k, K vs knn, (KR vs k, K vs kr)...
Tabla de transposición: Si.
Libro de aperturas: No.
Lenguaje de programación: C
Modo de juego: Control por tiempo (convencional, incremental y tiempo fijo por movimiento) o profundidad fija.
Elo estimado: ± 2000 (?).

Planes futuros

Alcanzar un Elo de 2000 o 2200 con activación de casi todas las opciones soportadas por el protocolo UCI.

Integrarlo a la parte gráfica (AjedrezNet)


Contenido

- Coiled_02b_x86.exe -> Motor para Windows de 32Bits.

- Coiled_02b_x64.exe -> Motor para Windows de 64Bits.

- Coiled_02b_x86 -> Motor para Linux de 32Bits.

- Coiled_02b_x64 -> Motor para Linux de 64Bits.

- Leeme.html -> Este archivo.

- Leeme.txt -> Igual que Leeme.html.

- Coiled.bmp -> Logotipo de Coiled.

- Coiled.jpg -> Logotipo de Coiled.


Opciones Uci

Hash -> Para ajustar el tamaño de la tabla hash (por defecto: 64)


Rendimiento

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)


Licencia

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.


Créditos

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 la web CCRL 40/4 por realizar un torneo y darle una clasificación de ELO.

- A la web Motores de Ajedrez Hispanos por realizar un torneo y darle una clasificación de ELO.

- 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.