Your SlideShare is downloading. ×
  • Like
Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang

  • 1,300 views
Published

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

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

Published in Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,300
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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