• Aucun résultat trouvé

2.5 Preventive Failure Recovery : PFR

2.5.1 Allocation initiale des canaux

Le problème d’allocation des canaux dans le réseau peut être vu comme un problème de coloration de graphes à m couleurs. Nous présentons dans le paragraphe suivant, un certain nombre d’heuristiques qui ont été introduites dans la littérature pour résoudre un tel problème.

2.5.1.1 Heuristiques de coloration de graphes

Les heuristiques de coloration des graphes peuvent être classiiées en trois classes :

constructives, de recherche locale et évolutionnaires. La première classe inclut les heuris-

tiques construisant la solution pas à pas jusqu’à l’obtention d’un graphe coloré complet (ex : l’algorithme glouton et DSATUR). En revanche, les algorithmes de recherche locale commencent d’un graphe initialement coloré et essaient d’améliorer la solution itérati- vement (ex : le recuit simulé et Tabucol [77]). Enin, les heuristiques évolutionnaires se basent sur un ensemble des individus qui s’adaptent individuellement et coopèrent entre eux par l’échange d’informations (ex : les algorithmes génétiques et les algorithmes des

colonies de fourmis).

Dans les réseaux peu denses, les heuristiques de recherche locale sont très eicaces. Cependant, la qualité de la solution se dégrade avec la croissance du nombre de nœuds. Pour améliorer les performances des algorithmes de recherche locale, beaucoup de travaux proposent de les combiner avec un algorithme constructif pour réduire la taille du graphe avant l’application de la méthode de recherche locale. L’idée est que l’heuristique construc- tive colore le nombre maximal de sommets sans conlits appelés classes de couleurs stables. Ensuite, l’heuristique de la recherche locale colore les nœuds restants.

2.5.1.2 Proposition d’algorithmes de coloration centralisés

Compte tenues des heuristiques sus-indiquées, nous optons dans le cas de notre étude, pour une technique de coloration qui combine un algorithme constructif et un algorithme de recherche locale. L’allocation se fait d’une façon centralisée par le nœud puits, ce qui facilite la coloration puisque ce nœud peut avoir une vue globale du réseau. Pour commencer, l’heuristique constructive exploite les informations de voisinage rassemblées par le nœud puits pour construire les classes stables. L’algorithme fonctionne comme suit :

Initialisation

• Selon leurs degrés (nombre de sommets adjacents), les sommets sont mis dans une liste L en commençant par le sommet de degré le plus élevé.

• C = {C1, . . . , Cm} l’ensemble des sommets colorés, où la classe Cj inclut les som-

mets colorés par j. C est initialisé à ∅ (C = ∅). • Arrêt=faux

Tant que Arrêt=faux faire

1. Prendre le premier sommet v dans L, le colorer avec la couleur disponible la plus petite j, le mettre dans Cj et l’enlever de la liste L.

2. Prendre le sommet suivant, s’il n’a aucun lien avec un sommet u ∈ Cj, le colorer

avec j, l’enlever de L et l’ajouter au Cj. Sinon, passer au sommet suivant. Répéter

ce processus jusqu’à la in de la liste L.

3. Si L = ∅ ou aucune couleur n’est disponible, Arrêt=vrai .

Fin Tant que

Cet algorithme réduit le nombre de sommets non colorés, ce qui augmente l’eicacité de l’heuristique de recherche locale. Pour colorer les sommets restants, nous utilisons une heuristique basée sur l’algorithme Tabucol [77] qui est prouvé fournir de bons résultats.

Tabucol commence d’une solution initiale s et déplace, itérativement, un sommet v de

Ci vers Cj pour obtenir une nouvelle solution s ′

. Le mouvement (v, i) devient tabou, ce qui signiie que v ne peut pas être coloré par la couleur i pour t itérations ; t étant un paramètre. Le mouvement peut être enlevé de la liste tabou TL (Tabu List) en se basant sur une fonction d’aspiration Asp. Initialement :

Asp[z] = z − 1

où z représente le nombre de conlits dans une solution s. Ensuite, à chaque fois une solution s′

est générée, tel que f(s′

)≤ Asp[f(s)], nous mettons : Asp[f (s)] = f (s′)− 1

où f (s) représente le nombre de sommets adjacents appartenant à la même classe colorée. Si le mouvement qui donne s′

est tabou, nous enlevons le statut tabou de ce mouvement et nous le considérons comme étant possible. Le choix de la fonction d’aspiration évite que l’algorithme retourne vers une solution déjà visitée. Le nombre d’itérations peut être limité par un temps de calcul maximal prédéini ou à un nombre maximal d’itérations consécutives sans amélioration de la solution optimale. Les étapes sont décrites en détail dans l’algorithme 1; où s, s′

et s∗ représentent respectivement la solution initiale, la

solution actuelle et la solution optimale partielle.

Algorithm 1 Heuristique basée sur Tabucol Initialisation :

• s = {C0, C1, . . . , Cm}, C0 = L(ensemble des sommets incolores) ;

• T L = ∅, and s∗ = s;

• Initialiser Asp et max_itr • Arrt = faux, itr = 1 ;

Tant que Arrt = faux et itr < max_itr

1. Générer N′

(s)de p (paramètre) solutions choisies de N(s) = {s

|s′

obtenue de s par le déplacement d’un sommet de C0 à Ci, i = 1 . . . m, avec aucun mouvement tabou

sauf si f(s′)≤ Asp[f(s)]} ;

2. s′

= argmins"∈N′(s)f(s"), (la solution avec le nombre minimal de conlits) ;

3. Si f(s′

) < f (s∗), s∗ = s

. si f(s∗) = 0, Arrt = faux ;

4. s = s′

;

5. Mettre à jour la liste tabou TL

• Mettre le nouveau mouvement (v, 0) dans TL

• Si |TL| > t, supprimer le plus ancien mouvement de TL • Mettre à jour Asp ; itr = itr + 1. Aller à 1.

choisies à chaque itération, inluence la qualité de la solution. Il peut être choisi selon le nombre de nœuds non encore colorés et le nombre total de couleurs. Nous pouvons choisir de garder une solution pour chaque nœud déplacé à chaque classe. Dans ce cas, il y a p= |C0| × m solutions au total ; où |C0| représente le nombre de nœuds non colorés par

l’algorithme constructif. Le paramètre max_itr (nombre maximal d’itérations) ainsi que la taille de la liste tabou inluencent le temps d’exécution de l’algorithme et la qualité de la solution obtenue. Ils doivent donc être bien choisis ain de trouver un compromis entre le temps d’exécution et la diversité des solutions.

Une fois l’attribution des canaux de réception terminée, le nœud puits informe chaque nœud du réseau du canal à utiliser . Ainsi, les nœuds commutent leurs radios vers leurs canaux et peuvent commencer la réception des données.