Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Adaptando algoritmos evolutivos paralelos
al...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Sumario
1 Introducción
2 Programación funcio...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Tecnologías usadas para implementar AGs
Java...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Paradigmas emergentes
Funcional
Concurrente
...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
El desafío de los multi-núcleos
Necesidad de...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
El desafío de los multi-núcleos
Bibliotecas
...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Lenguajes de programación
Clojure, Go, Scala...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Programación funcional
uso de las funciones ...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Programación funcional: Erlang
lenguaje func...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Mapeo entre conceptos de Erlang y de AGs
Con...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Código desarrollado: erlEA
Módulos lógicos: ...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Resultados
Problema OneMax (cantidad de 1s e...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Resultados de los experimentos
No. Islas Eva...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Conclusiones
El escalado no es bueno, siendo...
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Trabajo futuro
Implementación de un experime...
Upcoming SlideShare
Loading in …5
×

Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang

1,587 views
1,468 views

Published on

Trabajo de Albert-Cruz (jalbert@uci.cu) en el CEDI2013: "Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang"

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,587
On SlideShare
0
From Embeds
0
Number of Embeds
1,086
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang

  1. 1. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang J. Albert-Cruz1, L. Acevedo-Martínez1, J.J. Merelo2, P.A. Castillo2, M.G. Arenas2 Centro de Estudios de Matemática Computacional, Universidad de Ciencias Informáticas, Cuba Dept. Arquitectura y Tecnología de los Computadores, Universidad de Granada, España jalbert@uci.cu Adaptando algoritmos evolutivos al lenguaje Erlang
  2. 2. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Sumario 1 Introducción 2 Programación funcional 3 Diseño/implementación de AGs 4 Conclusiones Adaptando algoritmos evolutivos al lenguaje Erlang
  3. 3. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Tecnologías usadas para implementar AGs Java, C/C++ y Perl Todas OO (o al menos procedurales) La implementación importa Adaptando algoritmos evolutivos al lenguaje Erlang
  4. 4. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Paradigmas emergentes Funcional Concurrente En los lenguajes tradicionales se incluyen: C# 3/4/5 (sucesivas características funcionales) .NET Framework/Bibliotecas Java (patrones concurrentes) Adaptando algoritmos evolutivos al lenguaje Erlang
  5. 5. Introducción Programación funcional Diseño/implementación de AGs Conclusiones El desafío de los multi-núcleos Necesidad de hacer paralelo el más simple de nuestros programas de manera que hagan uso de los microprocesadores modernos. Adaptando algoritmos evolutivos al lenguaje Erlang
  6. 6. Introducción Programación funcional Diseño/implementación de AGs Conclusiones El desafío de los multi-núcleos Bibliotecas Nuevos lenguajes / versiones actualizadas de los viejos Adaptando algoritmos evolutivos al lenguaje Erlang
  7. 7. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Lenguajes de programación Clojure, Go, Scala, Erlang Poseen construcciones para concurrencia: facilitando razonar sobre ella y simplificando su sintaxis Adaptando algoritmos evolutivos al lenguaje Erlang
  8. 8. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Programación funcional uso de las funciones como datos (pasándolas por parámetros y devolviéndolas como resultados) uso de listas adecuada para el desarrollo de algoritmos concurrentes pues estos tienen la primera fuente de errores y complejidad en la comunicación entre procesos, a través de cambios de estado Adaptando algoritmos evolutivos al lenguaje Erlang
  9. 9. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Programación funcional: Erlang lenguaje funcional, concurrente y distribuido posee entre sus tipos de datos el de proceso utiliza el modelo actor para su implementación del paradigma de programación concurrente Adaptando algoritmos evolutivos al lenguaje Erlang
  10. 10. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Mapeo entre conceptos de Erlang y de AGs Concepto Erlang Concepto AG en el que se emplea tupla cromosoma evaluado lista cromosoma y población función cruzamiento, mutación y selección actor isla, evaluador y reproductor mensaje migración ets pool módulo random naturaleza estocástica del AG Adaptando algoritmos evolutivos al lenguaje Erlang
  11. 11. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Código desarrollado: erlEA Módulos lógicos: reproducer, evaluator, poolManager Módulos auxiliares e interconexión: experiment, configBuilder, profiler, manager, report El código se encuentra bajo la licencia AGPL en https://github.com/jalbertcruz/erlEA/tree/MAEB Adaptando algoritmos evolutivos al lenguaje Erlang
  12. 12. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Resultados Problema OneMax (cantidad de 1s en la cadena) Cromosomas de longitud 128 Población de 256 individuos por isla Evaluadores y reproductores trabajando con bloques de 50 cromosomas Máquina con Windows 8, Core i7 y 16 Gb de RAM Adaptando algoritmos evolutivos al lenguaje Erlang
  13. 13. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Resultados de los experimentos No. Islas Evaluadores Reproductores Tiempo (s) 1 2 5 10 11.62375 2 2 10 20 25.3412 3 4 5 10 10.672001 4 4 10 20 27.09117 5 8 5 10 16.375004 6 8 10 20 36.294951 Adaptando algoritmos evolutivos al lenguaje Erlang
  14. 14. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Conclusiones El escalado no es bueno, siendo en todo caso mejor cuanto menor es el número de evaluadores. Alta simplicidad de implementación de un modelo híbrido de AG, en su versión concurrente. Adaptando algoritmos evolutivos al lenguaje Erlang
  15. 15. Introducción Programación funcional Diseño/implementación de AGs Conclusiones Trabajo futuro Implementación de un experimento más complejo Uso de arquitectura distribuida y heterogénea (soporte para la distribución de procesos y e implementación de la MV para varias plataformas) Adaptando algoritmos evolutivos al lenguaje Erlang

×