Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang
-
Upload
pacvslideshare -
Category
Education
-
view
1.360 -
download
0
Transcript of Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Adaptando algoritmos evolutivos paralelosal 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 CienciasInformáticas, Cuba
Dept. Arquitectura y Tecnología de los Computadores, Universidad de Granada,España
Adaptando algoritmos evolutivos al lenguaje Erlang
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
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Tecnologías usadas para implementar AGs
Java, C/C++ y PerlTodas OO (o al menos procedurales)La implementación importa
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Paradigmas emergentes
FuncionalConcurrente
En los lenguajes tradicionales se incluyen:C# 3/4/5 (sucesivas características funcionales).NET Framework/Bibliotecas Java (patronesconcurrentes)
Adaptando algoritmos evolutivos al lenguaje Erlang
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 nuestrosprogramas de manera que hagan uso de losmicroprocesadores modernos.
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
El desafío de los multi-núcleos
BibliotecasNuevos lenguajes / versiones actualizadas de losviejos
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Lenguajes de programación
Clojure, Go, Scala, ErlangPoseen construcciones para concurrencia: facilitandorazonar sobre ella y simplificando su sintaxis
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Programación funcional
uso de las funciones como datos (pasándolas porparámetros y devolviéndolas como resultados)uso de listasadecuada para el desarrollo de algoritmosconcurrentes pues estos tienen la primera fuente deerrores y complejidad en la comunicación entreprocesos, a través de cambios de estado
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Programación funcional: Erlang
lenguaje funcional, concurrente y distribuidoposee entre sus tipos de datos el de procesoutiliza el modelo actor para su implementación delparadigma de programación concurrente
Adaptando algoritmos evolutivos al lenguaje Erlang
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 empleatupla cromosoma evaluadolista cromosoma y poblaciónfunción cruzamiento, mutación y selecciónactor isla, evaluador y reproductormensaje migraciónets poolmódulo random naturaleza estocástica del AG
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Código desarrollado: erlEA
Módulos lógicos: reproducer, evaluator, poolManagerMódulos auxiliares e interconexión: experiment,configBuilder, profiler, manager, report
El código se encuentra bajo la licencia AGPL enhttps://github.com/jalbertcruz/erlEA/tree/MAEB
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Resultados
Problema OneMax (cantidad de 1s en la cadena)Cromosomas de longitud 128Población de 256 individuos por islaEvaluadores y reproductores trabajando con bloquesde 50 cromosomasMáquina con Windows 8, Core i7 y 16 Gb de RAM
Adaptando algoritmos evolutivos al lenguaje Erlang
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.623752 2 10 20 25.34123 4 5 10 10.6720014 4 10 20 27.091175 8 5 10 16.3750046 8 10 20 36.294951
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Conclusiones
El escalado no es bueno, siendo en todo caso mejorcuanto menor es el número de evaluadores.Alta simplicidad de implementación de un modelohíbrido de AG, en su versión concurrente.
Adaptando algoritmos evolutivos al lenguaje Erlang
Introducción Programación funcional Diseño/implementación de AGs Conclusiones
Trabajo futuro
Implementación de un experimento más complejoUso de arquitectura distribuida y heterogénea(soporte para la distribución de procesos y eimplementación de la MV para varias plataformas)
Adaptando algoritmos evolutivos al lenguaje Erlang