optimizando algoritmos evolutivos - maeb

11
Optimizando la implementación de algoritmos evolutivos JJ Merelo, Pedro C a s t illo , Juan L. Jiménez Laredo, Maribel García Arenas GeNeura team: http://geneura.wordpress.com Departamento de Arquitectura y Tecnología de Computadores: http://atc.ugr.es Universidad d Granada: http://www.ugr.es

Upload: juan-j-merelo

Post on 14-Jul-2015

595 views

Category:

Education


2 download

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

Ejemplo de uso de un profiler

Planteamiento del problema

Fitness = MaxOnes

Algoritmo genético canónico, con élite = 2

Población y longitud variable

Software libre: http://bit.ly/bOk3z3

Evolución de un programa evolutivo

Eliminado

Añadido

El tamaño siempre importa

Caché para la función fitness

Uso de tr para cálculo del fitness

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.

Muchas gracias por su atención

¿Alguna pregunta?

Mejorando los algoritmos evolutivos

Se propone el uso de una metodología de prueba y evaluación seguida por la aplicación de técnicas

de programación comunes