Este artículo es parte de la serie sobre |
Programación de ajedrez |
---|
En ajedrez por computadora , un motor de ajedrez es un programa de computadora que analiza posiciones de ajedrez o variantes de ajedrez y genera un movimiento o una lista de movimientos que considera como los más fuertes. [1]
Un motor de ajedrez suele ser un back end con una interfaz de línea de comandos sin gráficos ni ventanas . Los motores suelen utilizarse con un front end, una interfaz gráfica de usuario con ventanas como Chessbase o WinBoard con la que el usuario puede interactuar a través de un teclado, un ratón o una pantalla táctil. Esto permite al usuario jugar contra varios motores sin tener que aprender una nueva interfaz de usuario para cada uno y permite que diferentes motores jueguen entre sí.
Actualmente hay muchos motores de ajedrez disponibles para teléfonos móviles y tabletas, lo que los hace aún más accesibles.
El significado del término "motor de ajedrez" ha evolucionado con el tiempo. En 1986, Linda y Tony Scherzer inscribieron su programa Bebe en el 4º Campeonato Mundial de Ajedrez por Computadora , ejecutándolo en "Chess Engine", su nombre comercial para el hardware de computadora de ajedrez [2] fabricado y comercializado por su compañía Sys-10, Inc. [3] En 1990, los desarrolladores de Deep Blue , Feng-hsiung Hsu y Murray Campbell , estaban escribiendo sobre darle a su programa un "motor de búsqueda", aparentemente refiriéndose al software en lugar del hardware. [4] En diciembre de 1991, Computer-schach & Spiele se refirió al recientemente lanzado Fritz de Chessbase como un "Schach-motor", la traducción alemana de "motor de ajedrez". [5] A principios de 1993, Marty Hirsch ya estaba haciendo una distinción entre los programas comerciales de ajedrez como Chessmaster 3000 o Battle Chess , por un lado, y los "motores de ajedrez" como ChessGenius o su propio MChess Pro , por el otro. En su caracterización, los programas comerciales de ajedrez tenían un precio bajo, tenían gráficos elegantes, pero no ocupaban un lugar destacado en las listas de clasificación de la SSDF ( Asociación Sueca de Computación de Ajedrez ), mientras que los motores eran más caros y sí tenían altas calificaciones. [6]
En 1994, Shay Bushinsky estaba trabajando en una versión preliminar de su programa Junior . Quería centrarse en la parte del juego de ajedrez en lugar de en los gráficos, por lo que le preguntó a Tim Mann cómo podía lograr que Junior se comunicara con Winboard . La respuesta de Tim formó la base de lo que se conocería como el Protocolo de comunicación de motores de ajedrez o motores Winboard, originalmente un subconjunto de la interfaz de línea de comandos de GNU Chess . [7]
También en 1994, Stephen J. Edwards publicó la especificación Portable Game Notation (PGN). En ella se menciona que los programas de lectura de PGN no necesitan tener un "motor de ajedrez completo". También se mencionan tres "interfaces gráficas de usuario" (GUI): XBoard , pgnRead y la base de datos Slappy. [8]
A mediados de la década de 2000, los motores se habían vuelto tan potentes que podían vencer incluso a los mejores jugadores humanos. Salvo con fines de entretenimiento, especialmente con el uso de motores con una potencia limitada, los enfrentamientos entre humanos y motores son ahora poco frecuentes; los motores se consideran cada vez más herramientas de análisis en lugar de oponentes.
Los motores Winboard más comunes incluyen Crafty , ProDeo (basado en Rebel ), Chenard, Zarkov y Phalanx.
En 1995, Chessbase lanzó una versión de su programa de base de datos que incluía Fritz 4 como motor independiente. Esta fue la primera aparición del protocolo Chessbase. Poco después, agregaron los motores Junior y Shredder a su línea de productos, incluyendo motores en protocolo CB como programas separados que podían instalarse en el programa Chessbase o en una de las otras GUI de estilo Fritz. Fritz 1-14 solo se lanzaron como motores Chessbase, mientras que Hiarcs , Nimzo, Chess Tiger y Crafty se han portado al formato Chessbase a pesar de que eran motores UCI o Winboard. Recientemente, Chessbase ha comenzado a incluir motores Universal Chess Interface (UCI) en sus programas de juego, como Komodo , Houdini , Fritz 15-16 y Rybka en lugar de convertirlos a motores Chessbase.
En 2000, Stefan Meyer-Kahlen y Franz Huber lanzaron la Interfaz Universal de Ajedrez , un protocolo más detallado que introdujo un conjunto más amplio de características. Poco después, Chessbase abandonó el soporte para los motores Winboard y agregó soporte para UCI a las GUI de sus motores y a los programas de Chessbase . La mayoría de los motores más importantes son UCI en la actualidad: Stockfish , Komodo , Leela Chess Zero , Houdini , Fritz 15-16, Rybka , Shredder , Fruit , Critter , Ivanhoe y Ruffian.
A partir de 1998, la empresa alemana Millenium 2000 pasó brevemente de los ordenadores dedicados al ajedrez al mercado del software, desarrollando el protocolo Millennium Chess System (MCS) para una serie de CD que contenían ChessGenius o Shredder , pero después de 2001 dejó de lanzar software nuevo. [9] La empresa holandesa Lokasoft ha utilizado un protocolo de motor más antiguo, [10] que finalmente se hizo cargo de la comercialización de Rebel de Ed Schröder .
Los motores de ajedrez aumentan su fuerza de juego continuamente. Esto se debe en parte al aumento de la potencia de procesamiento que permite realizar cálculos cada vez más profundos en un tiempo determinado. Además, las técnicas de programación han mejorado, lo que permite a los motores ser más selectivos en las líneas que analizan y adquirir una mejor comprensión posicional. Un motor de ajedrez a menudo utiliza un vasto "libro" de aperturas previamente calculado para aumentar su fuerza de juego durante los primeros movimientos, posiblemente hasta 20 movimientos o más en líneas analizadas en profundidad. [ cita requerida ]
Algunos motores de ajedrez mantienen una base de datos de posiciones de ajedrez, junto con evaluaciones calculadas previamente y mejores jugadas; en efecto, una especie de "diccionario" de posiciones de ajedrez recurrentes. Como estas posiciones están calculadas previamente, el motor simplemente realiza una de las jugadas indicadas en la base de datos, ahorrando así tiempo de cálculo y dando como resultado un juego más fuerte y rápido.
Algunos motores de ajedrez utilizan tablas de finales para aumentar su fuerza de juego durante el final . Una tabla de finales incluye todas las posibles posiciones de final con una pequeña cantidad de material. Cada posición se determina de manera concluyente como una victoria, una derrota o un empate para el jugador a quien le toca mover, y el número de movimientos hasta el final con el mejor juego de ambos bandos. La tabla identifica para cada posición el movimiento que ganará más rápido contra una defensa óptima, o el movimiento que perderá más lentamente contra una ofensiva óptima. Estas tablas están disponibles para todos los finales de ajedrez con siete piezas o menos (se excluyen las posiciones de final triviales, como seis piezas blancas contra un solo rey negro ). [11] [12]
Cuando la maniobra en un final para lograr una mejora irreversible requiere más movimientos que el horizonte de cálculo de un motor de ajedrez, no se garantiza que el motor encuentre el mejor movimiento sin el uso de una base de datos de finales y, en muchos casos, puede incumplir la regla de los cincuenta movimientos como resultado. Muchos motores utilizan el cerebro permanente (siguen calculando durante el turno del oponente) como método para aumentar su fuerza.
La computación distribuida también se utiliza para mejorar el código de software de los motores de ajedrez. En 2013, los desarrolladores del programa de juego de ajedrez Stockfish comenzaron a utilizar la computación distribuida para realizar mejoras en el código de software. [13] [14] [15] A junio de 2017 [update], se ha utilizado un total de más de 745 años de tiempo de CPU para jugar más de 485 millones de partidas de ajedrez, y los resultados se han utilizado para realizar mejoras pequeñas e incrementales en el software de juego de ajedrez. [16] En 2019, el autor de Ethereal, Andrew Grant, inició el marco de prueba de computación distribuida OpenBench, basado en el marco de prueba de Stockfish, [17] [18] y ahora es el marco de prueba más utilizado para motores de ajedrez. [ cita requerida ]
A finales de los años 1990, los mejores motores se habían vuelto tan fuertes que pocos jugadores tenían la posibilidad de ganar una partida contra ellos. Para dar a los jugadores más posibilidades, los motores comenzaron a incluir ajustes para ajustar o limitar su fuerza. En 2000, cuando Stefan Meyer-Kahlen y Franz Huber lanzaron el protocolo Universal Chess Interface , incluyeron los parámetros uci_limitstrength y uci_elo, permitiendo a los autores de motores ofrecer una variedad de niveles calificados de acuerdo con la calificación Elo , calibrada por una de las listas de calificación. La mayoría de las GUI para motores UCI permiten a los usuarios establecer esta calificación Elo dentro de los menús. Incluso los motores que no han adoptado este parámetro a veces tendrán un parámetro de fuerza ajustable (por ejemplo, Stockfish 11). Los motores que tienen un parámetro uci_elo incluyen Houdini , Fritz 15–16, Rybka , Shredder , Hiarcs , Junior , Zappa y Sjeng . Las GUI como Shredder , Chess Assistant , Convekta Aquarium, [19] Hiarcs Chess Explorer y Martin Blume's Arena [20] tienen menús desplegables para configurar el parámetro uci_elo del motor. Las GUI de la familia Fritz, Chess Assistant y Aquarium también tienen medios independientes para limitar la fuerza de un motor aparentemente basados en la capacidad de un motor para generar listas clasificadas de movimientos (llamadas multipv por 'variación de principio').
Los resultados de los torneos de ordenadores ofrecen una idea de la fortaleza relativa de los motores de ajedrez. Sin embargo, en los torneos no se juega una cantidad de partidas estadísticamente significativa para determinar con precisión la fortaleza. De hecho, la cantidad de partidas que deben jugarse entre motores bastante igualados para lograr una puntuación significativa asciende a miles y, por lo tanto, no es viable en el marco de un torneo. [21] La mayoría de los torneos también permiten cualquier tipo de hardware, por lo que solo se comparan combinaciones de motor y hardware.
Históricamente, los programas comerciales han sido los motores más potentes. Si un motor amateur gana un torneo o tiene un buen desempeño (por ejemplo, Zappa en 2005), se comercializa rápidamente. Los títulos obtenidos en estos torneos otorgan mucho prestigio a los programas ganadores y, por lo tanto, se utilizan con fines comerciales. Sin embargo, después del auge de los proyectos de computación distribuida voluntarios como Leela Chess Zero y Stockfish y los marcos de prueba como FishTest y OpenBench a fines de la década de 2010, los programas gratuitos y de código abierto han desplazado en gran medida a los programas comerciales como los motores más potentes en los torneos.
Los torneos actuales incluyen:
Los torneos históricos incluyen:
Las listas de clasificación de los motores de ajedrez tienen como objetivo proporcionar medidas estadísticamente significativas de la fuerza relativa de los mismos. Estas listas reproducen múltiples partidas entre los motores. Algunas también estandarizan los libros de aperturas, los controles de tiempo y el hardware informático que utilizan los motores, en un intento de medir únicamente las diferencias de fuerza de los motores. Estas listas proporcionan no solo una clasificación, sino también márgenes de error en las clasificaciones dadas.
Las puntuaciones de las listas de clasificación, aunque se calculan utilizando el sistema Elo (o métodos de clasificación similares), no tienen relación directa con las puntuaciones Elo de la FIDE ni con las puntuaciones de jugadores humanos de otras federaciones de ajedrez. A excepción de algunas partidas de hombre contra máquina que la SSDF había organizado hace muchos años (cuando los motores estaban lejos de la fuerza de hoy), no hay calibración entre ninguna de estas listas de clasificación y los grupos de jugadores. Por lo tanto, los resultados que importan son los rangos y las diferencias entre las clasificaciones, y no los valores absolutos.
En muchas listas de clasificación faltan IPPOLIT y sus derivados. Aunque son muy fuertes y de código abierto , existen acusaciones de intereses de software comercial de que se derivaron de un binario desensamblado de Rybka . [22] Debido a la controversia , todos estos motores han sido incluidos en la lista negra de muchos torneos y listas de clasificación. Rybka, a su vez, fue acusado de estar basado en Fruit , [23] y en junio de 2011, la ICGA afirmó formalmente que Rybka se derivaba de Fruit y Crafty y prohibió a Rybka del Campeonato Mundial de Ajedrez por Computadora de la Asociación Internacional de Juegos de Computadora, y revocó sus victorias anteriores (2007, 2008, 2009 y 2010). [24] La ICGA recibió algunas críticas por esta decisión. [25] A pesar de todo esto, Rybka todavía está incluido en muchas listas de clasificación, como CCRL y CEGT, además de Houdini , un derivado del derivado de IPPOLIT Robbolito, [26] y Fire, un derivado de Houdini. Además, Fat Fritz 2 , un derivado de Stockfish, [27] también está incluido en la mayoría de las listas de clasificación.
Hay una serie de factores que varían entre las listas de clasificación de motores de ajedrez:
Estas diferencias afectan los resultados y dificultan las comparaciones directas entre las listas de clasificación.
Las listas de clasificación actuales y las organizaciones de listas de clasificación incluyen:
Las listas de clasificación históricas y las organizaciones de listas de clasificación incluyen:
Los motores pueden probarse midiendo su rendimiento en posiciones específicas. Un uso típico es el de conjuntos de pruebas en los que para cada posición dada hay un mejor movimiento a encontrar. Estas posiciones pueden estar orientadas al juego posicional, táctico o de final de partida. El conjunto de pruebas Nolot , por ejemplo, se centra en los sacrificios profundos. [32] Los conjuntos de pruebas BT2450 y BT2630 miden la capacidad táctica de un motor de ajedrez y han sido utilizados por REBEL . [33] [34] También hay un conjunto de pruebas general llamado Brilliancy que se compiló principalmente a partir de How to Reassess Your Chess Workbook . [35] El Strategic Test Suite (STS) prueba la fuerza estratégica de un motor. [36] Otro conjunto de pruebas moderno es Nightmare II que contiene 30 problemas de ajedrez. [37] [ cita irrelevante ]
En 1999, Garry Kasparov jugó una partida de ajedrez llamada "Kasparov versus el mundo" a través de Internet , organizada por MSN Gaming Zone . Ambos bandos utilizaron la asistencia de un ordenador (motor de ajedrez). El "Equipo Mundial" incluyó la participación de más de 50.000 personas de más de 75 países, que decidieron sus movimientos por votación pluralista . La partida duró cuatro meses y finalizó después del movimiento 62 de Kasparov, cuando anunció un jaque mate forzado en 28 movimientos encontrados con el programa informático Deep Junior . Los votantes del Equipo Mundial dimitieron el 22 de octubre. Tras la partida, Kasparov dijo: "Es la mejor partida de la historia del ajedrez. La gran cantidad de ideas, la complejidad y la contribución que ha hecho al ajedrez la convierten en la partida más importante jamás jugada". [38]
Se han desarrollado algunos motores de ajedrez para jugar variantes del ajedrez , añadiendo el código necesario para simular piezas de ajedrez no estándar , o para analizar el juego en tableros no estándar. ChessV y Fairy-Max , por ejemplo, son capaces de jugar variantes en un tablero de ajedrez de hasta 12×8 de tamaño, como el Ajedrez Capablanca (tablero de 10×8).
Sin embargo, para tableros más grandes, hay pocos motores de ajedrez que puedan jugar de manera efectiva y, de hecho, las partidas de ajedrez jugadas en un tablero sin límites ( ajedrez infinito ) prácticamente no se ven afectadas por el software de juego de ajedrez, aunque teóricamente un programa que use un algoritmo derivado de MuZero podría manejar un espacio de estados ilimitado .
XBoard / Winboard fue una de las primeras interfaces gráficas de usuario (GUI). Tim Mann la creó para proporcionar una GUI para el motor de ajedrez GNU , pero después aparecieron otros motores como Crafty que utilizaban el protocolo Winboard. Finalmente, el programa Chessmaster incluyó la opción de importar otros motores Winboard además del motor King que ya estaba incluido.
En 1995, Chessbase comenzó a ofrecer el motor Fritz como un programa independiente dentro del programa de base de datos de Chessbase y dentro de la interfaz gráfica de usuario de Fritz. Poco después, añadieron los motores Junior y Shredder a su línea de productos, empaquetándolos dentro de la misma interfaz gráfica de usuario que se utilizaba para Fritz. A finales de los años 90, la interfaz gráfica de usuario de Fritz podía ejecutar motores Winboard mediante un adaptador, pero después de 2000, Chessbase simplemente añadió compatibilidad con motores UCI y ya no invirtió mucho esfuerzo en Winboard.
En 2000, Stefan Meyer-Kahlen comenzó a vender Shredder en una GUI UCI separada de su propio diseño, lo que permitía importar motores UCI o Winboard.
Chess Assistant de Convekta y ChessPartner de Lokasoft también añadieron la capacidad de importar motores Winboard y UCI a sus productos. Shane Hudson desarrolló Shane's Chess Information Database , una interfaz gráfica de usuario gratuita para Linux, Mac y Windows. Martin Blume desarrolló Arena, [20] otra interfaz gráfica de usuario gratuita para Linux y Windows. Lucas Monge entró en el campo con la interfaz gráfica de usuario gratuita Lucas Chess. [39] Los tres pueden manejar tanto motores UCI como Winboard.
En Android, Aart Bik lanzó Chess for Android, [40] otra GUI gratuita, y Chess PGN Master de Gerhard Kalab [41] y Droidfish de Peter Osterlund [42] también pueden servir como GUI para motores.
La Wiki de Ajedrez por Computadora enumera muchas GUI de ajedrez. [43]
{{cite web}}
: CS1 maint: archived copy as title (link)