15
Introducción Programación funcional Diseño/implementación de AGs Conclusiones Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang J. Albert-Cruz 1 , L. Acevedo-Martínez 1 , J.J. Merelo 2 , P.A. Castillo 2 , M.G. Arenas 2 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 [email protected] Adaptando algoritmos evolutivos al lenguaje Erlang

Adaptando algoritmos evolutivos paralelos al lenguaje funcional Erlang

Embed Size (px)

Citation preview

Page 1: 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

[email protected]

Adaptando algoritmos evolutivos al lenguaje Erlang

pedro
Page 2: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 3: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 4: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 5: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 6: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 7: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 8: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 9: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 10: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 11: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 12: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 13: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 14: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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

Page 15: Adaptando algoritmos evolutivos paralelos al lenguaje funcional 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