• Aucun résultat trouvé

Exploitation parallèle des clusters dans DGVNS

3.2 Exploitation de la structure d’un réseau

3.2.5 Exploitation parallèle des clusters dans DGVNS

(Travail en collaboration avec Abdelkader Ouali, Lakhdar Loukil, Patrice Boizumault, et Ya-hia Lebbah ; publications associées : HM’14 [Ouali et al., 2014] et ENDM’15 [Ouali et al., 2015]).

Contexte. Exploiter le parallélisme et les architectures multi-cœurs est un moyen naturel pour accélérer les calculs et résoudre des problèmes combinatoires complexes de grande dimension. Récemment, il y a eu un grand succès en calcul parallèle dans le domaine de l’optimisation com-binatoire. Plusieurs versions parallèles de nombreuses métaheuristiques connues ont été proposées avec différents degrés de parallélisation. Dans ce contexte et à la lumière de la prochaine généra-tion d’architectures d’ordinateurs, qui sous peu contiendront des dizaines de cores, la concepgénéra-tion d’approches multicore est une perspective de recherche très prometteuse. Une approche naturelle consiste à diviser l’espace de recherche en sous-espaces, puis à explorer les différents sous-espaces en parallèle. Cependant, dans ce type d’approches, définir des mécanismes efficace pour le partage et la communication d’informations entre différents processus n’est pas une tâche aisée. Un autre moyen qui a fait ses preuves en particulier dans la résolutions des problèmes SAT, est l’utilisation de portfolio de solveurs en parallèle afin d’obtenir un meilleur solveur globale, évitant ainsi tout type de communication.

Contributions. Exploiter la décomposition arborescente pour paralléliser l’exploration des clus-ters dans DGVNS est donc une idée naturelle. Dans ce cadre, nous avons proposé trois stratégies de parallélisation pour DGVNS. Elles diffèrent essentiellement par la façon dont la communication s’effectue entre le maître et les esclaves (synchrone ou asynchrone) et par la fréquence des so-lutions échangées (communiquer les meilleures soso-lutions intermédiaires au cours de la recherche ou seulement à la fin pour identifier la meilleure solution globale). Ces contributions se résument aux points suivants :

1. Proposition d’une première stratégie de parallélisation de DGVNS nommée Cooperative pa-rallel DGVNS (CPDGVNS) [Ouali et al., 2014] basée sur une architecture maître-esclaves, 2. Proposition de deux autres stratégies de parallélisation, nommées Replicated Asynchronous

DGVNS (RADGVNS) et Replicated Synchronous DGVNS (RSDGVNS) [Ouali et al., 2015], destinées à améliorer la diversification de CPDGVNS.

Cooperative parallel decomposition guided VNS. L’idée de CPDGVNS consiste simplement à explorer tous les clusters fournis par une décomposition arborescente en parallèle. L’architecture retenue est de type maître-esclaves, où le processus maître mémorise, met à jour et communique la meilleure solution courante, les processus esclaves gèrent l’exploration des clusters individuels. Les processus individuels coopèrent de façon asynchrone en échangeant des informations sur la meilleure solution courante. Ceci garantit l’indépendance des processus esclaves individuels et permet de démarrer à partir de plusieurs solutions initiales différentes, favorisant ainsi une meilleure diversification. Pour profiter pleinement de la parallélisation, nous avons fixé le nombre de processus esclavesnpr22au nombre de clusters issus de la décomposition. Le processus maître procède en trois étapes :

i) Étape d’initialisation. Le maître initie la recherche en lançant l’exécution en parallèle de npr processus esclaves et en envoyant à chaque processus esclave p la même solution initiale, le cluster associéCcde CT et les valeurs des paramètreskinit,kmax etδmax. La liste CT des clusters est gérée en FIFO pour assurer que tout cluster soit traité par un seul processus esclave. Afin de restreindre le choix des variables à désaffecter uniquement aux variables du cluster,kmax est initialisée à la taille du cluster affecté au processus esclave.

22. Si le nombre de cœurs est inférieur au nombre de clusters, un même cœur sera utilisé pour traiter différents clusters.

ii) Étape de mise à jour. Durant cette phase, le maître attend la meilleure solution trouvée par chaque processus esclave. SoitSp0 la meilleure solution communiquée par le processus esclave p au maître et S la meilleure solution globale. Si Sp0 est de meilleure qualité que S, Sp0 devient la meilleure solution globale, le prochain cluster Cc est considéré et kmax est réinitialisé à |Cc|. Sinon, on cherche de nouvelles améliorations dans le prochain clusterCc et on incrémente de un le nombre de clusters adjacentsadj qui doivent être considérés ainsi que la valeur de kmax par le cardinal de l’union des clusters Cj adjacents à Cc (avec j = 1..adj). L’augmentation de kmax

permettra d’élargir l’ensemble de variables candidates à désaffecter par les processus esclaves.

iii) Étape d’intensification. Le but de cette étape est de relancer un processus esclave p à partir de la meilleure solution globale disponible. Cette étape est exécutée si leT imeOut global n’est pas atteint. Sinon, il est arrêté. La résolution se termine lorsque tous les processus esclaves terminent.

Le processus esclave suit le schéma de DGVNS. Mais contrairement à ce dernier, le changement de cluster est géré par le maître. Par ailleurs, la stratégie de changement de voisinage est similaire à celle de la méthode VNS/LDS+CP (cf. Algorithme 4). Il nécessite une décomposition arborescente (CT,T ) de G. Il reçoit du maître, l’indice c du cluster qui lui est assigné, les valeurs des paramètres kinit,kmax, δmax, et la solution initialeS. L’algorithme s’arrête dès qu’il a atteint la dimension maximale du voisinagekmax ou unT imeOut local23.

Stratégies de réplication parallèles pour DGVNS. Dans CPDGVNS, chaque processus esclave effectue une recherche DGVNS dans le cluster qui lui est assigné. La principale limite de cette approche est que les esclaves doivent effectuer un certain nombre d’itérations avant de par-tager leurs meilleures solutions avec le maître. Cela rend la coopération avec le maître moins fréquente, et limite la diversification de l’exploration de l’espace de recherche par les esclaves. Pour pallier à cet inconvénient, nous avons proposé deux nouvelles stratégies de parallélisation, RADGVNS et RSDGVNS, permettant de produire rapidement des solutions intermédiaires pour ali-menter l’échange d’informations entre les esclaves.

i) Replicated Asynchronous DGVNS. Les processus individuels dans RADGVNS coopèrent de manière asynchrone en échangeant des informations sur la meilleure solution courante. Toutefois, et contrairement à CPDGVNS, chaque processus esclave exécute une seule itération d’une recherche locale, en complétant une solution partielle dans le cluster qui lui est associé. Comme pour CPDGVNS, le maître attend les nouvelles solutions trouvées par chaque processus esclave p. Si une nouvelle solutionSp0 est reçue, elle est comparée à la meilleure solution globale couranteS. Mais contrairement à CPDGVNS, le changement de cluster dans RADGVNS s’effectue plus rapidement (i.e. à chaque fois qu’une solution de moins bonne qualité est renvoyée par l’esclave), tandis que CPDGVNS nécessite beaucoup plus de temps avant de changer de cluster.

ii) Replicated synchronous DGVNS. Pour étudier l’impact de la synchronisation, nous avons proposé sur la même architecture une version synchrone de la communication entre le processus maître et les processus esclaves. Dans RSDGVNS, le processus maître attend la fin de tous les processus esclaves avant d’effectuer le prochain mouvement.

Bilan des expérimentations. Les expérimentations ont été réalisées sur les instances les plus difficiles des problèmes RLFAP, SPOT5, tagSNP et GRAPH24, soit un total de 15 instances. Nous

23. Dans nos expérimentations, le T imeOut local a été fixé à (global_T imeOut)/npr. 24. Instances aléatoires ayant une structure proche des instances RLFAP.

avons utilisé un cluster Linux Infiniband de 8 nœuds, chaque nœud est constitué d’un dual-CPU Xeon E5-2650 de 16 cœurs (soit au total 128 processus). Toutes les méthodes ont été implantées en C++ en utilisant la librairie toulbar2. La parallélisation a été mise en œuvre dans l’environnement MPI (Message Passing Interface). Quatre méthodes ont été comparées : DGVNS, CPDGVNS, RADGVNS et RSDGVNS. Pour chaque méthode, différentes décompositions arborescentes ont été considérées :

(i) décomposition arborescente obtenue par l’heuristique MCS et sa version raffinée obtenue par fusion de clusters avec l’absorption,

(ii) décomposition arborescente obtenue par l’heuristique min-fill et sa version raffinée obtenue par fusion de clusters avec l’absorption.

Les résultats de nos expérimentations démontrent clairement la supériorité de RADGVNS par rapport à DGVNS, CPDGVNS et RSDGVNS sur les différentes décompositions considérées. Cela atteste de l’importance d’échanger souvent la meilleure solution globale entre les esclaves pour amélio-rer la diversification. Ces résultats montrent également que RSDGVNS est la deuxième meilleure stratégie parallèle. Enfin, les décompositions arborescentes raffinées permettent d’améliorer si-gnificativement les performances de nos approches parallèles.