Optimizando la implementación de
      algoritmos evolutivos


         J.J. Merelo, Pedro Cast illo,
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
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
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
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
Herramientas que nos ayudarán
                Monitores
                  Tiempo de ejecución,
                  memoria usada,
                  consumo de recursos
                Profilers
                  Tiempo invertido y
                  número de
                  ejecuciones reales de
                  fragmentos de código
En este trabajo...
Partir de la implementación de un AE sencillo
Programado en Perl con
Algorithm::Evolutionary
Analizar el programa con las herramientas
Aplicar cambios para optimizar la
implementación
Estudiar las mejoras
Ejemplo de uso de un profiler




                       Tiempo en cada
                      llamada a función
Planteamiento del problema
Fitness = MaxOnes
Algoritmo genético
canónico, con élite
Población y longitud
variable

Software libre:
http://bit.ly/bOk3z3
Evolución de un programa evolutivo
                       Salida de la
                   herramienta Launchpad
Evolución de un programa evolutivo
                        Eliminado




                           Añadido
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 detectarlos
  Cambio de la función de ordenación
El tamaño siempre importa
Caché para la
función fitness                 básica

                                caché




                                usar tr
Uso de la
función de Perl
tr para cálculo
del fitness
Cuantos más semos... más
       tardaremos
                      Uso de un profiler
           básica     para localización de
                      cuello de botella:
                      función sort
         mergesort


          Sort::Key
                      Cambio por
                      Sort::Key
                      (mejora del comportamiento
                       peor caso)
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.
Muchas gracias



¿Alguna pregunta?
             J.J. Merelo
            jmerelo@geneura.ugr.es

Optimizando EAs

  • 1.
    Optimizando la implementaciónde algoritmos evolutivos J.J. Merelo, Pedro Cast illo, 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
  • 2.
    Mejorando los algoritmosevolutivos Usar una metodología de prueba y evaluación seguida por la aplicación de técnicas de programación comunes
  • 3.
    Prestar atención ala optimización de las aplicaciones El hardware cada vez es más potente y rápido, aún así, se deben optimizar las implementaciones
  • 4.
    En cuanto ala 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
  • 5.
    Herramientas que nosayudarán Monitores Tiempo de ejecución, memoria usada, consumo de recursos Profilers Tiempo invertido y número de ejecuciones reales de fragmentos de código
  • 6.
    En este trabajo... Partirde la implementación de un AE sencillo Programado en Perl con Algorithm::Evolutionary Analizar el programa con las herramientas Aplicar cambios para optimizar la implementación Estudiar las mejoras
  • 7.
    Ejemplo de usode un profiler Tiempo en cada llamada a función
  • 8.
    Planteamiento del problema Fitness= MaxOnes Algoritmo genético canónico, con élite Población y longitud variable Software libre: http://bit.ly/bOk3z3
  • 9.
    Evolución de unprograma evolutivo Salida de la herramienta Launchpad
  • 10.
    Evolución de unprograma evolutivo Eliminado Añadido
  • 11.
    Posibles mejoras alprograma 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 detectarlos Cambio de la función de ordenación
  • 12.
    El tamaño siempreimporta Caché para la función fitness básica caché usar tr Uso de la función de Perl tr para cálculo del fitness
  • 13.
    Cuantos más semos...más tardaremos Uso de un profiler básica para localización de cuello de botella: función sort mergesort Sort::Key Cambio por Sort::Key (mejora del comportamiento peor caso)
  • 14.
    Conclusiones Mejoras del tiempode 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.
  • 15.
    Muchas gracias ¿Alguna pregunta? J.J. Merelo jmerelo@geneura.ugr.es