• Aucun résultat trouvé

4.2 Heuristiques proposées

4.2.3 Algorithme blacklist

L’algorithme blacklist est un algorithme glouton de construction de couvrant. Il est invoqué à

l’étape 1 de l’approche réactive. L’objectif de cet algorithme est de minimiser le nombre de

capteurs qui couvrent chaque cible critique dans le couvrant. Pour cela, l’algorithme se base sur

l’utilisation d’une liste noire (blacklist). La liste noire contient les capteurs qui couvrent au moins

Etape 1 : Premier appel de l’algorithme adaptatif : adaptatif (S, T, C)

= { , , , } ; = { , , } ; = ∅ ; = 2 ; = 1.5 ; = 3 ; = 2.5

Itération 1 : = { , , } ; = { , } ; = { } ; on choisit ;

Itération 2 : = { } ; = { } ; = { , , } ; on choisit ;

On retourne = { ; }

Etape 2 : On active le couvrant ,

Etape 3 : le capteur épuise sa batterie à la date ∆ = 2

Etape 1 : Second appel de l’algorithme adaptatif : adaptatif (S, T, C)

= { , , } ; = { , , } ; = { } ; = 1.5 ; = 3 ; = 0.5

Itération 1 : = { , } ; = { , } ; = { , } ; on choisit ;

Itération 2 : = { } ; = { } ; = { } ; on choisit ;

On supprime les capteurs redondants du couvrant = { ; ; } : est

redondant

On retourne = { ; }

Etape 2 : On active le couvrant ,

Etape 3 : le capteur épuise sa batterie à la date ∆ = 2 + 1.5 = 3.5

= { , } ; = { , , } ; = 1.5 ; = 0.5

Aucun capteur de S ne couvre la cible : Fin de vie du réseau

Nouvelles heuristiques pour le MLCP

une cible critique déjà couverte par le couvrant en construction. Les capteurs en liste noire ne sont

sélectionnés que lorsque les capteurs hors de la liste noire ne couvrent pas les cibles non encore

couvertes par le couvrant en construction. Cette méthode permet donc d’éviter autant que possible

qu’une cible critique ne soit doublement couverte par un couvrant, l’idéal étant que chaque cible

critique soit couverte par un seul capteur du couvrant. Rappelons qu’une cible est critique si elle

couverte par le nombre minimal de capteurs. En utilisant judicieusement les capteurs qui couvrent

ces cibles critiques, la durée de vie du réseau pourrait être davantage prolongée. Nous avons vu

dans le chapitre précédent que certaines heuristiques de la littérature utilisent des fonctions coût

pour pénaliser les capteurs qui couvrent les cibles critiques. Cependant, les autres paramètres de ces

fonctions peuvent compenser cette pénalité au point où un capteur couvrant une cible critique déjà

couverte soit sélectionné. Contrairement à cette technique (par fonction coût), les capteurs que l’on

ne souhaite pas sélectionner sont clairement identifiés grâce à la liste noire et lorsque la situation

l’impose, le choix de l’un d’entre eux peut se faire selon des critères bien définis. Un autre principe

de base de l’algorithme blacklist est de couvrir en priorité toutes les cibles critiques avant de

chercher à couvrir les autres cibles. Au début de la couverture des cibles critiques, la liste noire est

vide et lorsque toutes les cibles critiques sont couvertes, cette liste est pleine. Etant donné que les

capteurs en liste noire sont (en quelque sorte) exclus, on peut définir une autre forme de criticité. Il

s’agit des cibles couvertes par le nombre minimal de capteurs hors de la liste noire. Afin de couvrir

les cibles non critiques, l’algorithme cherche à couvrir en priorité la cible couverte par le nombre

minimal de capteurs hors de la liste noire. Dans certains cas, ce nombre est nul, autrement dit, tous

les capteurs qui couvrent cette cible se trouvent en liste noire. Cela implique qu’un capteur doit être

pris en liste noire et par conséquent, une ou plusieurs cibles critiques seront couvertes doublement.

Dans ce cas, l’algorithme choisit le capteur qui couvre le plus de nouvelles cibles afin de minimiser

la probabilité que cette situation se reproduise. De manière générale, l’algorithme blacklist cherche

à minimiser la taille des couvrants qu’il forme. Pour cela, lorsqu’un choix de capteurs se pose, la

priorité est donnée à celui qui couvre le nombre maximal de nouvelles cibles (critiques dans un cas,

et non critiques dans l’autre). Si plusieurs capteurs sont dans cette même situation, l’un d’eux est

alors choisi aléatoirement.

L’algorithme blacklist est présenté à la figure 19. Il prend en entrée l’ensemble S des capteurs et

l’ensemble T des cibles. La première instruction (I1) vérifie que toutes les cibles sont couvertes par

au moins un capteur. Si tel n’est pas le cas, l’algorithme retourne l’ensemble vide. La seconde

instruction (I2) identifie l’ensemble ( ) des cibles critiques. Il s’agit des cibles couvertes par le

moins de capteurs de S. Toutes les cibles n’appartenant pas à l’ensemble sont ajoutés à

l’ensemble des cibles non critiques, à l’instruction I3. Ces cibles critiques et non critiques sont

séparées ainsi car elles sont traitées différemment par l’algorithme. A l’instruction I4, le couvrant et

la liste noire sont initialisés à l’ensemble vide. La première boucle tantque concerne les cibles

critiques . Elle s’arrête lorsque toutes les cibles critiques sont couvertes. L’instruction I5

sélectionne le capteur hors de la liste noire ( ∈ ( − )) qui couvre le plus de nouvelles cibles

critiques. Si aucun capteur hors de la liste noire ne couvre nouvellement une cible critique,

l’instruction I5 sélectionne le capteur de la liste noire qui couvre le plus de nouvelles cibles

critiques. Lorsque le capteur est ainsi sélectionné, il est ajouté au couvrant (I6) et supprimé de son

ensemble d’origine ( ou ) selon le cas (I9). De même, toutes les cibles couvertes par le nouveau

capteur sont supprimées de leur ensemble d’origine ( ou ) selon le cas (I7). Pour chaque

Nouvelles heuristiques pour le MLCP

nouvelle cible critique couverte par , tous les autres capteurs qui la couvrent sont déplacés de

l’ensemble vers la liste noire (I8). Lorsque toutes les cibles critiques sont couvertes, on passe à

la seconde boucle tantque qui cherche à couvrir les cibles non critiques. Si l’ensemble est vide à

la sortie de la première boucle, la seconde boucle est ignorée. A chaque itération, la cible la moins

couverte par les capteurs hors de la liste noire est sélectionnée (I10). S’il y’en a plusieurs, l’une

d’entre elles est choisie aléatoirement. A l’instruction (I11), l’algorithme cherche un capteur qui

couvre et qui ne se trouve pas en la liste noire. Si plusieurs capteurs remplissent cette condition,

on cherche celui qui couvre le plus de nouvelles cibles. S’il y’en a plusieurs, on choisit

aléatoirement l’un d’eux. Par contre, si tous les capteurs qui couvrent la cible se trouvent en liste

noire, on sélectionne l’un d’entre eux selon le même critère que précédemment. Lorsque le capteur

est ainsi choisi, on l’ajoute dans le couvrant (I12), on le supprime de et selon le cas et on

supprime de toutes les cibles nouvellement couvertes. Si l’ensemble n’est pas vide, on

démarre une nouvelle itération. Les itérations de la seconde boucle se succèdent ainsi jusqu’à ce que

toutes les cibles non critiques soient couvertes ( = ∅). A la sortie de la seconde boucle, toutes les

cibles sont couvertes et l’algorithme appelle la procédure suppression_redondance( , ) (Fig. 3.4)

pour rechercher et supprimer d’éventuels couvrants redondants du couvrant formé (I14). Enfin,

l’algorithme retourne le couvrant (I15). La complexité de l’algorithme blacklist est en ( ) où

est le nombre de cibles et est le nombre de capteurs.

Nouvelles heuristiques pour le MLCP

Figure 19 - Algorithme Blacklist

Algorithme Blacklist (S, T)

Input: : Ensemble de cibles ; S: Ensemble de capteurs

Début

I1. Si∃ une cible ∈ et ∄ un capteur ∈ tel que couvre , alorsRetourner∅

I2. Identifier l’ensemble des cibles critiques (cibles couvertes par le nombre minimal de capteurs

de S)

I3. Former l’ensemble des cibles non critiques ( = − )

I4. Initialiser le couvrant et la liste noire à l’ensemble vide : = ∅ ; = ∅

Tant que ≠ ∅Faire

I5. Si ∃ ∈ ( − ) tel que couvre une cible de Alors

Sélectionner le capteur ∈ ( − ) qui couvre le nombre maximal de cibles de

Sinon

Sélectionner le capteur ∈ qui couvre le nombre maximal de cibles de

Finsi

I6. Ajouter le capteur au couvrant : = ∪ { }

I7. Supprimer de et de toutes les cibles couvertes par le capteur

I8. Ajouter à la liste noire ( ) tous les capteurs qui couvrent les mêmes cibles critiques que le

capteur

I9. Supprimer le capteur de l’ensemble ou de l’ensemble selon le cas

Fintantque

Tant que ≠ ∅Faire

I10. Choisir la cible ∈ couverte par le nombre minimal de capteurs de −

I11. Si aucun capteur de − ne couvre la cible Alors

Sélectionner le capteur ∈ qui couvre la cible et le nombre maximal d’autres cibles de

Sinon

Sélectionner le capteur ∈ − qui couvre à et le nombre maximal d’autres cibles de

Finsi

I12. Ajouter le capteur au couvrant : = ∪ { }

I13. Supprimer de toutes les cibles couvertes par le capteur

I14. Supprimer le capteur de l’ensemble et de l’ensemble selon le cas

Fintantque

I14. Appeler la procédure suppression_redondance( , ) pour supprimer les capteurs redondants de

I15. Retourner le couvrant

Nouvelles heuristiques pour le MLCP

Figure 20 - Exécution de l’approche réactive avec l’algorithme blacklist

La figure 20 montre une trace d’exécution de l’approche réactive avec l’algorithme blacklist sur

l’exemple de la figure 16. On observe que la durée de vie du réseau obtenue est ∆= 3.5, c’est la

même que celle obtenue par l’algorithme adaptatif lorsque le « bon » capteur a été choisi

aléatoirement (Fig. 3.7). Cela montre que l’algorithme blacklist propose une meilleure gestion des

cibles critiques que l’algorithme adaptatif. Il reste à présent à comparer cette durée de vie à la borne

supérieure (définie plus haut) de la durée de vie optimale. Pour cela, on calcule premièrement la

durée de couverte maximale de chaque cible selon la formule = ∑ [ ] . On obtient alors

= + = 2 + 3 = 5, = + = 2 + 1.5 = 3.5 et = + + = 1.5 + 3 +

2.5 = 7. Puis on identifie la plus petite de ces durées maximales de couverture. Dans ce cas, nous

avons ∆ = 3.5. Puisque ∆ = ∆, nous déduisons que l’algorithme blacklist a permis d’obtenir la

durée de vie optimale du réseau dans le cas de l’exemple 2.