Top Banner
Optimizando la implementación de algoritmos evolutivos J.J. Merelo, Pedro Castillo , Juan L. Jiménez Laredo, Maribel García Arenas GeNeura team: http://geneura.wordpress.com Depto. de Arquitectura y Tecnología de Computadores: http://atc.ugr.es Universidad d Granada: http://www.ugr.es
15

Optimizando EAs

Jul 14, 2015

Download

Documents

pacvslideshare
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Optimizando EAs

Optimizando la implementación de algoritmos evolutivos

J.J. Merelo, Pedro Castillo,Juan L. Jiménez Laredo, Maribel García Arenas

GeNeura team: http://geneura.wordpress.comDepto. de Arquitectura y Tecnología de Computadores:

http://atc.ugr.es Universidad d Granada: http://www.ugr.es

Page 2: Optimizando EAs

Mejorando los algoritmos evolutivos

Usar una metodología de prueba y evaluación seguida por la aplicación de técnicas de

programación comunes

Page 3: Optimizando EAs

Prestar atención a la optimización de las aplicaciones

El hardware cada vez es más potente y rápido,

aún así, se deben optimizar las implementaciones

Page 4: Optimizando EAs

En cuanto a la implementación de los algoritmos evolutivos

Se pueden diseñar mejores algoritmos y obtener

mejoras sustanciales tanto algorítmicas como de

tiempo de ejecución

Page 5: Optimizando EAs

Herramientas que nos ayudarán

MonitoresTiempo de ejecución, memoria usada, consumo de recursos

ProfilersTiempo invertido y número de ejecuciones reales de fragmentos de código

Page 6: Optimizando EAs

En este trabajo...

Partir de la implementación de un AE sencilloProgramado en Perl con Algorithm::EvolutionaryAnalizar el programa con las herramientasAplicar cambios para optimizar la implementaciónEstudiar las mejoras

Page 7: Optimizando EAs

Ejemplo de uso de un profiler

Tiempo en cada llamada a función

Page 8: Optimizando EAs

Planteamiento del problema

Fitness = MaxOnesAlgoritmo genético canónico, con élitePoblación y longitud variable

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

Page 9: Optimizando EAs

Evolución de un programa evolutivoSalida de la

herramienta Launchpad

Page 10: Optimizando EAs

Evolución de un programa evolutivo

Eliminado

Añadido

Page 11: Optimizando EAs

Posibles mejoras al programa

Mejoras en el cálculo del fitness:Usar una cachéCambio del cálculo del fitness

Detección de cuellos de botella:Usar un profiler para detectarlosCambio de la función de ordenación

Page 12: Optimizando EAs

El tamaño siempre importa

Caché para la función fitness

Uso de la función de Perl tr para cálculo del fitness

básica

caché

básica

usar tr

Page 13: Optimizando EAs

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)

básica

Sort::Key

mergesort

Page 14: Optimizando EAs

Conclusiones

Mejoras 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.

Page 15: Optimizando EAs

Muchas gracias

¿Alguna pregunta?

J.J. Merelo [email protected]