Dans l’approche que nous proposons deux mécanismes sont introduits en vue de profiter
de l’ensemble des coeurs de calcul disponibles sur un ordinateur standard. Ils ont pour but
d’accélérer la recherche d’une part, mais aussi de réintroduire de la diversité lorsque les deux
individus de la population sont identiques afin d’augmenter les chances d’aboutir à une solution
légale.
1) A chaque fois qu’une population HEAD trouve une nouvelle solution élite (dont la fitness
améliore la précédente meilleure rencontrée au cours de la recherche), cette population est
dupliquée sur toutes les paires de coeurs disponibles et remplace les autres populations. De
cette manière à partir d’un même bon point de départ plusieurs populations explore l’espace
de recherche simultanément de façon indépendante.
2) Dès lors que les deux individus d’une population sont identiques, un échange des individus
entre les populations est effectué. On notera que le fait que les populations soient relativement
proches, en ayant comme point de départ commun la dernière amélioration, permet d’apporter
de la diversité mais pas trop, qui aurait pour effet de totalement déstructurer les individus
courants.
L’algorithme s’arrête lorsque le premier des critères suivants est atteint : les individus de
toutes les populations sont identiques ; ou les populations ont convergé nfois vers le même
individus (n= 10 dans notre étude).
3 Expérimentation et résultats
L’ensemble des calculs ont été réalisés avec un processeur Intel(R) Core(TM) i5-3550 CPU
@ 3.30GHz, comprenant quatre coeurs et 16Go de RAM. On notera cependant que la taille
de la mémoire n’est pas un élément critique, la mémoire occupée n’atteignant pas 0.1% de la
mémoire totale pour des graphes de 500 noeuds et de densité 0.5.
HEAD Parallèle
IterT C
Instance k HEAD/Parallèle Success minutes iter(106)Success minutes iter(106)
dsjc500.5 47 8000/8000 2/10000 0.8 24 5/10000 0.9 77
48 8000/6000 20/20 0.2 7.6 20/20 0.1 9.9
dsjc1000.5 82 60000/60000 3/20 48 1000 20/20 84 3987
flat1000_76_0 81 60000/60000 3/20 60 1000 20/20 75 2517
Le tableau ci-dessus illustre les résultats obtenus sur 3 graphes connus pour être particulièrement
difficile. Les colonnes Iter donnent le nombre d’itérations moyen nécessaires pour colorier les
graphes. Notons que lorsque HEAD trouve toujours la solution, la version parallèle trouve
également la solution mais près de deux fois plus vite (dsjc500.5 avec 48 couleurs). Et lorsque
HEAD peine à trouver une solution, l’algorithme proposé trouve l’optimum beaucoup plus
souvent (dans tous les cas pour dsjc1000.5 et flat1000_76_0).
Références
[1] Philippe Galinier and Jin-Kao Hao. Hybrid evolutionary algorithms for graph coloring.
Journal of Combinatorial Optimization, 3(4) :379–397, 1999.
[2] Alain Hertz and Dominique de Werra. Using tabu search techniques for graph coloring.
Computing, 39(4) :345–351, 1987.
[3] Laurent Moalic and Alexandre Gondran. The new memetic algorithm head for graph
coloring : An easy way for managing diversity. In Gabriela Ochoa and Francisco Chicano,
editors, Evolutionary Computation in Combinatorial Optimization, volume 9026 of Lecture
Notes in Computer Science, pages 173–183. Springer International Publishing, 2015.