Desarrollo de un entorno Desarrollo de un entorno MapReduce para la ejecución MapReduce para la ejecución
distribuida de Algoritmos distribuida de Algoritmos Genéticos ParalelosGenéticos Paralelos
Autor: Alberto Luengo CabanillasAutor: Alberto Luengo Cabanillas
Directores: Xoán Carlos Pardo MartínezDirectores: Xoán Carlos Pardo Martínez Patricia González GómezPatricia González Gómez
Departamento de Electrónica e Departamento de Electrónica e SistemasSistemas
Facultad de InformáticaFacultad de InformáticaUniversidad de A CoruñaUniversidad de A Coruña
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
Introducción (I)Introducción (I) ¿En qué escenario nos encontramos? ¿En qué escenario nos encontramos?
Grandes centros de computación donde se Grandes centros de computación donde se ejecutan muchos procesos de forma paralelaejecutan muchos procesos de forma paralela
¿Qué necesidades tenemos?¿Qué necesidades tenemos? Aprovechar de forma efectiva todos los recursos Aprovechar de forma efectiva todos los recursos
a nuestra disposición mediante herramientas a nuestra disposición mediante herramientas softwaresoftware
Ej: Lenguajes y modelos de programación distribuidaEj: Lenguajes y modelos de programación distribuida
¿Qué dificultades afrontamos?¿Qué dificultades afrontamos? Tiempos de computación demasiado grandesTiempos de computación demasiado grandes Recursos hardware limitadosRecursos hardware limitados Problemas cada vez más complejosProblemas cada vez más complejos
Introducción (II)Introducción (II)
Ejemplo de estos Ejemplo de estos problemas:problemas: Algoritmos Algoritmos
GenéticosGenéticos Problemas de Problemas de
búsqueda con búsqueda con enfoque iterativoenfoque iterativo
Necesidades Necesidades importantes de importantes de tiempo y recursostiempo y recursos
Introducción (III)Introducción (III) ¿Qué solución ¿Qué solución
aportamos?aportamos? MapReduceMapReduce
Modelo de programación Modelo de programación diseñado por Googlediseñado por Google
Altamente personalizableAltamente personalizable Permite operar a alto Permite operar a alto
nivelnivel
Introducción (IV)Introducción (IV) Sin embargo…Sin embargo…
No todos los problemas se pueden expresar de No todos los problemas se pueden expresar de forma directa con MapReduce…forma directa con MapReduce…
……porque no todos se adaptan a la metodología de dos porque no todos se adaptan a la metodología de dos fases de este modelofases de este modelo
……porque no presentan un enfoque orientado a datosporque no presentan un enfoque orientado a datos Por tanto…Por tanto…
Debemos buscar una forma de optimizar el uso Debemos buscar una forma de optimizar el uso de las máquinas a nuestra disposición, de las máquinas a nuestra disposición, aprovechando las características inherentes de aprovechando las características inherentes de fiabilidad y tolerancia a fallos ofrecidas por fiabilidad y tolerancia a fallos ofrecidas por MapReduceMapReduce
Debemos adaptar la orientación iterativa de los Debemos adaptar la orientación iterativa de los Algoritmos Genéticos al modelo de fases Algoritmos Genéticos al modelo de fases mapmap y y reducereduce
Introducción (y V). Introducción (y V). ObjetivosObjetivos
Objetivos de la propuestaObjetivos de la propuesta Construir un entorno lo más genérico Construir un entorno lo más genérico
posible para la ejecución distribuida de posible para la ejecución distribuida de Algoritmos Genéticos Paralelos.Algoritmos Genéticos Paralelos.
Dotarlo de la suficiente flexibilidad y Dotarlo de la suficiente flexibilidad y extensibilidad para que resolver problemas extensibilidad para que resolver problemas de Algoritmos Genéticos sea una tarea fácil de Algoritmos Genéticos sea una tarea fácil y rápida.y rápida.
Presentarlo con una estructura modular, de Presentarlo con una estructura modular, de forma que sea fácilmente mantenible y forma que sea fácilmente mantenible y ampliable en el futuro.ampliable en el futuro.
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
MapReduce (I)MapReduce (I) Modelo de programación diseñado por Google Modelo de programación diseñado por Google
Véase [DG08] en la memoriaVéase [DG08] en la memoria Facilita un Facilita un frameworkframework para procesar grandes para procesar grandes
conjuntos de datos de ciertos tipos de problemas conjuntos de datos de ciertos tipos de problemas distribuidos utilizando el mayor número de distribuidos utilizando el mayor número de ordenadores disponiblesordenadores disponibles Ej: Problemas de Algoritmos GenéticosEj: Problemas de Algoritmos Genéticos
MapReduce facilita:MapReduce facilita: Paralelismo y distribución de datos automatizadaParalelismo y distribución de datos automatizada Tolerancia a fallosTolerancia a fallos Planificación de Entrada/SalidaPlanificación de Entrada/Salida Interfaces web de monitorizaciónInterfaces web de monitorización
Ejemplos de usoEjemplos de uso PagerankPagerank, , Google MapsGoogle Maps……
MapReduce (II)MapReduce (II)
Estructura en dos fasesEstructura en dos fases Fase Fase mapmap: El nodo maestro recoge los datos : El nodo maestro recoge los datos
de entrada, los divide en sub-problemas más de entrada, los divide en sub-problemas más pequeños y los distribuye a los nodos pequeños y los distribuye a los nodos trabajadores. Un nodo trabajador puede trabajadores. Un nodo trabajador puede repetir esta operación, construyéndose una repetir esta operación, construyéndose una estructura de árbol multi-nivelestructura de árbol multi-nivel
Fase Fase reducereduce: El nodo maestro recoge los : El nodo maestro recoge los resultados de todos los sub-problemas y los resultados de todos los sub-problemas y los combina para obtener el resultado del combina para obtener el resultado del problema originalproblema original
MapReduce (III)MapReduce (III)
Flujo de datosFlujo de datos
MapReduce (IV). HadoopMapReduce (IV). Hadoop
Proyecto de ApacheProyecto de Apache Implementación Java de MapReduceImplementación Java de MapReduce Proporciona un framework que planifica tareas, facilita la Proporciona un framework que planifica tareas, facilita la
monitorización y soporta la re-ejecución de trabajos fallidosmonitorización y soporta la re-ejecución de trabajos fallidos Consta de:Consta de:
Un único proceso maestro Un único proceso maestro JobtrackerJobtracker que distribuye la que distribuye la informacióninformación
Varios procesos esclavos Varios procesos esclavos TasktrackerTasktracker, uno por nodo, encargados , uno por nodo, encargados de procesar los sub-problemasde procesar los sub-problemas
Características principalesCaracterísticas principales EscalableEscalable
Puede manejar y almacenar petabytes de forma seguraPuede manejar y almacenar petabytes de forma segura EficienteEficiente
Distribuyendo la información, Hadoop puede procesarla en paralelo en Distribuyendo la información, Hadoop puede procesarla en paralelo en los nodos en los que se almacenalos nodos en los que se almacena
SeguroSeguro Mantiene de forma automática varias copias de los datos y replanifica Mantiene de forma automática varias copias de los datos y replanifica
los trabajos fallidoslos trabajos fallidos
MapReduce (V). HadoopMapReduce (V). Hadoop Ecosistema de HadoopEcosistema de Hadoop
MapReduce (y VI). PigMapReduce (y VI). Pig
Plataforma software de análisis de grandes conjuntos de datosPlataforma software de análisis de grandes conjuntos de datos Lenguaje de alto nivel + infraestructura (compilador)Lenguaje de alto nivel + infraestructura (compilador) Pig LatinPig Latin
Se aproxima más a un lenguaje de flujo de datos que a uno Se aproxima más a un lenguaje de flujo de datos que a uno procedural o declarativoprocedural o declarativo
Facilidad de programaciónFacilidad de programación Posibilidades de optimizaciónPosibilidades de optimización ExtensibilidadExtensibilidad
VentajasVentajas Aumenta la productividadAumenta la productividad
10 líneas de código 10 líneas de código PigPig Latin Latin equivalen a 200 líneas en Javaequivalen a 200 líneas en Java Abre el sistema para programadores no familiarizados con Java…Abre el sistema para programadores no familiarizados con Java…
……ya que presenta similitudes con SQL…ya que presenta similitudes con SQL… ……aunque su uso más habitual es embeberlo en código Javaaunque su uso más habitual es embeberlo en código Java
Incluye operaciones comunes tales como Incluye operaciones comunes tales como joinjoin, , groupgroup, , sortsort……
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
Algoritmos Genéticos (I)Algoritmos Genéticos (I) Los Algoritmos Genéticos (AG´s) son Los Algoritmos Genéticos (AG´s) son
métodos de búsqueda basados en una métodos de búsqueda basados en una simulación parcial de los mecanismos de simulación parcial de los mecanismos de la evolución naturalla evolución natural
Fueron creados en la década de 1960 Fueron creados en la década de 1960 por John Holland, como un modelo para por John Holland, como un modelo para el estudio del fenómeno de adaptación el estudio del fenómeno de adaptación natural y para el desarrollo de natural y para el desarrollo de mecanismos que permitieran incorporar mecanismos que permitieran incorporar este fenómeno a los sistemas de este fenómeno a los sistemas de computación.computación.
Algoritmos Genéticos (II)Algoritmos Genéticos (II)
Codificación de un individuoCodificación de un individuo Generalmente mediante cadenas binarias o Generalmente mediante cadenas binarias o
alfanuméricasalfanuméricas
Algoritmos Genéticos Algoritmos Genéticos (III)(III)
Operaciones que se realizanOperaciones que se realizan Función de evaluación: Determina la calidad del Función de evaluación: Determina la calidad del
individuo (dependiente del problema a resolver)individuo (dependiente del problema a resolver) Selección: Determina qué individuos continuarán Selección: Determina qué individuos continuarán
existiendoexistiendo Cruce: Mecanismo para obtener nuevos individuos Cruce: Mecanismo para obtener nuevos individuos
a partir de otrosa partir de otros Mutación: Mecanismo para obtener un nuevo Mutación: Mecanismo para obtener un nuevo
individuo a partir de su propia informaciónindividuo a partir de su propia información En esta propuesta nos centraremos en las En esta propuesta nos centraremos en las
implementaciones paralelas de Algoritmos implementaciones paralelas de Algoritmos Genéticos Básicos Genéticos Básicos
Algoritmos Genéticos Algoritmos Genéticos (IV)(IV)
Funcionamiento de un AG básicoFuncionamiento de un AG básico1.1. Comenzamos con una población Comenzamos con una población PP de de nn cromosomas generados cromosomas generados
aleatoriamentealeatoriamente2.2. Calculamos el valor de la función de evaluación para cada Calculamos el valor de la función de evaluación para cada
cromosomacromosoma3.3. Repetimos los siguientes pasos hasta la condición de terminación:Repetimos los siguientes pasos hasta la condición de terminación:
1.1. Seleccionamos un par de cromosomas, basándonos en una Seleccionamos un par de cromosomas, basándonos en una probabilidadprobabilidad
2.2. Los cruzamos de acuerdo también a una probabilidadLos cruzamos de acuerdo también a una probabilidad3.3. Los mutamos para construir una nueva poblaciónLos mutamos para construir una nueva población
4.4. Reemplazamos la población actual Reemplazamos la población actual PP por la nueva población por la nueva población PP´́5.5. Evaluamos la condición de terminación del algoritmoEvaluamos la condición de terminación del algoritmo6.6. Volvemos al paso 2Volvemos al paso 2
Algoritmos Genéticos (V)Algoritmos Genéticos (V) Funcionamiento de un AG básicoFuncionamiento de un AG básico
1.1. Comenzamos con una población Comenzamos con una población PP de de nn cromosomas generados cromosomas generados aleatoriamentealeatoriamente
2.2. Calculamos el valor de la función de evaluación para cada Calculamos el valor de la función de evaluación para cada cromosomacromosoma
3.3. Repetimos los siguientes pasos hasta la condición de terminación:Repetimos los siguientes pasos hasta la condición de terminación:1.1. Seleccionamos un par de cromosomas, basándonos en una Seleccionamos un par de cromosomas, basándonos en una
probabilidadprobabilidad2.2. Los cruzamos de acuerdo también a una probabilidadLos cruzamos de acuerdo también a una probabilidad3.3. Los mutamos para construir una nueva poblaciónLos mutamos para construir una nueva población
4.4. Reemplazamos la población actual Reemplazamos la población actual PP por la nueva población por la nueva población PP´́5.5. Evaluamos la condición de terminación del algoritmoEvaluamos la condición de terminación del algoritmo6.6. Volvemos al paso 2Volvemos al paso 2
Algoritmos Genéticos Algoritmos Genéticos (VI)(VI)
La implementación paralela elegida La implementación paralela elegida del AG básico sigue la estructura del AG básico sigue la estructura master-slavemaster-slave
Algoritmos Genéticos (y Algoritmos Genéticos (y VII)VII)
Tenemos constancia de dos aportaciones previas Tenemos constancia de dos aportaciones previas para adaptar AGs a MapReduce:para adaptar AGs a MapReduce:
MRPGA: An extension of MapReduce for Parallelizing MRPGA: An extension of MapReduce for Parallelizing Genetic Algorithms Genetic Algorithms [JVB.08][JVB.08]
Propone una extensión a MapReduce por medio de una fase Propone una extensión a MapReduce por medio de una fase reducereduce jerárquica jerárquica
Utiliza AGPs maestro-esclavoUtiliza AGPs maestro-esclavo Introduce la figura del CoordinadorIntroduce la figura del Coordinador
Scaling Genetic Algorithms using MapReduceScaling Genetic Algorithms using MapReduce [VLG.09] [VLG.09] Proporciona una aproximación más cercana a la nuestraProporciona una aproximación más cercana a la nuestra Utiliza Hadoop, encapsulando cada iteración del AG como un Utiliza Hadoop, encapsulando cada iteración del AG como un
trabajo MapReduce aisladotrabajo MapReduce aislado
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
Diseño e implementación Diseño e implementación de la solución (I)de la solución (I)
Objetivo: Construir un sistema lo más Objetivo: Construir un sistema lo más genérico posible que facilitase la ejecución de genérico posible que facilitase la ejecución de problemas de Algoritmos Genéticos sobre un problemas de Algoritmos Genéticos sobre un entorno distribuidoentorno distribuido
Principales metas:Principales metas: Estudiar como transformar AGs en primitivas Estudiar como transformar AGs en primitivas mapmap
y y reducereduce Implementar, mediante Hadoop y Pig, una batería Implementar, mediante Hadoop y Pig, una batería
de problemas de AGs, demostrando su de problemas de AGs, demostrando su escalabilidad y convergencia bajo distintas escalabilidad y convergencia bajo distintas condicionescondiciones
Diseño e implementación Diseño e implementación de la solución (II)de la solución (II)
Cómo se adaptaron los pasos del AG básico a Cómo se adaptaron los pasos del AG básico a MapReduce:MapReduce:
1.1. Inicialización de la población Inicialización de la población Figuras Cliente, ‘Chromosome’ y CoordinadorFiguras Cliente, ‘Chromosome’ y Coordinador
2.2. Evaluación del valor de un individuoEvaluación del valor de un individuo Fase Fase mapmap Patrón de diseño Patrón de diseño Template Method Template Method para construir una jerarquía para construir una jerarquía
de clasesde clases3.3. Selección de los mejores individuosSelección de los mejores individuos
Fase Fase reducereduce Redefinición de la clase Redefinición de la clase PartitionerPartitioner de MapReduce de MapReduce
4.4. Recombinación mediante cruce:Recombinación mediante cruce: Fase Fase reducereduce Patrón Patrón Template MethodTemplate Method
5.5. Evaluación del valor de la poblaciónEvaluación del valor de la población Fase Fase reducereduce
6.6. Repetición de los pasos 2 a 5 del algoritmoRepetición de los pasos 2 a 5 del algoritmo Figura CoordinadorFigura Coordinador
Diseño e implementación Diseño e implementación de la solución (III)de la solución (III)
Arquitectura general de la aplicaciónArquitectura general de la aplicaciónMapReduce
Fase map
Fase reduce
Cliente
Nodo Pig
Diseño e implementación Diseño e implementación de la solución (III)de la solución (III)
Arquitectura general de la aplicaciónArquitectura general de la aplicaciónMapReduce
Fase map
Fase reduce
Cliente
Nodo Pig
Diseño e implementación Diseño e implementación de la solución (IV)de la solución (IV)
Implementación realizada en JavaImplementación realizada en Java Principalmente porque las APIs de Hadoop y Pig soportan extensivamente Principalmente porque las APIs de Hadoop y Pig soportan extensivamente
este lenguajeeste lenguaje División en dos paquetesDivisión en dos paquetes
src (Contiene todo el código fuente de la aplicación)src (Contiene todo el código fuente de la aplicación) common (Núcleo central del sistema)common (Núcleo central del sistema) problems (Clases problems (Clases mapmap y y reducereduce específicas de cada problema) específicas de cada problema)
config (ficheros de configuración XML específicos de cada problema)config (ficheros de configuración XML específicos de cada problema)
Diseño e implementación Diseño e implementación de la solución (y V)de la solución (y V)
Principales aportaciones del trabajoPrincipales aportaciones del trabajo No se rompe en ningún momento el ciclo No se rompe en ningún momento el ciclo map-map-
reducereduce (a diferencia de la propuesta (a diferencia de la propuesta MRPGAMRPGA)) Construcción de un framework software que Construcción de un framework software que
permite implementar de forma sencilla AGPs, permite implementar de forma sencilla AGPs, explorando toda la funcionalidad del modelo explorando toda la funcionalidad del modelo MapReduce.MapReduce.
Alto grado de flexibilidad y configuración gracias Alto grado de flexibilidad y configuración gracias a los más de 15 parámetros que soporta el a los más de 15 parámetros que soporta el sistemasistema
Uso de Pig como herramienta de análisis y Uso de Pig como herramienta de análisis y tratamiento de grandes cantidades de datostratamiento de grandes cantidades de datos
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
Resultados Resultados experimentales (I)experimentales (I)
Se ha implementado una batería de tres Se ha implementado una batería de tres problemas para demostrar la convergencia problemas para demostrar la convergencia y escalabilidad de la solución desarrolladay escalabilidad de la solución desarrollada TargetPhraseTargetPhrase
Parte de un conjunto de cadenas de texto Parte de un conjunto de cadenas de texto alfanuméricas aleatorias que evolucionan hasta alfanuméricas aleatorias que evolucionan hasta conseguir formar una “frase objetivo”conseguir formar una “frase objetivo”
OneMAXOneMAX Se busca el individuo binario que maximice el Se busca el individuo binario que maximice el
número de unos dentro de una poblaciónnúmero de unos dentro de una población P-PicosP-Picos
Dado un número de picos (cadenas de texto Dado un número de picos (cadenas de texto binarias), se intenta obtener aquel que esté más binarias), se intenta obtener aquel que esté más cerca de uno dado (sobre una probabilidad de 1)cerca de uno dado (sobre una probabilidad de 1)
Resultados Resultados experimentales (y II)experimentales (y II)
Estudio de convergencia sobre el entorno Estudio de convergencia sobre el entorno distribuidodistribuido Debido al grado de personalización del Debido al grado de personalización del
sistema y a la decisión de delegar la sistema y a la decisión de delegar la implementación de ciertos métodos (cruce, implementación de ciertos métodos (cruce, mutación, etc) al usuario, el grado de mutación, etc) al usuario, el grado de convergencia puede variar ampliamenteconvergencia puede variar ampliamente
Se han realizado varios escenarios con los tres Se han realizado varios escenarios con los tres problemas, modificando en cada uno de ellos problemas, modificando en cada uno de ellos ciertas condiciones iniciales de partida ciertas condiciones iniciales de partida (población, número de iteraciones, prob. de (población, número de iteraciones, prob. de cruce, etc.)cruce, etc.)
Estudio de escalabilidad Estudio de escalabilidad Se ha demostrado empíricamente que el Se ha demostrado empíricamente que el
sistema escala hasta los 10.000 individuossistema escala hasta los 10.000 individuos
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
Demostración de la Demostración de la aplicaciónaplicación
En el siguiente En el siguiente vídeo se mostrará la se mostrará la construcción y ejecución del sistema construcción y ejecución del sistema distribuido como fichero JAR contra distribuido como fichero JAR contra el clúster “nm” del Departamento de el clúster “nm” del Departamento de Electrónica y SistemasElectrónica y Sistemas
Índice generalÍndice general
IntroducciónIntroducción MapReduceMapReduce Algoritmos GenéticosAlgoritmos Genéticos Diseño e Implementación de la solución Diseño e Implementación de la solución Resultados experimentalesResultados experimentales Demostración de la aplicaciónDemostración de la aplicación Conclusiones y futuras líneas de Conclusiones y futuras líneas de
desarrollodesarrollo
Conclusiones y Futuras Conclusiones y Futuras Líneas de Desarrollo (I)Líneas de Desarrollo (I)
ConclusionesConclusiones Se ha conseguido en gran medida el factor de Se ha conseguido en gran medida el factor de
extensibilidad buscado, abstrayendo los distintos extensibilidad buscado, abstrayendo los distintos elementos que conforman el sistema y facilitando el elementos que conforman el sistema y facilitando el prototipado de AGs.prototipado de AGs.
Todas las operaciones complejas computacionalmente Todas las operaciones complejas computacionalmente se desarrollan de forma se desarrollan de forma transparentetransparente en un entorno en un entorno tolerante a fallostolerante a fallos
PortabilidadPortabilidad: Mediante la encapsulación en un fichero : Mediante la encapsulación en un fichero JAR se consigue que la aplicación pueda ser ejecutada JAR se consigue que la aplicación pueda ser ejecutada en cualquier entorno que disponga de Java, Hadoop y en cualquier entorno que disponga de Java, Hadoop y Pig.Pig.
FacilidadFacilidad de usode uso: El usuario solo debe escribir un : El usuario solo debe escribir un fichero XML de configuración, una clase fichero XML de configuración, una clase mapmap con dos con dos métodos, una clase métodos, una clase reducereduce con tres métodos y con tres métodos y especificar los parámetros de configuración que desee especificar los parámetros de configuración que desee por línea de comandos.por línea de comandos.
Conclusiones y Futuras Conclusiones y Futuras Líneas de Desarrollo (y II)Líneas de Desarrollo (y II)
Futuras líneas de desarrollo:Futuras líneas de desarrollo: Definición de una clase personalizada Definición de una clase personalizada
InputFormatInputFormat para saltarnos la limitación que para saltarnos la limitación que establece el framework de Hadoop a partir de establece el framework de Hadoop a partir de su versión 0.20.1 y especificar el número de su versión 0.20.1 y especificar el número de tareas tareas map map a gusto del usuarioa gusto del usuario
Generación de la población inicial como un Generación de la población inicial como un trabajo trabajo MapReduceMapReduce en vez de una tarea en vez de una tarea secuencialsecuencial
Aplicación del sistema a AGs en entornos Aplicación del sistema a AGs en entornos realesreales
Por ejemplo: Diseño de velas y timones para barcosPor ejemplo: Diseño de velas y timones para barcos
Preguntas y AclaracionesPreguntas y Aclaraciones