> BASE DE JUGADORES
> BASE DE PARTIDAS

> ATLAS DE TORNEOS

> DISTRIBUIDORES
>
ENLACES

 

 

 

 

 
Buscar en esta web

 

El Turco - nº0

El laboratorio de Fritz y ChessBase por Fernando Morán Fernández.

Afinando a Fritz

Una de las características que hacen de Fritz un programa especialmente apreciado es la posibilidad de adaptarlo a distintas configuraciones de equipos y la regulación su potencial… dentro de unos límites, por supuesto. Los tipos de ajustes que se pueden hacer son de tres clases principales:

a)     De configuración y entorno: datos del usuario; tipo de reloj; tamaño y dimensión del tablero; características del tablero 3D; tipo de notación; impresión; opciones de entrenador; música; habla; colores; idioma de los menús, ayuda y anotaciones; elementos a mostrar en pantalla; tipos de letra ("fuentes" en argot informático), etc.

b)     De ritmo de juego: rápidas; torneo; con bonificaciones de tiempo por jugada o totales; partidas de entrenamiento, amistosas, en conferencia, etc.

c)      De fuerza y tipo de juego: tiempo o profundidad de análisis fija para cada jugada; nivel Elo; estilo más o menos agresivo o defensivo; preferencias en el juego por el flanco de rey o el de dama; tendencia a mover determinados tipos de piezas; partidas con el programa al máximo nivel o contra "enemigos" con determinadas fijaciones en su juego (configurables por el usuario); distintos tipos de módulos (seleccionables incluso para cada fase de la partida) con valores ajustables de algunos de sus parámetros de funcionamiento, como agresividad, contención, selectividad; diferentes libros de aperturas; opciones de aprendizaje; tamaño de las tablas de transposición, etc.

Sobre la clasificación anterior es obligado indicar que los dos últimos aspectos podrían haberse fundido en uno sólo, dada la influencia que tiene la duración de la partida en el rendimiento ajedrecístico del programa. Igualmente es justo indicar que hay características de Fritz que se escapan a la clasificación anterior: opciones para el análisis de partidas, funciones de base de datos, funciones de evaluación del Elo, generación de torneos y evaluación de módulos de ajedrez, búsqueda de mates, etc.

            Como por algún lado hay que empezar, puesto que creo que es un aspecto poco conocido por los usuarios y sobre el que hay cierta confusión, me centraré hoy en el ajuste de las tablas de transposición o tablas "hash". Simplificando los conceptos, se puede decir que los programas de ajedrez "piensan" analizando y valorando las posiciones que surgen tras cada jugada posible. Ello implica que para cada movimiento deban tratar de tener en cuenta varios miles, cientos de miles o millones de posiciones. Con cierta frecuencia, por distintos caminos, se llega a la misma situación de las piezas: pensemos por ejemplo en una posición cualquiera en la que se pueda dar un orden de jugadas Af5, a6,Cc3, pero que también quepa ejecutarse Cc3, a6,Af5. La posición final sería la misma y el ordenador tendría que analizarla dos veces, perdiendo un tiempo precioso. Así que los programadores decidieron que se podía aumentar la fuerza de los programas si se guardaban los resultados de las valoraciones previamente realizadas, de forma que no se derrochase tiempo de procesamiento en examinar una misma posición más de una vez. Pues bien, las tablas de transposición o tablas "hash" son precisamente el lugar donde se guardan dichas posiciones y valoraciones y se trata de un espacio determinado de la memoria RAM reservado para tal uso. Aprovecho para recordar aquí que cuando hablamos de posición hay que tener en cuenta no sólo la colocación de las piezas sino también el turno de juego y otros factores adicionales: posibilidad de enrocar y de comer al paso.

            Fritz es un programa que tiene una gran capacidad de cálculo (de ella obtiene su inusitada potencia táctica) y hace un uso intensivo de las tablas de transposición, por lo que tiene relevancia ajustarlas bien: si son demasiado pequeñas, las llenará pronto y parte de su tiempo de análisis no será utilizado eficientemente, porque las tablas no cumplirán su función; por el contrario, si son muy grandes, además de desperdiciar un recurso escaso, como es la memoria RAM de que disponemos (sobre todo trabajando con Windows), el tiempo de manejo de las tablas puede ser significativo, con lo que no desempeñarán tampoco su cometido. También es cierto que Windows puede emular la RAM en espacio libre de nuestro disco duro, pero el tiempo de acceso a esa información es mucho mayor que si se trata de RAM convencional, con lo que nuestro amigo/enemigo de silicio pierde eficacia. ¿Cómo podemos establecer un tamaño apropiado? Existen varias formas de hacerlo:

1)     Pulsando F3 o haciendo clic sobre el botón  y eligiendo luego "Cargar módulo" aparecerá la siguiente ventana:

En la parte inferior de la misma se nos informa de la cantidad de RAM que nos queda libre. Tenemos también una casilla donde podemos fijar el valor exacto del tamaño de las tablas hash (en el apartado 2 se explica cómo, para los que no tienen soltura al trabajar en entorno Windows) y varios botones con opciones predefinidas; las que superan la cantidad de RAM disponible aparecen atenuadas y, obviamente, no pueden seleccionarse. La marca de comprobación en "adaptar todas las tablas hash" sirve para hacer que varios módulos tengan el mismo tamaño de tabla sin tener que andar modificándolos uno a uno. La manera para operar con esta ventana sobre seguro es descargando primero todos los módulos, estableciendo luego el tamaño de tablas deseado (marcando a continuación "adaptar todas las tablas hash" si vamos a cargar varios motores) y, por último, pasando las máquinas deseadas a la lista de activas. De esta forma se puede lograr que cada módulo tenga acceso a la totalidad de la RAM seleccionada.

2)     Haciendo clic con el botón derecho del ratón tras poner el puntero esté sobre el nombre del módulo, en la esquina superior derecha de la ventana de búsqueda, y escogiendo "parámetros del módulo" o con el atajo de teclado (Ctrl+Mayús+P) o, como tercera alternativa, pulsando en y escogiendo luego "Parámetros del módulo", obtendremos la ventana siguiente, en la que se puede introducir el tamaño requerido en la casilla "Hash Size": se pone el cursor en el cajetín y al hacer clic se resaltarán los números. Si en ese momento escribimos una cifra, sustituirá a la que había. Para ajustes menores podemos incrementar o disminuir el valor que aparece pulsando sobre las flechas que aparecen a la derecha del recuadro


Haciendo clic sobre  y pulsando luego "Módulos" obtendremos la ventana que se muestra a continuación:

En ella podemos seleccionar un módulo para cada etapa de la partida y, en los parámetros del mismo, asignarle un tamaño de tablas de transposición específico, tal y como se explicó en el apartado 2) anterior.  Conviene tener en cuenta que los módulos a asignar deben haber sido previamente cargados y que, si repetimos la elección de un módulo (por ejemplo, Fritz5.32 para el juego táctico y el final), no podemos darle distintos parámetros en cada fase.

Ya vimos cómo y ahora hay que saber cuánto. Para ello podemos guiarnos por cuatro indicadores:

a)     La cantidad de RAM disponible, que se nos indica en la ventana de "cargar módulo" (F3), nos marca el límite superior. El valor que aparece tiene descontado el espacio ocupado por los módulos que ya tengamos cargados, por lo que, para darnos idea del valor máximo o bien echamos números y le añadimos las cifras que tienen a su derecha los módulos cargados o bien los descargamos todos (para ello los iremos resaltando, apretando a continuación el botón que tiene dos flechas apuntando hacia la columna de módulos inactivos), pulsamos OK, nos aparece un mensaje de error indicándonos que no hay módulos cargados y que, por lo tanto Fritz no responderá a nuestras jugadas. Tras aceptar el aviso, volvemos a pulsar F3 y el valor que veremos, con la lista de módulos cargados vacía, será el máximo que podamos usar con un módulo o repartir entre varios. Hay que tener en cuenta esto a la hora de trabajar en esta ventana. Si tenemos cargado digamos Fritz5.32 con 16Mb de tablas hash y se nos informa de que disponemos de otros 16 Mb libres, la manera de incrementar las tablas a 32Mb es introduciendo el valor en recuadro del tamaño, ya que en las opciones preseleccionadas la opción de 32 Mb aparecerá atenuada. Ello impide que se pueda adjudicar más memoria de la disponible para repartir entre varios módulos.
b)     El valor sugerido en la ventana de información de sistema (que se activa pulsando en   y escogiendo "Análisis del módulo" y dentro del submenú que aparece, "Configuración del sistema") nos muestra un resumen de algunos valores de ajuste realizados y nos da una orientación sobre el tamaño de tablas óptimo y el entorno de valores que el programa considera mínimos.

El valor óptimo lo calcula automáticamente, a partir de la fórmula que se analiza en el apartado c), de acuerdo con los controles de tiempo que hayamos seleccionado para jugar (Ctrl+V) presuponiendo un procesador que corra a 200MHz, por lo que, si nuestro procesador trabaja a una velocidad parecida, podemos usar al propio Fritz como calculadora: cambiamos el control de tiempos y luego miramos el valor que nos sugiere. Para otras velocidades del procesador, el valor exacto se puede calcular mentalmente con facilidad: dividimos el óptimo que nos da Fritz entre 2 y lo multiplicamos por los cientos de megahercios que tengamos: por ejemplo, en un PII a 450, con un tiempo de 20 segundos/jugada, Fritz nos da un óptimo de 8000Kb, que ajustados serían 8000/2=4000; 4000*4,5=18000. El entorno de valores mínimos corresponde a una estimación en función de la memoria RAM que tengamos instalada en el equipo, de manera que siempre tengamos espacio libre para otras funciones.

c) El manual del usuario nos da una fórmula para calcular el valor mínimo necesario, que es:

Tamaño Tablas Hash (KB) = 2 * Frecuencia del procesador (MHz) * tiempo por jugada ( segundos)

 

Lo primero que hay que advertir es que es válida sólo para Fritz, ya que el consumo de tablas de transposición no es igual para todos los módulos. Además, por necesidades de programación, los programas suelen tener unos límites máximos en la capacidad de las tablas que pueden manejar. Aunque suelen estar bastante altos para que nos topemos con ellos, quizás en alguna versión antigua de algún módulo, de repente, nos encontremos con que no nos acepta más de, digamos 64Mb, por mucho que le queramos dar 128Mb de los flamantes 256Mb de que disponemos.

Si representamos gráficamente la fórmula queda patente que a procesador más veloz, mayor tamaño de tablas de transposición será necesario, con el mismo tiempo de búsqueda. De ahí que, si mejoramos nuestro equipo en cuanto a procesador, sea conveniente también incrementarle la memoria RAM. Por otra parte, si invertimos en adquirir más cantidad de esta última, podremos utilizar más tiempo de cálculo eficaz con Fritz, siendo esa "ganancia" mayor cuanto más lento sea nuestro procesador. Estos corolarios no deben despistarnos: un procesador más rápido analiza con más velocidad y, en el mismo tiempo, necesita más espacio para almacenar las valoraciones, puesto que calcula muchas más posiciones.

Cuando digo tiempo "eficaz" me refiero a que, una vez que las tablas hash están llenas, el módulo de ajedrez no es capaz de aprovechar las ventajas de las mismas, porque no puede guardar en ellas los datos necesarios, de acuerdo con el fundamento de su utilización que se explicó más arriba, por lo que el tiempo adicional empleado en profundizar en la posición apenas compensará el resultado. En estos casos, como explica el manual, es mejor usar la función de análisis de correspondencia (Ctrl+Mayús+T)

El tiempo que se debe introducir en la fórmula es directo si hemos establecido el nivel de juego en segundos por movimiento, pero en el caso de que usemos otros ritmos deberemos calcular a partir de ellos un tiempo promedio por jugada, suponiendo unas 40 o 45 jugadas por partida. Para afinar esa cifra hay que echar mano del sentido ajedrecístico: según el tipo de juego que desarrollemos y las aperturas empleadas; dependiendo el número de jugadas que Fritz o nosotros nos mantengamos el libro de aperturas; teniendo en cuenta que se pueden producir variantes lineales o jugadas forzadas; echando cuentas sobre si queremos simplificar y llegar a finales para los que hemos autorizado a Fritz a usar la colección de CD's, pues en estos casos no se usarán las tablas de transposición.

 

c)      Otros sentidos desempeñan también un papel importante, a la hora de percibir como está funcionando el contrincante alemán:

 

I)                  La ventana de información de búsqueda nos informa del porcentaje de tablas de transposición que lleva usado Fritz en la casilla que está situada a la derecha de la que muestra la profundidad de búsqueda, en la que alternativamente presenta el tiempo que usa el programa en cada jugada y el movimiento que espera que realicemos, cuando está activada la característica de pensar siempre. Es conveniente echarle un vistazo y ver si Fritz nos responde habitualmente antes de alcanzar el 100% ("FULL") o si, por el contrario, sigue calculando un buen rato después de alcanzar dicho valor. En el primer caso tendremos las tablas de transposición fijadas en exceso y en el segundo, por defecto.

II)              El oído también es de utilidad. Cuando asignamos un tamaño de tabla muy grande, Windows debe liberar parte de la RAM que está usando para que la podamos utilizar con ella. Para dejarnos ese hueco, pasa la información que había en él al disco duro, en una labor que puede llevar varios minutos (2, 3, 5 o más, no se desespere: liberar 50Mb de RAM puede llevar un tiempo considerable, dependiendo de la velocidad del procesador y del tiempo de acceso al disco duro) Tranquilos, nuestro Fritz no se ha colgado. Sentiremos como "ratea" nuestro disco duro durante el proceso. Tras esta fase inicial, no deberíamos volver a oír esa operación, excepto para inapreciables accesos al libro de aperturas, si es que lo hemos copiado a el disco duro. Si esto no sucede y el ordenador mete ruido cada vez que es su turno de juego, no quiere decir que nuestra jugada levante murmullos entre los chips. Para nuestro pesar significa que Windows ha emulado parte de la RAM necesaria para las tablas colocándola en el disco duro. Como ya se dijo, los tiempos de acceso a dicha RAM son significativos y lo aconsejable es disminuir el tamaño de las tablas, reduciendo también el tiempo por jugada, de acuerdo con lo razonado cuando se habló del tiempo de cálculo eficaz. Con el fin de evitar que esos trasvases de RAM afecten a nuestra partida, es aconsejable que primero liberemos la mayor cantidad de memoria posible. Para disponer de más RAM "pura" libre para las tablas de transposición podemos:

A)    Evitar tener abiertos simultáneamente otros programas.

B)    Cerrar el Programador de tareas de Windows, si es que lo tenemos cargado.

C)    Seleccionar "ninguno" como protector de pantalla.

D)    Desactivar los programas antivirus, de medición de recursos del sistema, de protección contra cuelgues y cualesquiera otras utilidades que no tengan relevancia a la hora de pasar un rato divertido con Fritz.

E)    Dejar de usar la función "Ayuda de entrenador" (Alt+T)

Una vez hecho esto, seleccionaremos un nivel de juego, ajustaremos las tablas de transposición de acuerdo con los valores de tiempo con los que queremos jugar la partida seria y comenzaremos un enfrentamiento de prueba, para que el ordenador haga los ajustes de RAM necesarios. Una vez terminados, detendremos la prueba e iniciaremos nuestra partida de verdad.

 

Como colofón y para señalar la importancia que pueden llegar a tener las tablas de transposición y su uso cabe señalar que el nuevo Hiarcs 7.32 no sólo genera tablas de transposición en cada turno de juego sino que "recuerda" las evaluaciones realizadas con anterioridad: de este modo los programas pueden ir hilvanando "planes" de juego. Este módulo, que también se comercializa como programa completo con la misma interfaz de usuario que Fritz5.32, dispone de unas tablas de finales, pero que se fundamentan en un concepto distinto del analizado en este artículo.

Salud y suerte.