Translate

lunes, 26 de abril de 2021

Ajedrez: algoritmos de busqueda

 Hola amigos. Dejo el enlace pet-rock-chess de un juego de ajedrez hecho en lisp. El objeto de mostrarlo es puramente educativo, pues las funciones de evaluacion que tiene son muy basicas. En el se muestran los algoritmos minimax y el alfa-beta. 

Por ejemplo, para un juego entre dos estrategias de ordenador distintas a 1 min:

> (ajedrez #'random-estrategia (alfa-beta-searcher3 1 #'combina-eval) t 1 )

Donde la profundidad de busqueda del alfa-beta es a un solo nivel. La funcion de evaluacion es combina-eval. El jugador blanco siempre va primero, el negro segundo. Otro ejemplo, un juego de 5 min entre un humano y el ordenador con una profundidad de busqueda de 2 niveles:

> (ajedrez #'humano (alfa-beta-searcher3 2 #'combina-eval) t 5 )

Para jugar cuando le toca a humano debera escribir, por ejemplo: 

(caballo-blanco b1 c3)

Obviamente que no tiene una interfaz grafica aun. Un ejemplo mas: busqueda minimax y busqueda alfa-beta, a un min y con distintas funciones de evaluacion: 

(ajedrez (minimax-searcher 1 #'movilidad) (alfa-beta-searcher3 1 #'movilidad-contraria) t 1)

Saludos ;-)