Stockfish 5 vs Stockfish 6

Como mencione en el post anterior http://ajedrez.ga/2015/el-cambio-y-el-ajedrez-por-computadora en el ajedrez por computadora podemos asegurarnos de que lo que hagamos mejore una versión anterior por medio del testeo automatizado y es aquí donde el poder de el código libre brilla. Ya que se pueden hacer mejoras incrementales, prácticamente imperceptibles que a lo largo de un tiempo hacen una mejora brutal.

En el caso de Stockfish tienen una manera de asegurar la calidad en http://tests.stockfishchess.org/tests se puede revisar el historial de las pruebas hechas y se pueden sugerir otras nuevas, cada prueba son aproximadamente 25,000 juegos por lo que llegar a 1,000,000,000 de juegos tan solo en las pruebas no suena como algo muy distante.

Y eso combinado al hecho de que las pruebas están hechas específicamente con el fin de optimizar una pequeña cosa en especifico, que existen métricas claras de lo que se quiere lograr y el hecho de que cualquiera que este interesado puede contribuir de manera que ayude al proyecto (Quien sepa programar contribuyendo código, quien sepa bien ajedrez contribuyendo ideas y cualquier persona interesada donando tiempo de su maquina para las pruebas automatizadas) de manera que su contribución siempre beneficie al proyecto.

De tal manera que si comparamos a Stockfish 5 con Stockfish 6 notaremos que la ultima versión es casi 100 puntos de elo mas fuerte que la anterior y dado que esto se da en un entorno perfectamente claro y controlado sabemos que no tiene que ver con la velocidad de las maquinas con que se prueba. Esto lo hace el programa de ajedrez mas fuerte que ha existido.

¿Pero en realidad es tanta la diferencia?

Quizá para nosotros no lo sea ya que hasta un equipo formado por todos los GM del mundo competiendo contra Stockfish seria vencido. Pero este solo es un pequeño paso. Si hace 50 años pusiéramos a competir a el mejor programa de ajedrez contra un humano relativamente bueno, pero sin tener ningún titulo especial si le diéramos este diagrama y le tocara jugar con las negras probablemente se las arreglaría para ganarle a la computadora.

Ahora mismo si le damos las blancas a el mejor jugador humano de ajedrez, 3 veces mas de tiempo y corriéramos Stockfish 6 en una computadora de hace 5 años creo que lo mejor que podría conseguir el jugador humano es un empate.

El cambio y el ajedrez por computadora

Este no va a ser mi típico post de ajedrez, si no mas bien una reflexión del ajedrez por computadora.

Claramente cualquiera de nosotros espera que la versión siguiente de un programa mejore su rendimiento. En algunos casos eso suele ser un fracaso absoluto, Windows XP comparado con Windows Vista o Windows 7 comparado con Windows 8 son ejemplos clásicos. Otro muy sonado es la salida del nuevo y mejorado BlackBerry que fue totalmente aplastado por Android y iOS.

Una pregunta que nos es ¿Por que pasan esos errores? Las respuestas son muchas, errores humanos, falta de metas claras, consumo excesivo de recursos, o simplemente un mal diseño de entrada. Otro hecho que sin ser un error en si, es el cambio de requerimientos, lo que era tecnología de punta hace 10 años hoy probablemente empiece a estar obsoleto.

Ahora, si comparamos cualquier tipo de programa entre sus versiones pasadas y actuales muy probablemente escojamos quedarnos con las actuales, excepto en unos cuantos programas ya sea porque quitaron una función que nos agrada como lo ha hecho Adobe con su linea Creative Suite o agregan cosas que ni nos interesan ni queremos(Windows Vista es el ejemplo perfecto) o simplemente cambian su interfaz.

Se preguntaran ¿Y esto que tiene que ver con el ajedrez? A simple vista no mucho, pero si lo piensan bien notaran algo en común, nada de esto aplica al ajedrez, sus requerimientos no cambian con el tiempo, la meta es totalmente clara (Ganar el juego capturando al rey contrario), si un programa de ajedrez consume demasiados recursos en general es vencido por uno similar que haga lo mismo y consuma menos recursos. Entre otras cosas que deberían ser obvias como que si diseñamos un programa mal de entrada vamos a ser vencidos cada vez.

Por dar un ejemplo:

O sea mientras los requerimientos para ganar y las reglas del juego no cambien el conocimiento que tenemos sobre como mejorar es incremental y las reglas del ajedrez no han cambiado en mucho tiempo pero si le mostráramos este juego a alguien nacido hace 1000 años(y que jugara ajedrez claro esta) se quedaría perplejo y probablemente enfurecido ya que para el el las jugadas validas serian:

Claro que actualmente eso no pasa, las reglas se han mantenido muy estables por un largo tiempo de tal manera que si queremos mejorar estudiar los juegos de los grandes como Bobby Fisher o Capablanca nos es de gran ayuda. Sin embargo indirectamente esto también aplica a los programas de ajedrez ya que para ver si son mejores que la versión anterior basta con hacer pruebas entre ellos y dada la gran capacidad de computo actual comparada con cualquier época anterior se pueden gastar recursos en testeo automatizado y así asegurarnos mejoras, a diferencia de cuando se lanza un producto.

Fruit vs Crafty

Continuando con las pruebas de Crafty, en esta ocasión lo enfrente contra Fruit lo interesante de este partido es la apertura de doble caballo, eso no se suele ver casi nunca en partidas “normales” por decirles de alguna manera. Otra cosa a rescatar es la cantidad de jugadas que estuvo parejo el juego, este tipo de finales se ven mas que nada en jugadores experimentados pero sin titulo. Ya que la partida llega a su fin, pero se decide por un solo peón.

También es curioso que ocuparon casi el minuto completo ambos motores de ajedrez, mas parejo de lo que esperaba.

Crafty vs Sjeng

En esta ocasión puse a competir a Crafty y a Sjeng a ver cual era el resultado. Me llamo bastante la atención que teniendo 1 minuto cada engine ocuparan cerca de 30 segundos cada una. Sin mas este es el juego:

Pychess vs Toga II

En esta ocasión enfrente el motor de pychess(Gaviota) contra Toga II en una partida de un minuto.
La dificultad de ambos fue puesta al máximo.

Este es el resultado

Fruit vs Toga II 3.0

En esta ocasión me dio por probar una partida entre Fruit y Toga II este es el resultado

Lo que se me hizo interesante es que fruit hizo un muy mal inicio que toga aprovecho y del cual no se pudo recuperar. Por otro lado la partida fue de 1 minuto así que probablemente cualquier humano que no sea GM o MI podría ser derrotado por fruit.

Fruit vs Stockfish

En otra prueba de Stockfish vs Cualquier otro engine, fue el turno de Fruit de ser masacrado. Esta vez con control de tiempo de 3 minutos y un aumento de 7 segundos por jugada.

Es bastante interesante ver como Stockfish sacrifica una pieza para lanzar un ataque letal unas jugadas después.

Sjeng vs Sjeng Losing Chess

Hay una variante del ajedrez en donde el objetivo es perder todas las piezas menos el rey. En este caso hay que lograr que el oponente se coma nuestras piezas. No entrare en detalles cuando se pueden encontrar las reglas fácilmente en wikipedia.

Lo curioso es que la mayoría de los engines que tengo instalados no soportan esta variante de juego(sjeng siendo el único que lo soporta) aunque es bastante mas sencilla que las demás. Supongo que ha de tener que ver con el hecho que no sienten que valga la pena programar para un modo que casi nadie juega.

Sin mas explicación una pequeña partida de 1 minuto de tiempo para cada lado que demuestra este tipo de juego.

Stockfish vs Stockfish

Esta vez puse a jugar Stockfish vs Stockfish, en general solo obtenía puros empates.

De vez en cuando había una victoria, y confirmando que las blancas tienen en general ventaja contra las negras, las unicas victorias fueron de las blancas

StockFish vs Sjeng

He estado probando varios engines de ajedrez y poniéndolos a competir contra Stockfish, en general es interesante ver los juegos, pero en su mayoría son incomprensibles, Sjeng(free), a diferencia de los otros que he visto me parece que juega de manera “mas humana”.
Por alguna razón sus jugadas no me parecen tan incomprensibles como las de Gnuchess, Pychess(gaviota), Stockfish, Rybka, quiza tenga que ver en que mi estilo de juego se parece mas a este engine que los otros.

Otra cosa que me llamo la atención es que en la primera parte del juego da la impresión que le va a ganar a Stockfish, inevitablemente Stockfish recupera terreno y destroza a Sjeng lo cual es lógico pues hay unos 800 puntos de rating de diferencia entre estos.

Pongo unos juegos a su consideración

Quizá lo que parece mas humano de esta version de Sjeng es que cae en el mismo tipo de trampas que yo contra los motores de ajedrez realmente fuertes, el hecho que “No ve” la trampa que le pone Stockfish 10 jugadas adelante como la mayoría de nosotros.