Escuela de Modelación y Métodos Numéricos...
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
(+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
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.
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
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
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
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!)
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]