next up previous contents
Next: La estructura de una Up: Función de Evaluación Previous: Función de Evaluación   Índice General

La Necesidad de la Función de Evaluación

Para guiar la selección de movimientos los primeros programas de fuerza bruta utilizaron una función de evaluación estática de la posición. Ésta se basaba en la premisa de que es posible examinar una posición y calcular un score que representa su valor relativo a otras posiciones. Si esto es cierto, entonces la función de evaluación se reduciría a la simple tarea de buscar en el arreglo de posiciones posibles con tal de encontrar aquella con el mejor score.

Desde un punto de vista teórico esta premisa es razonablemente cierta. Sin límites de tiempo, recursos de hardware ilimitados y asistencia de grandes maestros de ajedrez un equipo de buenos programadores podrían presumiblemente escribir una muy detallada función de evaluación que consideraría factores que un jugador humano toma en cuenta al jugar al ajedrez. Con la ayuda de un reconocedor de patrones y una gran tabla de hash de posiciones un evaluador retornaría un valor de posición muy preciso para la mayoría de las posiciones.

Desafortunadamente, esta función de evaluación sería tan grande y compleja que requeriría mucho tiempo y poder computacional para ejecutarse en un tiempo razonable. Programas buscando a una profundidad de 8 movimientos como BELLE o CRAYBLITZ sólo podían disponer de 5 a 10 microsegundos para la evaluación de cada posición. Para búsquedas de 5 movimientos los programas deben evaluar posiciones en uno a 10 milisegundos.

La función de evaluación debe a la vez ser muy simple y fácil de ejecutar, y debe funcionar en base a operaciones que la computadora pueda manipular con facilidad en vez de conceptos que tendrían sentido bajo el punto de vista del maestro de ajedrez. La experiencia ha demostrado que el dar a un programa demasiado "conocimiento ajedrecístico" es una tarea difícil y peligrosa. Si la información es incompleta se pueden tener efectos contrarios a lo deseado. El programa puede utilizar esta información en un momento y forma no adecuados. Si el código es exhaustivo en la manipulación de estas excepciones entonces puede influir en alterar la velocidad de funcionamiento del programa lo cual afectará su capacidad de búsqueda.

Las funciones de evaluación utilizadas en el mundo real no pretenden evaluar las posiciones con suficiente detalle. El objetivo es dar al programa suficiente información con tal que pueda usarla en su búsqueda dentro del árbol de variantes con tal de descubrir el efecto de factores dinámicos los cuales la función no puede evaluar, tales como el resultado de combinaciones. La función de evaluación debe sin embargo ser capaz de entregar al programa información acerca de aspectos estáticos de la posición tales como estructura de peones, piezas sin defensa, movilidad, etc. Esta característica logra efectos a largo plazo en el juego los cuales la búsqueda muchas veces no puede descubrir.

Por todas estas razones la función de evaluación de un programa no puede ser considerada como una medida precisa del valor de la posición, si bien es una herramienta indispensable. Los programas de fuerza bruta, por ejemplo, no dependen de la función de evaluación como su "última palabra" en muchas de las posiciones las cuales evalúan. Durante la búsqueda en el árbol de variantes el programa confirmará la evaluación de la posición con la búsqueda sobre el siguiente movimiento.

La misión de la función de evaluación es entonces bastante simplificada. No es su labor el evaluar en forma precisa factores dinámicos como el resultado de combinaciones, pues estos son dejados al motor de búsqueda. Tampoco debe hacer mediciones posicionales precisas puesto que los límites de tiempo que el programa dispone para realizar su movimiento le impiden perder tiempo en esta consideración. Por lo tanto, la misión de la función de evaluación es el cooperar con el árbol de búsqueda en el determinar en forma aproximada el valor de una posición observando qué puede ocurrir en el juego futuro. Para lograr esto en forma efectiva la función de evaluación debe ser capaz de medir el equilibrio material (cantidad de piezas para cada bando) y generar un razonable análisis de la situación estática de la posición el cual la búsqueda en profundidad es incapaz de determinar.

Para mejorar la eficiencia en el árbol de búsqueda y proveer de alguna guía (si bien imperfecta) en los muchos casos en que consideraciones posicionales evolucionarán a demasiado largo plazo, la función de evaluación contiene heurísticas de análisis dinámico de la posición. Este es el mayor desafío en la construcción de funciones de evaluación. ¿Cuánta información puede obtener el programa con el tiempo disponible? Como regla general la respuesta es "no lo suficiente". En este caso un código claro puede hacer una notable diferencia en la fuerza de juego del programa.


next up previous contents
Next: La estructura de una Up: Función de Evaluación Previous: Función de Evaluación   Índice General
Santiago de Chile, Julio 2003