El torneo de estrategias
Nuestras fases finales de la implementación de nuestro
jugador estratégico fueron interesantes porque solo hasta casi el final nos
dimos cuenta de que nuestro programa no hacía lo que nosotros queríamos
exactamente. Hasta la fecha no podemos explicar cómo fue que ése programa fue
el más fuerte en las primeras etapas de desarrollo.
Las etapas “finales” de desarrollo consistieron en
optimización, deshaciéndonos una por una de las piezas de código que nos tomaba
más tiempo ejecutar (entre éstas las funciones del framework dagor). Removimos
el uso excesivo de la función len() de la librería estándar de python y nos
concentramos en hacer nuestro programa tan inteligente como fuera posible para
cada caso. Es decir: con modificaciones ligeras al framework dagor para
conveniencia y scripts que ejecutaban grupos de enfrentamientos por tamaño de
área de tablero probamos nuestro programa exhaustivamente para obtener de
manera algo burda las profundidades máximas que el tiempo límite nos permitía
alcanzar.
El proceso de optimización y pruebas nos tomo casi
tanto tiempo como la implementación debido a que había que correr el profiler cada vez que hacíamos un cambio
significativo. Con esto nos dimos cuenta de que no es nada sencillo hacer
optimizaciones y que llega un momento que algunas partes de código ya no se
pueden mejorar de ninguna forma a menos que se cambien por completo. Sin embargo,
creemos que el tiempo y trabajo que nos tomó valió la pena pues nuestro código era
más o menos el doble de rápido y funcionaba mejor que nunca, gracias a eso es
que obtuvimos los resultados que obtuvimos.
En cuanto a los resultados, la verdad ya estábamos esperando
quedar entre los primeros lugares pues en la primera fase habíamos dominado y
nuestra segunda implementación vencía a la primera el 90% del tiempo. De todas maneras,
no esperábamos tener resultados [100, 0] puesto que incluso el aleatorio por
pura suerte nos ganaba 1 a 3 juegos, así que eso si fue una sorpresa.
No hay comentarios.:
Publicar un comentario