viernes, 23 de julio de 2010

Guia o Tutorial para hacer un Libro de Aperturas ctg

Esta guía no pretende ser La Biblia del ajedrez informático.
Sólo es uno de los caminos posibles de los tantos disponibles.
Este es el método que aplico a diario y me ha sido de gran utilidad.
De hecho, tengo la satisfacción de haber ganado infinidad de torneos y de mantenerme en el tiempo dentro del lote de los llamados "jugadores fuertes". Sin embargo, la idea central es la diversión. Si nos divertimos haciendo esto, nuestro hobbie, el ELO, los triunfos y los torneos llegarán solos. Si lo único que perseguimos es el ELO, lo que llegarán, serán las frustaciones. Si vas a comenzar a recorrer este camino, recuerda que te llevará mucho tiempo, muchísimo. No es apto para apurados.

He tomado las enseñanzas de los bookmakers más fuertes del mundo.
Especialmente de Kevin Frayer y Robert Söhnlein.

La idea general es que un libro de aperturas reconoce posiciones pre escritas en él, y le indica a un programa de ajedrez qué mover, sin que el motor esté en funcionamiento. Cuando el libro no es capaz de indicar el movimiento, por no tenerlo escrito, arranca el motor, quien decidirá los movimientos a partir de allí.
Cuantos más movimientos haga el libro, tendremos resultados más satisfactorios.


INTRODUCCION

Damos por sentado que todos estamos familiarizados con las GUI de Chessbase, tanto de Fritz, Rybka y otros motores, como CB 10 o Light Premium. De no ser así, se puede encontrar gran cantidad de información en la web.
Recordemos que Google es nuestro amigo!

Se dice que la manera más efectiva de tener un libro de aperturas fuerte es hacerlo manualmente. Es solamente un mito. Podemos tener un libro fuertísimo partiendo de una BBDD. Si bien es posible hacerlo manualmente, salvo que sepamos de memoria todas las aperturas que pretendemos jugar, con todas sus variantes y en profundidad, terminaremos consultando una Base de Datos. Copiándola manualmente, marcando con verde todos los movimientos que jugaremos. Estaríamos años haciendo esto, y personalmente, no veo diferencias respecto del método de comenzar un libro importando partidas.

Mi libro, que he bautizado oportunamente bulldozer.ctg tiene más de 50,000 partidas importadas originalmente y 5,000 horas de trabajo. Si bien podemos tener un libro "aceptable" en pocos minutos, la realidad es que para que sea competitivo, deberemos trabajar en él, mientras juguemos advance, freestyle o en salas de motores en diferentes servidores, especialmente en Playchess.com. Necesitaremos mucho tiempo de juego, trabajo de análisis comparativo y de engines.

El libro nace, aprende, crece, madura.... Como la vida misma!

Pero recordemos:

No existe un libro perfecto. El libro es dinámico, cambia día a día, todo el tiempo.


PRIMEROS PASOS

Lo primero que necesitaremos es contar con una base de datos de alta calidad.
Podremos bajar los juegos desde este mismo blog. Sólo utilizaremos las de 2010. De ser posible, solamente las jugadas a partir de la salida comercial de Rybka 4, ya que las cosas han cambiado un poco con este motor. Es más fuerte, y las partidas tienen más calidad aún. Esto no quiere decir que las anteriores no sirvan.
De nuestra base principal, que la llamaremos "Base de referencia" y debería contar con alrededor de 500,000 partidas, tomaremos las partidas lentas, es decir de 16 minutos por jugador en adelante, y de los jugadores más fuertes, suponemos que conocemos quién es quién en nuestra base de datos, de no ser así, nos guiaremos por su ELO.
Si bien la base de datos es de alta calidad, no lo son las partidas. Allí tendremos de todo, ya que los jugadores más "flojos" con libros malos y hardware pequeño generan partidas de mala calidad. Más aún, si han jugado entre ellos, éstas serán muy malas generalmente.

Tengamos en cuenta, que este es el embrión de nuestro libro. En este momento escribiremos el ADN de él. Es el instante en que se definirá la calidad de nuestro libro base, por lo tanto debemos ser MUY cuidadosos en la selección de los juegos.

Una vez creada nuestra Base de Referencia copiaremos todos los juegos en ella.
Aquí también tenemos diferentes opiniones respecto del origen de los juegos.
Yo pienso que es positivo tener tanto juegos humanos como de engines. De Freestyle, Chess Advanced y los generados por torneos de libros y motores. Obviamente, necesitaremos un filtrado muy profundo. Este trabajo es muy pesado y lento, pero lo haremos sólo una vez.
Utilizaremos partidas copiadas de las siguientes fuentes:

Playchess.com (2450 >> ELO)
Ficgs (2300 >> ELO)
ICCF (2300 >> ELO)
Freestyle (torneos jugados 2300 >> ELO)
UltraCorr (2300 >>)
Megadatabase o similar (humanas 2700 >> ELO)

*En el caso de las partidas humanas, necesitaremos editarlas, ya que solamente nos interesan los primeros 15 movimientos.

Generaremos una nueva base de datos, que llevará el nombre de nuestro libro. A modo de ejemplo, yo la llamaré Bulldozer_Main.

En ella pondremos los juegos que iniciarán nuestro libro. Utilizaremos los filtros de nuestro ChessBase. Queremos tener todas las partidas de 2010; de más de 22 movimientos, sin derrotas por tiempo, es decir, sólo aquellas que se hayan ganado o entablado por juego.
Para limpiar la base, utilizaremos el filtro texto, y buscaremos los siguientes términos:

Automatic
Zeit
Time
Tempo
Tiempo
Tijd

Thanks Roger!
(Awesome - United States)

Una vez hechos estos filtros, tendremos un lote de unas 50,000 partidas.
Ahora necesitamos definir la "personalidad" de nuestro libro.

Qué jugará?

1.e4 ó 1.d4 ó 1.Cf3 a lo mejor 1.c4 Quizás todas...

Si nos juegan 1.e4; contestaremos con 1...c5 ó c6 ó e6 ó g6 u otras...
Si nos juegan 1.d4; la respuesta será 1...d5; ó Cf6 o ...

Cuáles?

Cuantas más líneas tenga nuestro libro, menos profundo será, por lo tanto, su fuerza caerá un poco.
Yo recomiendo definir una sola apertura y una sola defensa contra cada apertura rival. Con el tiempo y experiencia podremos ampliarnos.
Esta es una decisión personal. También seguramente, jugamos ajedrez en vivo, y tenemos nuestro propio repertorio de aperturas, no sería una mala idea poner a prueba las mismas líneas, que ya nos resultan familiares y ver cómo se comportan. Siempre tratemos de previamente, hacer los análisis estadísticos en nuestra base de datos de referencia.

Necesitaremos 4 bases de datos nuevas:

Prioridad Negras
Prioridad Blancas
Aprender Negras
Aprender Blancas

Una vez definidas nuestras líneas principales (main lines), por ejemplo, si decidimos que jugaremos contra 1.e4 Siciliana (1.e4 c5 2.Cf3 d6 3.d4 cxd4 4.Cxd4 Cf6 5.Cc3 a6) moveremos hasta esta posición en nuestro CB y buscaremos en nuestra base de datos Bulldozer_Main las partidas ganadas por las negras. Estas partidas las colocaremos en la base "Aprender Negras".
Luego, hacemos lo mismo, pero le agregamos al filtro sólo las partidas con mate y maximo 80 movimientos. Es decir 0-1 mate 80 movimientos. Estas partidas las ponemos en Prioridad negras.

Este paso se repite para todas las líneas que hayamos elegido, tanto para las blancas, como para las negras.

Al finalizar todos los filtrados tendremos 5 bases de datos, más la de referencia.

PRIMER LIBRO

Abriremos nuestro Fritz GUI >> Nuevo libro de aperturas
Lo nombraremos (yo utilizo Bulldozer.ctg.)
Ya tenemos un libro vacío en nuestra GUI.
Editar Libro >> Importar partidas
Importamos las partidas de Bulldozer_Main (100 movimientos).
Las tablas también las importaremos. Si bien las partidas tablas no las marcaremos como verdes, estarán en el libro, ya que muchas líneas conducen a un empate y si las engines no "comprenden" la posición, seguramente sufrirán una derrota.
Hay autores que consideran que es malo utilizarlas, y sólo toman las ganadas.
Nosotros no compartimos esta idea.

Ya tenemos un libro!

Ahora añadir prioridad para los análisis.
Para las negras, Prioridad Negras, para las blancas Prioridad Blancas.
Aprender desde una base de datos. Aprender Blancas y Aprender negras. Sólo victorias.
Optimizamos el libro, y luego le ponemos 1-100 en vez de 3-35.
Necesitamos jugar 200 partidas para comenzar a tener nuestras propias partidas.
Se almacenarán automáticamente en CB.
El ritmo de juego dependerá del hardware con que contemos.
En esta guía, nos basaremos en un quad promedio de 2.5 ghz.; por lo que recomiendo jugar con controles de 16+0 ó mayor tiempo.
No es recomendable jugar blitz, ya que perderemos muchas partidas, solamente por no contar con Hardware poderoso, sin embargo, las líneas jugadas, seguramente no serán malas.


A jugar!

Sería necesario contar con un motor comercial fuerte como Rybka 4 (ideal). De no ser así, existen motores gratis muy fuertes también como Stockfish 1.8.
Una vez que contamos con alrededor de 200 partidas jugadas con nuestro libro base, revisaremos si tenemos juegos ganados o perdidos por tiempo o desconexión, y los eliminaremos. Los restantes, los copiaremos a nuestra base principal, la Base de Referencia.
Recordemos que desde Playchess.com, se guardan en forma automática en CB en un archivo llamado MyInternetChessGames.cbh.
Ahora borraremos de MyInternetChessGames.cbh los juegos empatados y perdidos, nos quedaremos sólo con los ganados (por nosotros).

Estos juegos los agregamos en nuestra base de datos de libro Bulldozer_Main.

Aquí tendremos 3 tipos de partidas ganadas:

1) Ganadas dentro del libro de aperturas, saliendo del mismo con ventajas superiores a +- 1 ó -+ 1 en pocas jugadas, generalmente antes de la 25.

2) Ganadas fuera del libro de aperturas, pero antes de los 40 ó 45 movimientos.

3)Ganadas tras un gran trabajo de nuestra engine, luego de una larga partida, más de 80 movimientos.

Asimismo, tenemos que analizar visualmente con quién hemos jugado, qué hardware y ELO tuvo nuestro oponente. Para el caso de ser un jugador "flojo" al que le hemos ganado, las borramos directamente.

Las partidas que se encuentran en el grupo 1) las copiaremos a las bases de datos Prioridad Negras y Prioridad Blancas, y Aprender Negras y Blancas, según corresponda.

Las del grupo 2) sólo las copiaremos a Aprender Negras y Blancas.

Las del grupo 3) las borraremos. Luego de esto, la base MyInternetChessGames.cbh debería estar vacía.

Ya tenemos todas las bases actualizadas. Tenemos que repetir los pasos anteriores y hacer un nuevo libro versión 0.1.


MUY IMPORTANTE

Antes de hacer cualquier cambio, es necesario tener backup de todas las bases y de nuestro libro. Si bien cada vez que actualicemos, el libro anterior no se utilizará más, hay que guardarlo, por cualquier inconveniente que pudiera surgir.

Luego de repetir diez (10) veces, SÍ DIEZ VECES! estos pasos, nuestro libro, poco a poco habrá mejorado su performance. Ya tendremos nuestro libro definitivo, el que comenzaremos a tunear manualmente.
Este libro ya no se borrará nunca más y nos acompañará para siempre.

Recordemos que mienrtas actualizamos nuestras bases de datos y el libro, en este mismo blog, todos los días se agregarán partidas a la base de datos del mes, por lo que recomiendo, cada 3 ó 4 días, repetir la operación de búsqueda de partidas ganadas que se hayan jugado dentro de nuestras main lines y agregarlas a las bases de datos de referencia y a la del libro (en mi caso Bulldozer_Main). Esto reforzará el libro. Cuantos más juegos contenga, más amplitud tendrá, eso mejorará su calidad.

A jugar nuestros últimos 200 juegos antes de tunear manualmente!


TUNEADO MANUAL

Podremos observar que nuestro libro tiene los movimientos marcados de 3 colores, Rojo, Verde y Negro.
Usando "libro de torneo" los movimientos rojos no se moverán nunca y los verdes siempre. Los negros se moverán cuando no existan verdes ni rojos.
Tenemos 200 juegos. A copiarlos a nuestra base de referencia, previo borrar los perdidos o ganados por tiempo o desconexion.
Con CB abriremos uno por uno y los analizaremos. Esto nos llevará mucho tiempo, por lo que por unos días, trataremos de analizar y no jugar.
Luego, repetiremos esta operación a diario o día por medio, por lo que no se nos acumularán tantos juegos.
Evidentemente, si tuviéramos más de una PC, esto sería más rápido. No necesariamente necesitamos una segunda PC fuerte, si es lenta, solamente ésta necesitará un poco más de tiempo en los análisis.
Trataremos de analizar con varias engines las posiciones críticas. Muchas veces lo que un motor no ve, lo encuentra otro. A continuación, detallaremos las engines utilizadas por mi para análisis profundos. Recordemos que soy un poco fanático, y no necesariamente es que hay que seguir esto al pié de la letra.

Deep Rybka 4
Deep Rybka 3 Dinamyc
Naum 4.2
Stockfish 1.8
Deep Fritz 11
Deep Junior 11.2
Zappa Mexico II

Como mínimo, hay que utilizar dos motores y buscar la máxima profundidad posible.


Analizando nuestra primera partida

Una vez abierta la partida en CB, iremos hasta nuestra última jugada de libro. Allí abriremos la ventana de la base de datos de referencia y el libro extra, es decir, que se verá aparte, obviamente es nuestro libro.
Particularmente, yo observo toda la partida desde su comienzo, para chequear no haber desmarcado ningún movimiento por error en los análisis. Recordemos que a veces, en las transposiciones, podemos llegar a un lugar del libro, marcarlo como rojo o negro, y resulta que era verde. Además, como veremos más adelante, si la línea de nuestro oponente coincide con la que nosotros hubiéramos jugado, analizamos para las dos partes (blancas y negras).
Analizaremos todas las partidas: Ganadas, Perdidas y Tablas.
En la base de referencia podremos observar las estadísticas. Veremos cómo salimos del libro. Si al salir del libro tenemos una ventaja importante, y vemos que estadísticamente ese es el camino, ya que muchos otros jugadores lo siguieron y ganaron, continuaremos marcando nuestras jugadas en verde. Asimismo, si nuestro rival ha perdido, y casualmente ha utilizado una main line de las nuestras, aprovecharemos para analizar porqué perdió, y buscaremos una refutación a nuestra propia línea.
Si al salir del libro la ventaja es leve, lo ideal es arrancar nuestros motores, primero uno, copiar el análisis a la anotación, luego otro y ver que coincidan los análisis. De no ser así, cruzaremos las jugadas elegidas por cada engine, y veremos qué score da cada una. Necesitamos, mientras que los motores analizan, observar la posición detalladamente y buscar un plan, una línea de continuación. Muchas veces podemos ver cosas que las engines no. Si nos gusta y nos perdemos en los análisis, sin más tiempo que perder, hacemos el movimiento y vemos qué dicen las engines.
Si salimos del libro con desventaja, cosa poco probable, pero posible, sobre todo si hemos ganado, tendremos que retroceder hasta encontrar una posición que nos sea favorable según las engines y las estadísticas.
Siempre intentemos ir 3 ó 4 ply más que las que se analizaron en las partidas en el servidor. Si disponemos de tiempo y paciencia, podemos ir más lejos. Esto redundará en ir construyendo un libro profundo.
Utilizando el comando análisis infinito, muchas veces podremos encontrar en líneas aparentemente chatas, que nos parecen que conducen a tablas, una variante ganadora, luego de mucho tiempo de análisis.
Esto lo he vivido en carne propia, una vez que me llamaron a cenar. Quedó una posición en infinito. En la comida, con la TV encendida, me enganché con una película. Al regresar, luego de un par de horas, me encontré con la partida ganada!
Moraleja, siempre que me llaman a cenar, dejo analizando los juegos y enciendo la TV.. :-)

* Muchas líneas tienen la característica de ser "celadas" o "trampas", donde observaremos una desventaja notable para nosotros y repentinamente, luego de algunos movimientos, esto cambia. De todas formas hay que analizarlo, pero los jugadores fuertes tienen muchas de estas, y no olvidemos el origen de nuestro libro!

Un par de consejos de mi Amigo y Maestro Robert Söhnlein:

"La llave del éxito es el libro, no el Hardware".

"Lo ideal es no perder con negras y ganar algunas con blancas"


Libro para todos

Les propongo hacer un libro entre todos, siguiendo los pasos de este tutorial, el que podría mejorar con ideas y aportes de Ustedes.

Vamos a hacerlo en una entrada aparte, y espero a quienes se quieran sumar.
Por favor, dejen un comentario en la entrada de "Libro para todos".




Nos vemos en breve!!

9 comentarios:

  1. Quiero primeramente decirte que este es un blog realmente excelente. La explicacion que haz hecho a cerca de como hacer un libro, creo que fue mas que suficiente, muy bien explicado para que cualquier persona lo entienda. Tambien quiero darte las gracias porque a mi en lo personal, gracias a las bases de juegos que tu haz puesto a todos para descargar en forma gratuita, yo he recuperado muchos de mis juegos que de manera accidental habia borrado. Espero tambien la siguiente lectura que tengas en mente exponer aqui y asi aprender un poco mas de este maravilloso juego. Solo me resta decirte que sigas adelande en este interesante mundo de el ajedrez por computadoras y que tu nuevo blog sea una herramienta importante para personas como yo. Hasta pronto y gracias una vez mas.

    ResponderEliminar
  2. hola muy bueno tu pagina sos un mago,me podrias mandar ese libro buldozer tuyo mi correo es diegoperez2627@gmail.com gracias y todo el material q tengas te estare muy agradecido

    ResponderEliminar
  3. Hola duro!
    Gracias por tus comentarios.
    "ese" libro Bulldozer es de uso privado.
    Material tenés aquí mismo, en el blog.
    Suerte!!

    Rubén Cómes

    ResponderEliminar
  4. muy bueno me gustaria participar no juego en playchess pero si en flyordie

    ResponderEliminar
  5. Hello, my friend,,

    CAN you explain to us how the book work from beginning to the end, but during the filming of the video, so that we have it easy absorbed.
    I know that photography is hard work, but can you do this wonderful work.

    Thank you and I'm a staunch followers and admirers to your blog beautiful.

    ResponderEliminar
  6. podria tener el libro de bulldozer ctg. gracias de antemano

    ResponderEliminar
  7. me gustaria aprender a crear libros fuertes ctg o corregirlos . y excelente su aporte . saludos

    ResponderEliminar