Optimizando la implementación de algoritmos evolutivos JJ Merelo,  Pedro Castillo , 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
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

Optimizando Algoritmos Evolutivos - MAEB

  • 1.
    Optimizando la implementaciónde algoritmos evolutivos JJ Merelo, Pedro Castillo , 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
  • 2.
    Se presta pocaatenció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
  • 3.
    Herramientas usadas MonitoresTiempo de ejecución, memoria usada, consumo de recursos Profilers Tiempo invertido y número de ejecuciones reales de fragmentos de código
  • 4.
    Ejemplo de usode un profiler
  • 5.
    Planteamiento del problemaFitness = MaxOnes
  • 6.
  • 7.
  • 8.
    Software libre: http://bit.ly/bOk3z3
  • 9.
    Evolución de unprograma evolutivo Eliminado Añadido
  • 10.
    El tamaño siempreimporta Caché para la función fitness
  • 11.
    Uso de tr para cálculo del fitness
  • 12.
    Cuantos más semos...más tardaremos Uso de un profiler para localización de cuello de botella: función sort
  • 13.
    Cambio por Sort::Key Mejora del comportamiento peor caso.
  • 14.
    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.
  • 15.
    Conviene aplicar técnicasde programación habituales y buenas prácticas.
  • 16.
    Trabajo futuro: incorporaciónde técnicas en Algorithm::Evolutionary, librería de algoritmos evolutivos en Perl.
  • 17.
    Muchas gracias porsu atención ¿Alguna pregunta?
  • 18.
    Mejorando los algoritmosevolutivos 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

Notas del editor

  • #3 La imagen está tomada de http://www.flickr.com/photos/dahlstroms/4083220012/
  • #4 Imagen obtenida de http://www.flickr.com/photos/sebilden/3429805384/
  • #5 Devel::NYTProf, un profiler para Perl desarrollado inicialmente para trabajar en el NYTimes (de ahí el nombre) y liberado; actualmente disponible en CPAN; es la mejor herramienta y más detallada que hay ahora mismo en Perl, produciendo una salida en HTML.
  • #6 Imagen CC obtenida de http://www.flickr.com/photos/rbanks/2292915/
  • #7 En el repositorio se pueden ver como diferentes versiones del mismo programa todos los programas que se han usado en la serie, usando la herramienta de diferencia entre programas que da Launchpad.
  • #9 No es la única mejora, se probaron también otros algoritmos como mergesort, y otros que no tuvieron tanto éxito. El comportamiento de los lenguajes de programación
  • #12 Imagen obtenida de http://www.flickr.com/photos/viagallery/2292639593/ con licencia CC