Escuela de Modelación y Métodos Numéricos...

79
Escuela de Modelación y Métodos Numéricos 2015 Networking and Emerging Optimization (NEO) Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga

Transcript of Escuela de Modelación y Métodos Numéricos...

Escuela de Modelación y Métodos Numéricos 2015

Networking and Emerging Optimization (NEO) Departamento de Lenguajes y Ciencias de la Computación

Universidad de Málaga

3.2.39, E.T.S.I. Informática Universidad de Málaga Málaga, España

[email protected]

(+34) 952 13 7154 http://neo.lcc.uma.es

Optimización: metaheurísticas Paralelismo, Opt. Dinámica, self-*, … Problemas reales:

lenguaje natural,

secuenciación de ADN,

telecomunicaciones,

smartcities

Introducción a los Algoritmos Evolutivos Modelos de paralelismo centralizados Modelos de paralelismo descentralizados Modelos paralelos para algoritmos basados

en trayectoria Métricas y comparación Aspectos de implementación Aspectos avanzados

… y ahora a trabajar!

Algoritmos Evolutivos

Networking and Emerging Optimization (NEO) Departamento de Lenguajes y Ciencias de la Computación

Universidad de Málaga

Objetivo de un problema de optimización:

Dado un problema P = (S,f)

donde

▪ S es el conjunto de todas las posibles soluciones

▪ f: S R+ es una función de coste.

Encontrar s’Є S | f(s’) ≥ f(s)

Minimizar también es posible.

Los problemas están en todas las actividades

Algoritmos de Optimización

Cálculo Trayectoria Enumerativas

SA

Exactas Metaheuristicas

Población

VNS

EA

ACO

DP

B&B

TS

Heurísticas ad-hoc

PSO

Inspiradas en la naturaleza

Basados en la evolución natural de Darwin.

Tres pasos principales: Selección. Reproducción (cruce y mutación). Remplazo.

Múltiples familias de acuerdo a cómo realizan

esos pasos: Algoritmos Genéticos (GA), Programación Genética (PG), Estrategias Evolutivas (ES), …

t := 0 Generar(P(t)) Evaluar(P(t)) while not end condition do P’(t) := Seleccionar(P(t)) P’(t) := Cruzar(P’(t)) P’(t) := Mutar(P’(t)) Evaluar(P’(t)) P(t+1) := Remplazar(P(t), P’(t)) t := t+1 end while

Cromosoma Cadena codificada de los parámetros (binario, Gray, reales, etc...)

Individuo Uno o más cromosomas con su valor de fitness asociado

Gen La versión codifcada de cada parámetro del problema a ser resuelto

Alelo Valor que cada gen puede asumir (binario, entero, real, o incluso estructuras complejas)

Locus La posición que el alelo puede ocupar en el gen

Fitness Valor real que indica la adecuación de la solución al problema

Entorno El problema a resolver y todas sus restricciones

Población Conjunto de soluciones

Descendencia Conjunto de soluciones generadas a partir de las operaciones de cruce y mutación

Selección Política para elegir un conjunto de soluciones de una población

Cruce Operador que combina las características de 2 o más padres para generar descendientes

Mutación Operación que modifica uno o varios alelos en un cromosoma

CROMOSOMA Cromosoma

1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0 Alelo

Gen 8 Gen 7 Gen 6 Gen 5 Gen 4 Gen 3 Gen 2 Gen 1 Gen 0 Genes

2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 2 1 0 Loci

FITNESS

Individuo

Definición de la codificación de la solución: ¿Cuál es la representación más adecuada? Entero, real, binario (gray), permutaciones, árbol, … Tamaño fijo/variable Diploide (n-ploide) …

Diseño de la función de fitness adecuada: Conocimiento del problema Ajustes: escalado, penalizaciones, clasificaciones

(rankings)

Problema

Definición de la operadores de variación y sus parámetros: Selección, cruce, mutación, remplazo Dependientes de la representación ¿Generales o específicos para el problema? Equilibrio intensificación/diversificación …

Definición de la condición de parada: Alcanzar el óptimo Máximo tiempo o pasos del algoritmos Máximo error permitido Propiedades de la población (convergencia)

Algoritmo

P0 P1 P2 Pn 1 0 0 1 1 1 .................... 0 0

Processor 2 Processor 1

Process 1

Processor 0

a

n

Input layer

o p

b m ... c

q r z ... s

Hidden layer

Output layer

(a-n)...(m-n)(a-o)...(m-o)(a-p)..(m-p)(n-q)(o-q)(p-q)...(n-z)(o-z)(p-z)

INPUT ENCODING

(a-n)...(m-n)(n-q)...(n-z)(a-o)..(m-o)(o-q)...(o-z)(a-p)...(m-p)(p-q)...(p-z)

INPUT-OUTPUT ENCODING

RLIST

AND

IF pos IS NL AND vel IS NL THEN for IS PL

NL NL

PL

VEL POS

FOR

IF

IS IS

EL

IS

Type I

Type II

Type III

Type IV

j i

[10, 35, 204, 78, 27, 106]

MEF1 MEF2

w u

Interpretation index

Present

State

Present

State Fires

2

active

transitions

String

El problema de la mochila: Seleccionar un subconjunto de objetos de un conjunto mayor

Cada objeto tiene asociado un beneficio pero también un peso.

Hay que maximizar el beneficio de los objetos seleccionados pero sin que su peso acumulado superen cierto umbral.

Solución: objetos seleccionados. ¿Representación?

7 3 1

0 1 0 1 0 0 0 1 0

El problema de la ruta para robot: Decidir las órdenes para que un robot vaya de un origen a un destino

(recorriendo la mínima distancia) en una habitación con obstáculos (offline y estático).

El robot sabe girar y avanzar.

Solución: conjunto de órdenes ¿Representación?

Girar(Izq, 90) Avanzar(10 s) Girar (Izq, 30) …

(0,0) (10, 0) (15,5) …

0 7 5 …

Representa la principal fuente de información del problema en el algoritmo

Debe ajustarse con la mayor fidelidad a los requisitos del problema

Características: Restricciones Multimodalidad (gran número de óptimos locales) Epistática (gran correlación entre componentes) Multiobjetivo, dinámica, …

Ajustes: Escalado Penalización Orden

Ejemplo: ensamblado de fragmentos de ADN: Dados un conjunto de fragmentos de ADN obtenidos

del laboratorio, generar la cadena de ADN original

Entrada de los ensambladores: CGGGATTTCAAGAAATG… GGATAGGTTAAAAATGC… CCAAAATGGAGGTCTTA… … CATGGTACTTTTAGAGA…

Proceso habitual de ensamblado de fragmentos de ADN:

CGGGATTTCAAGAAATG… GGATAGGTTAAAAATGC… CCAAAATGGAGGTCTTA… … CATGGTACTTTTAGAGA…

CGGGATTTCAAGAAATG… GGATAGGTTAAAAATGC… CCAAAATGGAGGTCTTA… CATGGTACTTTTAGAGA… … CATGGTACTTTTAGAGA… GGATAGGTTAAAAATGC…

20

130

0

CGGGA… GGATACCAAA… CCAAAATG… CAAAATGCTTTTA… CTTTTATGGA… GGATAGG…

Salida de ensamblador: CGGGATACCAAATGCTTTTATGGATAGGTTAAAA …

1

0

1),()(N

iii xxoverlapxf

¡¡¡ Maximizar solapamiento no lleva a la cadena destino en todos los casos!!!

¿Alternativas?

15 73 59 …

¿Cuántas soluciones seleccionar?

Operadores basados en el fitness: Ruleta Torneo Ranking

Operadores basados en aspectos diferentes al fitness: Aleatoriamente Edad Diversidad

Remplazo: (µ + ʎ) vs (µ,ʎ) Elitismo

=1 = 1<<

estado estacionario generacional

5%

31%

14%

50%

1001101101

11000

01000

Combina características de 2 o más soluciones Depende de la representación y en el problema. ¿Parámetros?

1 2 3 4 5 6 7

9 3 7 8 2 6 5

8 9

1 4

3 8 2 4 5 6 7 1 9

Pequeñas modificaciones de una solución Objetivo: explotar el vecindario de la solución Puede ser dinámica (variar su intensidad) ¿Parámetros?

5 2 6 1 3 7 4 5 7 3 1 6 2 4

Ventajas: “Facilidad” de uso Alto nivel de aplicabilidad Requiere poco conocimiento del problema … … pero se puede incorporar información del problema

fácilmente Trabaja con múltiples soluciones simultáneamente

(paralelismo, multiobjetivo, dinamismo, …)

Inconvenientes: No asegura la obtención del óptimo Muchos parámetros “Dificultad” para explotar vecindario soluciones “Lenta” convergencia

Networking and Emerging Optimization (NEO) Departamento de Lenguajes y Ciencias de la Computación

Universidad de Málaga

Algoritmos Evolutivos

En aplicaciones complejas los algoritmos evolutivos secuenciales requieren altas capacidades computacionales.

Mejora de la eficiencia: Nuevos operadores “inteligentes” Representaciones mejoradas Ajustes en la función de fitness Mezcla de algoritmos (hibridación) Paralelismo

El paralelismo permite más explorar más soluciones por

unidad de tiempo y en algunos casos generan dinámicas diferentes muy adecuadas para algunos problemas

Trabajar con algoritmos paralelos no es demasiado trivial: Requiere conocimientos en … … teoría de concurrencia y paralelismo … herramientas de paralelismo y programación distribuida … hardware/plataformas paralelas … protocolos de comunicación y redes La programación paralela/distribuida es más propensa a

errores y más difícil que la secuencial Los algoritmos paralelos son más complejos de analizar No siempre el paralelismo es la mejor solución …

Pero es útil!!! Y hay herramientas que facilitan su uso.

Hay que diferenciar entre modelos e implementaciones

Se debe tener cuidado en su evaluación (métricas)

Se puede conseguir una ganancia superlineal En la actualidad, la heterogeneidad es algo

común El diseño experimental es muy importante Los algoritmos paralelos son software

Centralizado: las operaciones pueden realizarse entre cualquier par de soluciones de la población completa.

Descentralizado: existen restricciones entre que pares de soluciones pueden realizarse ciertas operaciones.

Los modelos descentralizados implican una estructuración de la población.

Modelo descentralizado Modelo centralizado

El modelo y la implementación son aspectos diferentes

Modelo descentralizado Modelo centralizado

1 CPU Cluster

IMPLEMENTACIÓN

Objetivo: mantener el esquema de funcionamiento del algoritmo evolutivo secuencial

Las operaciones que requieran información global son centralizadas:

t := 0 Generar(P(t)) Evaluar(P(t)) while not end condition do P’(t) := Seleccionar(P(t)) P’(t) := Cruzar(P’(t)) P’(t) := Mutar(P’(t)) Evaluar(P’(t)) P(t+1) := Remplazar(P(t), P’(t)) t := t+1 end while

Centralizadas

Maestro/esclavo: Ciertas operaciones costosas se delegan en otros procesadores

Ejecuciones independientes: Se ejecutan múltiples

EAs y se devuelve el mejor de todas

CPU

CPU CPU CPU …….

eval eval

eval

eval eval

…….

CPU CPU CPU

Mejor solución global

Ventajas:

Modelos sencillos

Igual que el comportamiento del secuencial a nivel numérico

Facilidad para su implementación

Facilidad para ser aplicables en cualquier plataforma paralela

Mejoras de tiempo

Muy escalables

Facilidad para tolerar a fallos (?)

Inconvenientes:

Fuerte sincronismo y heterogeneidad: ▪ El maestro/esclavo (MS) en cada iteración esperará al más lento

▪ El modelo de ejecuciones independientes (IR) puede ser más lento que el secuencial para obtener una primera solución!!!

Tolerancia ante fallos del maestro/principal

[MS] Muchas comunicaciones (sobrecarga)

[MS] No operación costosa

Alternativas:

Equilibrado de carga (mayor complejidad): ▪ [MS] Cuando un proceso esclavo acaba su actividad, el maestro le

envía otra que no haya acabado

▪ [IR] Cuando un procesador acaba, se puede mover un algoritmo de otro procesador lento

[MS] Envío de varios cálculos a la vez (problemas de heterogeneidad)

[MS] Evitar sincronismo: uso de (µ+1) asíncrono (¡¡¡diferente dinámica al secuencial!!!)

[IR] Entorno diferentes (¡¡¡diferente dinámica al secuencial!!!)

Objetivo: Descentralizar las operaciones de selección/remplazo

Motivación: La Naturaleza usa poblaciones separadas para la

evolucionar

Se maneja más fácilmente la convergencia prematura (forma implícita de mantener la diversidad)

Forma natural de introducir nichos para encontrar diferentes soluciones

Forma sencilla de evitar el cruce de soluciones muy diferentes

Se puede aplicar con facilidad en paralelo (?)

¡Dinámica diferente al secuencial!

Divide la población en subpoblaciones para limitar la selección/remplazo.

Cada subpoblación ejecuta un algoritmo completo incluyendo una nueva fase de comunicación con el resto

Grano fino (celular): Muchas subpoblaciones muy pequeñas (incluso 1) pero con alto acoplamiento

Grano grueso (distribuido / islas): Pocas subpoblaciones de tamaño grande y poco acoplamiento

# sub-poblaciones

acoplamiento

tamaño subpoblación

cGA

dGA

pequeña grande ligero

intenso

pocas

muchas

En el modelo celular, la población está estructurado en una rejilla, y cada solución sólo puede interactuar con sus vecinos

Vecindario de la solución verde

Vencindario de la solución roja

Solapamiento

Difusión suave de soluciones Vencindario solapados Búsqueda mejorada

Selección

Mutación

Remplazo

Cruce

Población habitualmente estructurada en una rejilla 2D El ciclo reproductivo sólo afecta a un pequeño vecindario Vecindarios solapados Aislamiento por distancia Explotación intravecindario y exploración entrevecindario

?

C9

C25 C13

L5 L9

Influencia de la forma de rejilla en la diversidad

Generación=0

Generación=50

Generación=100

Generación=150

16 16 32 8 64 4 256 1

Caracterización mediante el radio El radio puede definirse para la rejilla o el vecindario La relación (ratio) entre vecindario/rejilla nos da una idea de

la velocidad de convergencia (presión selectiva).

8944.023

225

Lrad

L5

rad2

rad1

rad2 > rad1

***

*

1

*

1

22

ny

yn

xx

nyyxx

radn

i i

n

i iii

rejilla

vecindariocGA rad

radratio

# Topolología Radio Ratio (usando NEWS)

a 1024 1024 4.180460501E+2 0.002139477217369000

b 2048 512 6.094017558E+2 0.001467668892463000

c 4096 256 1.184720431E+3 0.000754946041780600

d 8192 128 2.365115325E+3 0.000378163377720300

e 16384 64 4.729689472E+3 0.000189103323864000

f 32768 32 9.459311312E+3 0.000094552337955660

g 65536 16 1.891861418E+4 0.000047276190078740

h 131072 8 7.567445452E+4 0.000011819047863290

i 262144 4 1.513489090E+5 0.000005909523933205

j 524288 2 3.026978179E+5 0.000002954761967579

k 1048576 1 6.053956359E+5 0.000001477380983545

1,00E-06

1,00E-05

1,00E-04

1,00E-03

1,00E-02

1,00E-01

1,00E+00

1,00E+01

1,00E+02

1,00E+03

1,00E+04

1,00E+05

1,00E+06

Radio Ratio

El ratio entre los radios de rejilla y del vecindario nos aporta una idea del ratio intensificación/diversificación

rad2

rad2>rad1 & ratio2<ratio1

RATIO explotación

RATIO exploración

¡EQUILIBRIO AJUSTABLE!

Forma radrejilla radNEWS ratio 2020 8.15 0.8944 0.10968 0.110 1040 11.9 0.8944 0.07519 0.075 4100 28.9 0.8944 0.03096 0.031

rad1

t

t

t

t

t

Ratio estático 0.110 (2020)

Ratio estático 0.075 (1040)

Ratio estático 0.031 (4100)

Ratio dinámico: 0.110 a 0.031

(2020 a 4100)

Ratio dinámico: 0.031 a 0.110

(4100 a 2020)

tm

tm

Ratio alto (rejilla cuadrada)

Ratio mediano (rejilla rectangular)

Ratio bajo (rejilla fina)

De alto a bajo

De bajo a alto

Auto-adaptación: Adaptar la rejilla dependiendo del estado la población actual

¿Cómo calcular C1 y C2? Variación en el fitness

Variación en la entropía

Mezcla de ambas

if C1 then Cambiar(más cuadrada) else if C2 then Cambiar(más estrecha) end if

Reemplazo:

Siempre

Si es mejor

Probabilístico

Actualización:

Síncrona: Se crea una población temporal que sustituye al final a la actual

Asíncrona: En cada paso se actualiza la población actual

▪ Barrido fijo

▪ Aleatorio fijo

▪ Aleatorio variable

Ventajas:

Nuevo modelo algorítmico

Facilidad para ajustar intensificación/diversificación

Posibilidad de crear algoritmo auto-adaptativos

Cierto conocimiento empírico sobre su funcionamiento

Inconvenientes:

¡¡¡Dificultad para paralelizar!!! (plataformas específicas)

Más parámetros

Implementación y análisis más complejo

División de la rejilla global en subrejillas:

Inconvenientes:

Sincronización

Alta número de comunicaciones

Asíncrono Comunicación cada N iteraciones

Inconvenientes:

Comportamiento diferente al cEA estándar

Dificultad para el ajuste de la rejilla dinámicamente

Nodo de un PEA distribuido (isla)

Generar subpoblación inicial

Evaluar subpoblación inicial

While not termination do:

Seleccionar padres

Aplicar operadores de variación

Crear nueva subpoblación (remplazo)

Comunicación con los vecinos

Comunicación con los vecinos

if fase de envío then:

Seleccionar solución/es a enviar

Seleccionar destinatarios

Enviar

if fase de recepción then:

Esperar soluciones

Recibir

Incorporar las soluciones a la subpoblación

Modelo evolutivo de la isla: Centralizado

Estructurado Generación subpoblación inicial Topología Política de migración Selección de emigrantes

Ratio de emigrantes

Frecuencia de migración

Política de aceptación de inmigrantes Sincronismo Heterogeneidad a nivel algorítmico

Ventajas:

Nuevo modelo que facilita el mantenimiento de la diversidad de forma implícita

Facilita la exploración de diferentes regiones simultáneamente

Manejo de la heterogeneidad

Facilidad de paralelización en sistemas distribuidos y altamente configurable al entorno

Ganancia en tiempo

Inconvenientes:

Programación más compleja

Muchos parámetros y es bastante sensible a ellos

Diversidad con sistemas muy heterogéneos

Tolerancia a fallos

Uso de subpoblaciones pequeñas (?): ▪ Diversidad intra-subpoblacional

▪ Escalabilidad

CPU

CPU CPU CPU …….

eval eval

eval

eval eval

Trabaja sobre una única solución y se basa en la exploración su vecindario

Incorpora mecanismos explícitos para facilitar la exploración Ejemplo: Recocido simulado

t := 0

Inicializar(T)

s0 := SoluciónInicial()

repeat

repeat

t := t+1

s1 := GenerarVecino(s0)

if CriterioAceptación(s0,s1,T)

s0 := s1

until t mod MarkovChainLen = 0

T := Actualizar(T)

until stop condition

f(s1) < f(s0) Aceptar

sino TΔfe=p /

Evaluación en paralelo: La solución se evalúa en paralelo Movimientos paralelos: Se explora el vecindario en paralelo Ejecuciones múltiples: Se ejecutan múltiples instancias en

paralelo (con o sin cooperación)

Solución

Evaluación parcial

Modelo ejecuciones múltiples cooperativo: Pérdida de información: descarta nueva solución o pierde la actual

¿Cómo unir información de ambas soluciones? Operadores cruce o recombinación:

Otras operaciones más avanzadas. Ej: Path Relinking

Esquema de cooperación: ¿De donde viene la nueva solución? Topología:

¿Qué hacer si se reciben varias? ▪ Elegir de acuerdo al fitness

▪ Elegir de acuerdo a diversidad

▪ Aleatorio

Esquema de selección: Si el mecanismo genera varias, ¿cuál elegir? Elegir de acuerdo al fitness

Elegir de acuerdo a diversidad

Aleatorio

Networking and Emerging Optimization (NEO) Departamento de Lenguajes y Ciencias de la Computación

Universidad de Málaga

Algoritmos Evolutivos

Calidad de las soluciones obtenidas (media, mejor, % exito, desviación estándar, …)

Esfuerzo computacional (número de evaluaciones) Tiempo de ejecución Tiempos de CPU + Tiempo de comunicaciones

Métrica sobre la evolución

Speedup (o eficiencia) Fracción Serie ...

Propuesta para algoritmo exactos. Ratio entre el tiempo del mejor algoritmo

secuencial conocido y el tiempo del algoritmo paralelo en m procesadores. Sub-lineal: sm < m Lineal: sm = m Superlineal: sm > m

mm T

Ts 1 %100ms

e mm

Eficiencia

Los algoritmos evolutivos son estocásticos. Múltiples ejecuciones.

Los algoritmos pueden parar en soluciones con diferente calidad.

El modelo paralelo puede tener dinámica diferente al secuencial.

Nueva taxonomía: Speedup fuerte

Speedup débil ▪ Con esfuerzo predefinido

▪ Misma calidad de soluciones ▪ Vs secuencial (centralizado)

▪ Ortodoxo

mm T

Ts 1

Ejemplo simple: PGA en islas

Weak1: comparado contra un GA secuencial

Weak2: comparado contra el mismo PGA pero ejecutado en una máquina

Más recursos disponibles

S

0102030405060708090

100110120

2 3 4 5 6 7 8#proc.

sp

ee

du

p weak1

weak2

Eficiencia incremental:

Eficiencia incremental generalizada:

Escalado:

Fracción serie:

][

][)1( 1

m

mm TEm

TEmie

mmsf m

m11

11

][

][,

m

nmn TEm

TEngie

][

][

,

,

,

nknm

kmnm TE

TEsu

0,01

0,015

0,02

0,025

0,03

0,035

0,04

0,045

0,05

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

dGA2 dGA4 dGA8

Eficiencia

Fracción serie

Circuitos programables (FPGA)

Multiprocesador:

Multicore

GPUs

Distribuidos:

Clusters

Grid/Cloud Computing

P2P, Computación voluntaria, …

Bajo nivel: Sockets, …

Librerías de comunicaciones: OpenMPI, …

Middleware: CORBA, MANIFOLD, MR, …

Sistemas de metacomputación: Condor, BOINC, …

Relacionados con Internet: SOAP, REST, …

Específicos: CUDA, OpenCL, Handel C, …

Memoria compartida: OpenMP, HPF, …

Otros: Dropbox, BD distribuidas, …

Los algoritmos son software:

Diseño, documentación, verificación, …

Detalles de implementación:

▪ Var estáticas/dinámicas,

locales/globales, …

▪ Métodos de ordenación

▪ Gen. números aleatorios

▪ …

Frameworks paralelos

Otros: pALS, DGPF, PMF, JDeal, dBEAGLE, DREAM, JG2A, …

Framework Lenguaje Algoritmos Tipo de paralelismo

ParadisEO C++ Pob, Tray, Híb, MO Islas, MS / dis y mem com

MALLBA C++ Pob, Tray, Híb Islas / dis

ECJ Java Pob, MO Islas, MS / dis

Opt4J Java Pob, Tray, MO MS / mem com

EASEA Propio EA MS / gpu

HeuristicLab C# Pob, Tray Islas / dis

jMetal Java MO MS / mem com

Configuración de algoritmos:

ParamILS, GGA, SMAC, i-race

Ajuste semáforos:

Generación de Música:

Uso de programación genética

Basado en parámetros formales de las partituras

https://www.youtube.com/watch?v=JOkslCT8DZU

B1'''

B2'''B3'''

E1'''

E2'''E3'''

B1''

B2''B3''

G1''

G2''G3''

A1''

A2''A3''

G1'

G2'G3'D1'

D2'D3'

F1'

F2'F3'

B1

B2B3

G1

G2G3

E1

E2E3C1

C2C3

D1

D2D3

A1

A2A3

F1

F2F3

Serving Sector

First Order Neighbors

Second Order Neighbors(coming from C2!)

Modelos específicos para las nuevas plataformas

Teoría

Parámetros:

Clases de equivalencias

Autoadaptativos

Nuevos dominios: dinámicos

Luna, F., & Alba, E. (2015). Parallel Multiobjective Evolutionary Algorithms. In Springer Handbook of Computational Intelligence (pp. 1017-1031). Springer Berlin Heidelberg.

Alba, E., Luque, G., & Nesmachnow, S. (2013). Parallel metaheuristics: recent advances and new trends. International Transactions in Operational Research, 20(1), 1-48.

Luque, G., & Alba, E. (2011). Parallel genetic algorithms: theory and real world applications Studies in Computer Intelligence (Vol. 367). Springer.

Crainic, T. G., & Toulouse, M. (2010). Parallel meta-heuristics. In Handbook of metaheuristics (pp. 497-541). Springer US.

Alba, E., & Dorronsoro, B. (2009). Cellular genetic algorithms (Vol. 42). Springer Science & Business Media.

Talbi, E. G. (Ed.). (2006). Parallel combinatorial optimization (Vol. 58). John Wiley & Sons.

Alba, E. (2005). Parallel metaheuristics: a new class of algorithms (Vol. 47). John Wiley & Sons.

Gabriel Luque – [email protected]