Sunteți pe pagina 1din 8

Algoritmo Evolutivo para Finales de Ajedrez en un Entorno Grid

Antonio Gmez Iglesias


Centro Extremeo de Tecnologas Avanzadas CIEMAT Universidad de Extremadura Cceres antonio.gomez@ciemat.es

Miguel ngel Vega Rodrguez


Dept. Tecnologa de los Computadores y de las Comunicaciones Universidad de Extremadura Cceres mavega@unex.es

Manuel Rubio del Solar


Centro Extremeo de Tecnologas Avanzadas CIEMAT Trujillo manuel.rubio@ciemat.es

Miguel Crdenas Montes


Centro Extremeo de Tecnologas Avanzadas CIEMAT Trujillo miguel.cardenas@ciemat.es

Resumen
En este artculo se presentan los resultados obtenidos en nuestra investigacin acerca de la aplicacin de algoritmos evolutivos para evaluar jugadas en finales de ajedrez y encontrar el mejor movimiento posible. Esta tcnica evolutiva se combina con rboles de exploracin en los que se generan los posibles movimientos que se pueden obtener a partir de un tablero. Para poder aplicar algortmica evolutiva sobre estos rboles y permitir jugar en tiempo real, hacemos uso de un entorno grid que permitir la ejecucin en paralelo del algoritmo sobre diferentes subrboles.

1. Introduccin
Durante aos se ha investigado en la aplicacin de la computacin al juego de ajedrez. Desde mediados del siglo XX muchos investigadores han centrado sus esfuerzos en este problema. Muchas aproximaciones han utilizado la programacin gentica y evolutiva para resolver el problema [3,6]. Con esta aproximacin se pueden conseguir sistemas que resuelven el problema y que no utilizan grandes recursos del sistema, debido a que se puede evitar la utilizacin de grandes rboles de exploracin en los que se busca una solucin [9]. La opcin de los rboles es la que tradicionalmente se ha utilizado en supercomputadores, como Deep Blue y Deeper Blue, aprovechando su alta capacidad de clculo y un diseo especfico para generar rboles de hasta

12 niveles de profundidad en los que buscar la mejor solucin para una jugada concreta [8]. Actualmente la computacin grid puede ayudar a solucionar en parte este problema. Al tener interconectados varios equipos bajo la grid, podemos emplearlos de forma similar a un supercomputador y aprovechar su gran potencia de clculo para ejecutar aplicaciones con un alto coste computacional de una manera rpida y eficiente, aplicaciones que de otro modo seran prcticamente inviables debido a su elevado tiempo de ejecucin. Una de las ideas bsicas de la computacin grid es conseguir mayores capacidades de cmputo y/o almacenamiento combinando los recursos ofrecidos por diferentes organizaciones. Estas caractersticas hacen que la computacin grid sea aplicable en mbitos muy diferentes, pudiendo agrupar esos mbitos en base a las necesidades de cmputo de las aplicaciones, las necesidades de almacenamiento o aplicaciones colaborativas. Las aplicaciones que tratan de resolver problemas de ajedrez suelen hacer uso de rboles en los que se busca la mejor solucin posible y que requieren grandes necesidades de cmputo, para lo cual la computacin grid resulta apropiada. Adems, la particular estructura en rbol es fcilmente paralelizable, teniendo varios procesos con necesidades de cmputo elevadas que pueden procesarse en paralelo, algo que con la computacin grid y la cantidad de recursos computacionales que nos ofrece es fcil de llevar a cabo [10].

Debido a la propia naturaleza computacional del problema que se est manejando, el uso de la computacin grid como va para usar grandes cantidades de recursos computaciones es a priori la ms viable. Para emplear los recursos que ofrece la grid y ejecutar aplicaciones, es necesario utilizar un middleware que proporcione acceso y control sobre los recursos disponibles. En este caso se ha elegido gLite 3.0 como middleware [5]. gLite es el middleware empleado en el proyecto EGEE (Enabling Grids for E-sciencE) y permite una utilizacin simple de los recursos que forman parte de la grid [2]. Uno de los elementos que se incluye en los middlewares es el metaplanificador. Este elemento es el encargado, entre otras tareas, de gestionar los trabajos que se envan a la grid, de comprobar que los recursos necesarios para la ejecucin de un proceso estn disponibles o de que las dependencias entre procesos se cumplan. En gLite el metaplanificador empleado es Workload Management System (WMS, Sistema de Control de la Carga de Trabajo). Una alternativa a su uso que ofrece un gran rendimiento y una gran variedad de tipos de trabajos aceptados, es GridWay [7,11]. El juego de ajedrez suele dividirse en tres etapas: apertura del juego, medio juego y final. La diferencia entre el medio juego y el final no est muy clara, si bien esta ltima etapa posee caractersticas que la diferencian claramente de la anterior como por ejemplo que los peones tienen una importancia superior a la de la mayora de las restantes piezas o que el rey pasa de tener una actitud defensiva a ser una pieza ofensiva. El objetivo en cualquier final es obtener la victoria o, en caso de estar en una clara inferioridad, conseguir al menos las tablas. Los finales de ajedrez se clasifican en funcin del nmero de piezas y del tipo de las mismas, siendo los ms habituales el final torre contra torre, alfil y torre contra caballo y torre y dos torres contra dos torres [4]. En nuestro caso pretendemos obtener un sistema que permita jugar finales con torres y que pueda ser modificado para aceptar otros posibles finales. Los algoritmos empleados para resolver problemas de ajedrez tratan de simular el comportamiento que realiza un jugador de ajedrez, evaluando el tablero y buscando la mejor jugada posible. Esa jugada no tiene por qu ser la mejor para ese momento determinado, sino que puede

ser la mejor de cara al desarrollo final del juego. Estos algoritmos se enfrentan a dos problemas: el tamao del espacio de soluciones y la cantidad de informacin que existe en un tablero. Se van a emplear algoritmos evolutivos para solucionar partidas finales de ajedrez, generando un rbol de 8 niveles de profundidad a partir de una situacin inicial del tablero, y evaluaremos cada uno de los nodos del rbol basndonos en unas funciones de evaluacin que mutarn para conseguir mejores resultados en cada iteracin. Debido al elevado coste computacional de este rbol, se emplear la tecnologa grid de modo que la evaluacin del rbol pueda distribuirse entre los nodos que componen la grid, disminuyendo de esta forma el tiempo necesario para encontrar la solucin y permitiendo que el desarrollo del juego pueda ser en tiempo real. Este artculo se organiza como sigue: en la seccin 2 se detalla la solucin propuesta para resolver finales de ajedrez mediante un algoritmo gentico y computacin grid. La seccin 3 muestra los resultados obtenidos, analizando los mismos. Finalmente, en la ltima seccin se exponen las principales conclusiones de este artculo y el trabajo futuro a realizar.

2. Solucin propuesta
El algoritmo empleado para resolver el problema del final de ajedrez es un algoritmo gentico que se divide en cuatro fases: creacin de un rbol con una serie de niveles que representan diferentes turnos de juego; evaluacin de los nodos que forman el rbol; bsqueda del mejor nodo de entre todos los que forman el rbol en base a unas funciones de evaluacin y unos parmetros de aplicacin de dichas funciones; seleccin y mutacin de los mejores parmetros de las funciones. En el Algoritmo 1 se muestra el algoritmo empleado. El algoritmo propuesto es fcilmente paralelizable considerando que el rbol puede dividirse en una serie de subrboles, cada uno de los cuales puede procesarse de manera independiente y en paralelo con el resto. Un rbol de ocho niveles que tenga que ser evaluado en un nico ordenador obligara a un tiempo de ejecucin muy elevado, lo que hace imposible la ejecucin en tiempo real. Con la computacin grid conseguimos que cada nodo dentro de la grid

realice la computacin sobre una parte del rbol, obteniendo una clara mejora en el tiempo de ejecucin, y al finalizar el proceso en los nodos, se obtiene el mejor de los resultados aportados por los diferentes nodos. El proceso encargado de evaluar los resultados aportados por los dems nodos acta como nodo maestro, controlando la ejecucin de los restantes elementos e inicindose nicamente cuando tiene todos los datos necesarios para su ejecucin. Por tanto, podemos procesar en paralelo los subrboles que necesitemos, teniendo como limitacin el nmero de Working Nodes (WN, Nodos de Trabajo) existentes en el sistema y el nmero de procesos que puedan gestionar el Computing Element (CE, Elemento de Computacin) y el Resource Broker (RB, Agente de Recursos). Crear un nmero elevado de procesos resultara en un nmero elevado de resultados, lo cual aumentara el tiempo de ejecucin del proceso que debe analizar los resultados. Inicio Para i=0 hasta num_trabajos Crear subrbol i Evaluar nodos del rbol para todas las funciones de evaluacin. Podar los peores nodos Seleccionar el mejor descendiente directo de la raz. Seleccionar la mejor funcin para el nodo seleccionado y mutar la funcin. Fin_para Seleccionar el mejor nodo de entre los indicados por los trabajos. Fin
Algoritmo 1. Descripcin del algoritmo evolutivo empleado.

Resource Management Application API) automatizamos en una aplicacin implementada en C++ la gestin de los trabajos que se lanzan a ejecucin en la grid y la obtencin de los resultados conseguidos por dichos trabajos. En la figura 1 puede observarse cmo interacta GridWay con el middleware gLite. Como algoritmo planificador se escogi un algoritmo Round-Robin (por Turno Rotatorio) configurado para enviar el mayor nmero posible de procesos al CE aprovechando el nmero de WN del que se dispone.

Figura 1. Interaccin de GridWay con gLite.

Debido a la necesidad de ejecutar una aplicacin en modo DAG (Direct Acyclic Graphs) se eligi GridWay como metaplanificador, el cual permite la gestin y ejecucin de este tipo de aplicaciones de modo eficiente y estable. Con GridWay y su API DRMAA (Distributed

El metaplanificador por defecto de gLite, WMS, si bien soporta trabajos DAG, resulta no ser suficiente apropiado para nuestra propuesta, por lo que se descart para esta solucin concreta. Los otros planificadores de gLite no soportan este modelo de trabajo. GridWay proporciona mecanismos de proteccin ante fallos, enviando trabajos que han fallado a otros recursos de la grid o tratando que la ejecucin y transferencia de ficheros se realice sobre el mismo recurso, todo ello de manera transparente. La mejora en el tiempo de ejecucin respecto a un modelo secuencial del algoritmo est

relacionada con el nmero de subrboles creados, lo cual podra hacer pensar que lo ideal sera crear un nmero muy grande de procesos. Sin embargo, al aumentar la complejidad de proceso de los resultados y la lgica necesaria para la creacin y gestin de los trabajos, se obtiene que no resulta conveniente crear un nmero elevado de procesos. Aunque la intencin es realizar un algoritmo que permita jugar en tiempo real, este concepto en ajedrez realmente puede ser considerado como un tiempo de ejecucin bajo. El modelo surgido de la idea expuesta es un modelo de isla con topologa en estrella con un conjunto de nodos esclavos que procesan los subrboles existentes en el sistema y un nodo que analiza los datos obtenidos por los esclavos. Lo habitual con cualquier metaplanificador sera ejecutar el proceso que analiza los resultados de los trabajos en el equipo del usuario para obtener un mejor rendimiento. Con GridWay, podemos ejecutar este proceso en otro nodo de la grid, nodo que acta como nodo maestro al ejecutarse nicamente cuando el resto de procesos ha finalizado su ejecucin. 2.1. Creacin del rbol de soluciones El sistema genera, a partir de un tablero inicial T, todos los posibles tableros que se puedan derivar de l, TB(cada tablero se diferencia del original en un movimiento de una pieza). Como el primer movimiento se corresponde con el que debe hacer el sistema y ste juega con piezas blancas, se generan todos los tableros posibles moviendo las diferentes piezas blancas existentes en el tablero. Una vez obtenidos todos los tableros, se generan de nuevo todos los que se puedan derivar de cada uno de esos tableros, TN, y este proceso vuelve a repetirse hasta obtener un rbol de ocho niveles de profundidad. En cada generacin de movimientos, esto es, en cada nivel del rbol, se calcula el valor del tablero del nodo. Este valor se calcula en base a una serie de funciones, tradicionalmente consideradas como determinantes en el desarrollo de los finales de ajedrez. El valor, el peso, que se le asigna a cada una de estas funciones depende de un valor inicial y de una evolucin del mismo. Adems, para cada funcin se considera un conjunto determinado de valores, que aplicados a cada una de las funciones conforman el conjunto

de valores de evaluacin de un nodo. Por tanto, si tenemos una poblacin de N individuos, es decir, de N distintos valores para las funciones, calcularemos N valores totales para cada uno de los tableros. Para evitar un excesivo coste computacional en el sistema, una vez calculados los valores de cada nodo se realiza una poda de los elementos de esa generacin, desestimando los que ofrecen peores resultados. Estos resultados coinciden con estados del tablero en los que se produce una situacin de jaque mate sobre el rey blanco, que es lo que el sistema trata de evitar. Esta poda es mucho ms restrictiva en el caso de los movimientos que se crean para las piezas negras, puesto que se podan todos aquellos elementos que pudieran llevar a una situacin perjudicial para las piezas negras, especialmente las que afectan al rey negro, puesto que el sistema trata de simular el comportamiento que llevar a cabo posteriormente el oponente (figura 2).

Figura 2. rbol con ramas podadas.

2.2. Evaluacin de los nodos Para obtener el valor de cada tablero, para saber cmo de buena es una determinada jugada, se utiliza una serie de funciones que es un subconjunto de las funciones habitualmente utilizadas para la evaluacin de tableros en finales de ajedrez. En total utilizamos 11 funciones de evaluacin [6]. Cada una de estas funciones tiene asociado un peso, de modo que para obtener el valor final de un tablero se multiplica el valor de cada funcin por su peso correspondiente y se suman todos los valores obtenidos. Estos pesos son los que

evolucionan a medida que se ejecuta el algoritmo gentico. El sistema crea un conjunto de valores para cada funcin, estando asociado cada uno de ellos a un individuo de la poblacin. Si llamamos S al grupo de valores de los pesos de todas las funciones, tendremos que existirn M grupos de valores, donde M es el tamao de la poblacin (nmero de individuos) indicado por el usuario. As, cada grupo de valores puede denotarse por Sj, donde j es un valor comprendido entre 1 y M. En cada jugada se busca el nodo cuyo valor medio para todos los elementos de la poblacin es menor, es decir, se busca el mejor tablero en promedio para una determinada jugada en lugar de buscar el elemento del espacio de valores que ofrezca la mejor solucin entre todos los nodos, porque esa opcin podra llevarnos a obtener una funcin que simplemente encontrara ptimos locales (parece buen movimiento pero no lo es a largo plazo), pero que no aportara buenas soluciones en el desarrollo del juego de ajedrez. 2.3. Seleccin de la mejor solucin Despus de haber creado el rbol y valorado cada uno de los nodos existentes en el mismo, se obtiene el nodo que ofrece las mejores soluciones para el conjunto de la poblacin de posibles valores. La bsqueda del mejor nodo se realiza siguiendo el siguiente algoritmo: Se evala uno a uno cada uno de los nodos de nivel superior. Si en el nodo que se est evaluando se produce una situacin de jaque mate sobre el rey contrario, se deja de buscar, puesto que ese nodo ofrece una solucin al problema. Si no se produce esa situacin, se busca en sus descendientes aqul cuya valoracin media de las valoraciones obtenidas con cada uno de los pesos es menor. Si esa valoracin media es menor que el anterior mnimo obtenido, se actualiza ese valor por el nuevo. Al final del proceso, si ningn descendiente directo representa una situacin de jaque mate, tenemos el nodo con la menor valoracin media del rbol (de los nodos terminales del rbol). El movimiento que realizar el sistema ser el movimiento indicado por el primer descendiente

del nodo raz de este nodo hoja obtenido, a partir del cual se llega hasta el nodo seleccionado. 2.4. Mutacin Una vez obtenido el nodo con menor valoracin se busca el elemento del conjunto de pesos para las funciones con el que se obtiene el mejor resultado dentro del nodo y ese elemento es el que se toma como base para realizar la mutacin. Esta mutacin se realiza empleando la desviacin estndar de cada uno de los parmetros en el espacio de soluciones. Esa desviacin tpica se le suma o resta a cada uno de los parmetros tomados como base de forma aleatoria. Despus de esto tenemos un nuevo elemento de valoracin, o elemento dentro del conjunto de pesos, mutado que se emplear para calcular la valoracin de los nodos en la siguiente iteracin. Cuando se obtiene un nuevo elemento de valoracin a partir de la mutacin de uno existente, este nuevo elemento reemplaza al anterior dentro del espacio de soluciones. As este valor mutado es empleado en la valoracin de las siguientes jugadas. De este modo en la siguiente generacin de parmetros obtenidos mediante el algoritmo, esta nueva solucin ser considerada, pudiendo ser elegida de nuevo como solucin ptima para un juego (por lo que volvera a mutar) o como parte del espacio de soluciones, con lo que sus valores seran tenidos en cuenta en el clculo de la desviacin estndar que se empleara para la nueva funcin ptima.

3. Resultados

3.1. Resultados del juego Para los resultados expuestos en este documento hemos empleado una poblacin de 10 individuos, en la que uno de ellos posee los valores mostrados en la tabla 1 y los 9 restantes se han inicializado con valores aleatorios cercanos a los indicados en dicha tabla para que la dispersin de los valores no sea excesivamente grande, ya que ello implicara un perodo de aprendizaje mucho mayor debido a que los resultados podran oscilar mucho entre las soluciones y necesitar muchas

iteraciones hasta que los valores comenzaran a converger hacia la solucin. De estos valores los tres que no mutan son los pesos correspondientes a las funciones que comprueban si el rey est en peligro, que tienen siempre un valor de y -20 respectivamente, y la correspondiente a la funcin que comprueba si la torre negra est en peligro. El aplicar una mutacin sobre estos valores demostr que no produca cambios en el rendimiento final de la aplicacin, puesto que siempre tendan a ser resultados muy extremos, por lo que se les asignaron valores grandes desde el comienzo. Los restantes valores se eligieron de modo aleatorio, si bien se podran haber escogido valores ms cercanos a los ptimos para obtener un perodo de aprendizaje menor. p(rey_en_peligro) = p(su_rey_en_peligro) = -20 p(distancia_rey_al_borde) = 5 p(distancia_torre_al_borde) = 0,5 p(torre_en_peligro) = 10 p(torre_enemiga_en_peligro) = -14 p(nmero_piezas_atacando) =1 p(valor_piezas_no_atacadas) = 1 p(nmero_movimientos_mi_rey) = 1,7 p(nmero_movimientos_invlidos_su_rey) = 6 p(nmero_movimientos_torre) = 0,6
Tabla 1. Valores iniciales de los parmetros de valoracin.

p(distancia_rey_al_borde) = 5,70 p(distancia_torre_al_borde) = 1,13 p(torre_en_peligro) = 10,61 p(nmero_piezas_atacando) = 1,42 p(valor_piezas_no_atacadas) = 1,57 p(nmero_movimientos_mi_rey) = 2,08 p(nmero_movimientos_invlidos_su_rey) = 6,32 p(nmero_movimientos_torre) = 0,83
Tabla 2. Valores de los parmetros empleados para valorar las funciones de evaluacin de los tableros despus de 30 partidas desde la inicializacin.

Con cien partidas disputadas los valores obtenidos para los parmetros son los mostrados en la tabla 3. p(distancia_rey_al_borde) = 5,71 p(distancia_torre_al_borde) = 1,14 p(torre_en_peligro) = 10,61 p(nmero_piezas_atacando) = 1,47 p(valor_piezas_no_atacadas) = 1,50 p(nmero_movimientos_mi_rey) = 2,15 p(nmero_movimientos_invlidos_su_rey) = 6,36 p(nmero_movimientos_torre) = 0,71
Tabla 3. Valores de los parmetros empleados para valorar las funciones de evaluacin de los tableros despus de 100 partidas desde la inicializacin.

La configuracin del sistema para estas pruebas es de rey blanco y dos torres blancas contra rey negro y torre negra. En las treinta primeras partidas se producen siete victorias del oponente. A medida que se entrena al sistema, el oponente humano necesita un mayor nmero de movimientos para poder ganar la partida, teniendo que desarrollar estrategias de ataque para poder resultar ganador del juego. El sistema, a su vez, es capaz de generar estrategias defensivas y ofensivas que no era capaz de realizarlas al principio del aprendizaje, con los valores de inicializacin de los parmetros. En la tabla 2 se muestran los valores de los parmetros de evaluacin de las funciones despus de estas treinta partidas.

El porcentaje de partidas ganadas por el sistema es cada vez mayor y en caso de derrota obliga al adversario a realizar cada vez ms movimientos. En la tabla puede apreciarse que ya no existe tanta diferencia entre los valores obtenidos y los que se calcularon para treinta partidas como entre esos valores intermedios y los originales. Eso se debe a la convergencia de los elementos del espacio de soluciones hacia valores ptimos para el algoritmo. 3.2. Resultados de la ejecucin grid Para la ejecucin en grid se utiliza un mximo de 10 procesos que se ejecutan en paralelo (10 subrboles analizndose en paralelo) y un proceso que computa los resultados obtenidos de esos 10 trabajos. La versin secuencial del algoritmo, la cual procesa el rbol completo en lugar de un subrbol, y la versin grid proporcionan unos resultados en cuanto a juego similares. Las diferencias que

existen entre ambas se deben a la utilizacin de un algoritmo evolutivo. Precisamente es de esa evolucin de lo que dependen los resultados. Para poder comparar los resultados temporales obtenidos con ambas versiones es necesario ejecutarlas un nmero elevado de veces de modo que las posibles diferencias debidas a diferentes evoluciones de los valores de los pesos asociados a las funciones de evaluacin, las cuales originan que una evolucin pueda ser mucho ms rpida que otra, se minimicen. En este caso, se han ejecutado ambas versiones 150 veces. El tiempo mostrado en la tabla 4 para la versin grid es tiempo de ejecucin, por lo que no se incluyen los retrasos correspondientes a envo de ficheros, comunicacin con el CE,... Estos tiempos son muy bajos gracias a GridWay y al algoritmo de planificacin empleado. Los tiempos de la tabla 4 se muestran en minutos:segundos. Tiempo medio de ejecucin grid: Tiempo medio versin secuencial:
Tabla 4.

3:34 33:11

Tiempos de ejecucin de la versin grid y de la versin secuencial.

en Round-Robin conseguimos que todos los procesos tarden un tiempo muy similar y que no sufran grandes retrasos en las colas de espera y planificacin. El tiempo necesario para la versin grid es perfectamente asumible para jugar en tiempo real a este juego. Hay que considerar que cualquier otro posible final es fcilmente adaptable a nuestro algoritmo ya que basta con modificar ligeramente las funciones existentes. Esto mismo se puede realizar para el juego completo de ajedrez. Para este caso se obtendran rboles mucho ms grandes, que se procesaran de manera similar. Ello conllevara que para poder ejecutar el algoritmo en un tiempo razonable se deberan utilizar ms WN. Esto no es un gran problema ya que con los certificados apropiados se pueden emplear los recursos existentes en grandes grids, como puede ser EELA [1], pudiendo de este modo gestionar un nmero muy elevado de procesos en paralelo y finalmente crear un proceso maestro que evale los resultados arrojados por los restantes elementos de proceso.

Las pruebas se realizaron sobre mquinas con dos procesadores AMD Opteron a 2.0 GHz (Dual Core) y 4 GB de memoria RAM y Scientific Linux 3 como sistema operativo. De estos tiempos puede obtenerse que el factor de aceleracin es 9,30. Entre los factores que impiden llegar al factor 10, lmite mximo terico, est la ejecucin del nodo maestro en grid, que implica que cada nodo tenga que devolver su resultado y posteriormente enviar todos los resultados a un nuevo nodo para que sean procesados. Al ser los ficheros de resultados de un tamao pequeo, esta prdida es baja. Los tiempos incluyendo transferencia en la versin grid varan muy poco, ya que tanto los ficheros de configuracin y datos del sistema como el propio ejecutable tienen un tamao muy pequeo. El metaplanificador escogido consigue minimizar estos tiempos de modo que estos tiempos puedan ser considerados prcticamente nulos. El mayor retardo se encuentra en el tiempo que tarda el planificador en asignar un proceso a un WN. En nuestro caso este tiempo tambin es pequeo ya que nos aprovechamos de disponer de un gran nmero de WN en nuestro entorno que habitualmente estn disponibles para ser utilizados. Combinando esto con una planificacin

4. Conclusiones y trabajo futuro


Se ha presentado un algoritmo que permite jugar en tiempo real finales de ajedrez que, aprovechando los recursos disponibles a travs de la computacin grid, consigue que en ese tiempo se ejecute un proceso con un coste computacional elevado que sera imposible de llevar a cabo de cualquier otra forma. Tras un periodo de entrenamiento el sistema ofrece unos buenos resultados, siendo capaz de llegar a situaciones de victoria o de tablas sobre el oponente en situaciones que pueden ser complicadas. A medida que se juegan partidas es cada vez ms complicado vencer al sistema, necesitando para ello cada vez ms movimientos y teniendo que solventar cada vez mayor nmero de situaciones de ataque del sistema. La calidad del aprendizaje del sistema depende de forma directa de la calidad del entrenamiento al que se le somete. Si el jugador realiza movimientos ilgicos como, por ejemplo, dejarse derrotar en una partida, el sistema no puede saber por qu ha hecho ese movimiento el jugador, considerando por tanto que ha conseguido ganar la partida y guardando la informacin de los pesos para siguientes partidas,

aunque dicha informacin pueda no ser vlida para futuras partidas. La mejora respecto a la versin secuencial del mismo algoritmo es clara gracias a la paralelizacin de procesos. Adems, al ser menor cada proceso, no se necesita hacer uso de la memoria de intercambio, la cual ralentizara la ejecucin. Los valores de inicializacin de los parmetros resultan claves para la evolucin en el aprendizaje y para la calidad de los resultados obtenidos. Este algoritmo es fcilmente ampliable a otros posibles finales de ajedrez e incluso al juego de ajedrez completo, teniendo como nica limitacin para su ejecucin el nmero de WN presentes en el entorno de produccin en el que se ejecuta el algoritmo. Sin embargo, esto no es un problema ya que actualmente existen entornos con el suficiente nmero de recursos como para que esta limitacin no sea tal. Como trabajo futuro queremos desarrollar una versin que permita jugar ms finales de ajedrez. Como ya se ha comentado, esto se puede hacer sin necesidad de modificar el algoritmo empleado. Otra aplicacin consistir en mejorar la calidad de la poda que se realiza. Con una poda ms exhaustiva podemos conseguir ejecutar rboles de ms niveles de profundidad sin aumentar el tiempo de ejecucin. Esto sera un paso previo a conseguir un algoritmo que permitiera jugar una partida completa de ajedrez. Tambin se tratar de ampliar el nmero de funciones de evaluacin para los nodos. Con ello se conseguirn mejores resultados a costa de aumentar la complejidad en la ejecucin. Al perfeccionar la poda, este aumento del tiempo se vera compensado con tener que evaluar menos nodos, obteniendo al final un resultado temporal similar al actual y con mejores resultados de juego. Adems, al disminuir el nmero de nodos disminuye la cantidad de memoria necesaria, de modo que es menos probable la utilizacin de la memoria de intercambio, que penaliza los resultados obtenidos.

Referencias
[1] EELA. Sitio web. http://www.eu-eela.org, Mayo 2007. [2] EGEE. Sitio web. http://public.eu-egee.org, Mayo 2007 [3] Ferrer, G.J., Martin, W.N. Using Genetic Programming to Evolve Board Evaluation Functions for a Boardgame. IEEE Conference on Evolutionary Computation, vol. 2, pp. 747752, 1995. [4] Gleich, D. Machine Learning in Computer Chess: Genetic Programming and KRK. Technical Report, Harvey Mudd College, EE.UU., 2003. [5] gLite. Sitio web. http://www.glite.org, Mayo 2007. [6] Gmez, A., Snchez, J.M., Vega, M.A., Gmez, J.A. Algoritmo Evolutivo para Bsqueda de Soluciones en Finales de Ajedrez. V Congreso Espaol sobre Metaheursticas, Algoritmos Evolutivos y Bioinspirados, MAEB'07, pp. 787-793, Febrero 2007. [7] Gridway. Documentacin online. http://www.gridway.org/documentation/guide s.php, Mayo 2007. [8] Hauptman, A., Sipper, M. GP-EndChess: Using Genetic Programming to Evolve Chess Endgame Players. 8th European Conference on Genetic Programming (EuroGP2005), vol. 3447 de LNCS, pp. 120-131, 2005. [9] Koza, J.R.. Genetic Programming. Encyclopedia of Computer Science and Technology, vol. 39, pp. 29-43, 1998. [10] Laure, E., Fisher, S.M., Frohner, A., Grandi, C., Kunszt, P., y col. Programming the Grid with gLite. Computational Methods in Science and Technology, vol. 12, n 1, pp. 33-45, 2006. [11] Vzquez-Poletti, J.L. GridWay@CNB, Technical Report, CNB, Madrid, Spain, Marzo 2007.

S-ar putea să vă placă și