optimizando algoritmos evolutivos - maeb
TRANSCRIPT
Optimizando la implementación de algoritmos evolutivos
JJ Merelo, P e d r o C a s t i l lo ,Juan L. Jiménez Laredo, Maribel García Arenas
GeNeura team: http://geneura.wordpress.comDepartamento de Arquitectura y Tecnología de
Computadores: http://atc.ugr.esUniversidad d Granada: http://www.ugr.es
Se presta poca atención a la implementación de los algoritmos
evolutivos
Aunque permite diseñar mejores algoritmos y
obtener mejoras sustanciales tanto algorítmicas
como de tiempo de ejecución
Herramientas usadas
Monitores
Tiempo de ejecución, memoria usada, consumo de recursos
Profilers
Tiempo invertido y número de ejecuciones reales de fragmentos de código
Planteamiento del problema
Fitness = MaxOnes
Algoritmo genético canónico, con élite = 2
Población y longitud variable
Software libre: http://bit.ly/bOk3z3
Cuantos más semos... más tardaremos
Uso de un profiler para localización de cuello de botella: función sort
Cambio por Sort::Key
Mejora del comportamiento peor caso.
Conclusiones
Mejoras de dos órdenes de magnitud (para algunos tamaños) del tiempo de ejecución de un programa mediante mejoras en la implementación.
Conviene aplicar técnicas de programación habituales y buenas prácticas.
Trabajo futuro: incorporación de técnicas en Algorithm::Evolutionary, librería de algoritmos evolutivos en Perl.