Next: La estructura de una
Up: Función de Evaluación
Previous: Función de Evaluación
  Índice General
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: La estructura de una
Up: Función de Evaluación
Previous: Función de Evaluación
  Índice General
Santiago de Chile, Julio 2003