FR 3032848 A1 20160819 FR 1500297 A 20150213 1 PROCEDE POUR GENERER DES GROUPES AU SEIN D'UN RESEAU RADIO AD HOC L'invention concerne un procédé pour générer des groupes ou en anglo-saxon des clusters au sein d'un réseau radio ad hoc mobile vérifiant des contraintes de taille, par exemple le diamètre d'un cluster. Le procédé s'applique, par exemple, pour créer des clusters au sein d'un réseau radio où les noeuds appartiennent à un groupe organisationnel. Elle se situe au niveau de la couche liaison de données ou de la couche réseau. Le procédé s'applique indépendamment de la taille du réseau, et est particulièrement efficace pour des réseaux à forte densité, par exemple un réseau avec plus de cent voisins à un bond de portée selon la terminologie utilisée dans le domaine des réseaux radios. Un réseau radio mobile ad hoc est un réseau radio sans infrastructure où les noeuds du réseau sont à la fois terminaux et relais. Dans le domaine de la clusterisation appliquée aux réseaux radio ad hoc mobiles, il existe plusieurs problèmes techniques dont les suivants : - La configuration de clusters homogènes en taille; les clusters doivent être de taille suffisante mais pas trop grande pour assurer une bonne gestion des communications. On cherche à éviter les clusters singletons de taille 1 ; - La vitesse de convergence: les clusters doivent être construits rapidement ; - La stabilité des clusters: la structure des clusters doit être stable en situation statique et le plus stable possible en mobilité ; - Le regroupement en clusters de noeuds qui ont des points communs, par exemple l'appartenance au même groupe opérationnel. De nombreux travaux relatifs au domaine des clusters sont connus de l'art antérieur, pour ce qui concerne leur formation, la gestion de la mobilité des noeuds au sein d'un réseau, etc. 3032848 2 Par exemple, le brevet CN 101360033 traite de la clusterisation et prend en compte trois métriques de noeud que sont la mobilité d'un noeud, la taille du cluster et l'énergie résiduelle du noeud. Les noeuds sont groupés ensemble, puis un chef de cluster est choisi. Les mobilités entre clusters sont 5 déterminées par un état lié à la combinaison des trois métriques citées. Le brevet WO 2007/099264 décrit une méthode qui minimise la signalisation échangée entre les noeuds au cours de l'étape d'élection d'un chef de cluster. La méthode de clusterisation consiste à choisir comme chef de cluster le noeud connu de poids le plus fort et à relier les noeuds non chef 10 de cluster à ce noeud chef de cluster. La taille des clusters est fixée par la valeur d'un paramètre k qui représente le nombre de bonds radio maximal entre un noeud et son chef de cluster, c'est-à-dire que le diamètre de ce cluster est limité à 2*k. Le brevet US 2002/0103893 traite de la fusion de clusters basée 15 sur la taille des clusters qui peuvent potentiellement fusionner. Cette fusion est décidée par deux noeuds de deux clusters voisins. L'enseignement du brevet US 6 876 643 concerne un réseau de type Bluetooth, et décrit un procédé pour construire un réseau en un nombre minimum de clusters de taille bornée, avec la taille égale au nombre de 20 noeuds. Un noeud chef de cluster est défini par cluster. Le brevet décrit deux techniques pour accélérer la formation du réseau : le transfert d'informations au cours de la formation du réseau en utilisant des bits des messages utilisés par les procédures de découverte de voisinage et l'utilisation de paramètres spécifiques pour séparer les noeuds entre ceux qui seront en 25 émission et ceux qui seront en réception. Le nombre de chef de clusters est calculé dynamiquement mais nécessite la connaissance du nombre de noeuds dans tout le réseau. De plus, le procédé décrit requiert la présence d'un super chef de cluster ou super-maître qui vérifie que le nombre de clusters est bien celui recherché. L'affiliation des noeuds à un cluster ne prend en compte que la taille du cluster. 3032848 3 La publication de T. Ohta, S. lnoue and Y. Kakuda; "An Adaptive Multihop Clustering Scheme for Highly Mobile Ad Hoc Networks"; IEEE ISADS'03 propose un protocole de clusterisation dynamique qui crée des clusters dont la taille n'excède pas un maximum. Cependant le protocole 5 n'utilise aucune métrique particulière pour former les clusters, ces derniers ont donc une forme aléatoire. De plus il ne s'intéresse pas au contexte où les noeuds du réseau sont répartis en groupes opérationnels. Le document de H. Wu, Z. Zhong, and L. Hanzo, intitulé "A cluster-head selection and update algorithm for ad hoc networks," in Proc. 10 IEEE GLOBECOM, Dec. 2010, pp. 1-5, propose un protocole de clusterisation dynamique qui crée des clusters en cherchant à utiliser l'information de sous-réseau auquel appartient chaque noeud. La solution proposée choisit des noeuds CH de manière à ce qu'ils soient non-voisins, et conduit à l'affiliation à ces noeuds CH non voisins de tous les noeuds non-CH 15 qui leur sont voisins. Ainsi la taille des clusters dépend uniquement de la densité du réseau. Le document de D. Camara, C. Bonnet and N. Nikaein, intitulé "Topology management for group oriented networks," in Proc. IEEE PIMRC, Honolulu, Hawai, Sep. 2010, pp. 2739-2744 décrit une méthode qui 20 assemble en clusters les noeuds d'une même communauté d'intérêt. La méthode utilise des noeuds privilégiés (DCH) qui sont par défaut des chefs de cluster CH. Lorsqu'aucun DCH n'est présent dans le voisinage d'un noeud, ce dernier peut devenir CH. Dans la solution proposée, l'appartenance à une communauté n'est prédéfinie que pour les noeuds 25 privilégiés DCH, les noeuds non-DCH appartenant d'office à la communauté d'intérêt du noeud privilégié DCH le plus proche. Une fonction de coût gouverne la façon dont les noeuds s'affilient entre eux pour former des clusters dont la taille est bornée. Cette fonction de coût ne prend cependant pas en compte les communautés d'intérêt. 30 Les solutions décrites dans l'art antérieur ne prennent pas en compte de manière explicite la structure en groupes et la taille des clusters. 3032848 4 Dans la suite de la description, on considère que deux clusters sont voisins si au moins un membre d'un des deux clusters est voisin à un bond radio d'un membre de l'autre cluster. La taille d'un cluster est définie par exemple à partir du diamètre du sous-graphe induit par ses membres. 5 L'expression « réseau dense » ou à forte densité concerne les réseaux radio pour lesquels le nombre de noeuds en portée radio de n'importe quel noeud est en moyenne au moins égal à cent. Un groupe opérationnel de noeuds est défini dans la présente invention comme un ensemble de noeuds qui ont des fonctions identiques, ou similaires, tels qu'un groupe de pompiers, de 10 secours, etc. La description utilisera indifféremment le mot noeud ou le mot membre pour désigner un noeud d'un cluster. L'invention concerne un procédé pour regrouper des noeuds dans un réseau radio ad hoc mobile RM caractérisé en ce qu'il comporte au moins les étapes suivantes : 15 - définir un ensemble de contraintes à vérifier relatives aux contraintes sur les clusters, - considérer un ensemble de noeuds {4} appartenant à un premier cluster local Ck, - déterminer si le cluster formé par le groupe de noeuds {u1} migrant du 20 premier cluster local Ck dans un deuxième cluster CI voisin du cluster Ck, et le départ des noeuds du cluster local vérifient les contraintes sur les clusters, - dans le cas où les contraintes sur les clusters sont satisfaites, alors déterminer le gain induit par la mobilité des groupes de noeuds {4} du 25 premier cluster Ck vers chacun des clusters voisins et déplacer le groupe de noeuds vers le cluster voisin qui entraîne le plus fort gain. Selon une variante de réalisation, on réalise les contraintes sur les clusters en s'assurant de la connectivité des noeuds et/ou de la dimension du cluster. 30 Le procédé peut comporter au moins les étapes suivantes : 3032848 5 - une étape d'apprentissage des informations d'un cluster local Ck et des clusters voisins, - définir la liste des ensembles de membres du cluster local Ck qui sont dans le même groupe opérationnel, 5 - tester si la liste L des ensembles de membres du cluster du même groupe opérationnel est vide et choisir au hasard un ensemble groupe de noeuds, cluster, ({4, Ci) contenu dans une liste M correspondant aux noeuds qui induisent un gain maximal et migrer les groupes de noeuds {u1} du cluster local Ck au deuxième cluster C1, 1 - si la liste L n'est pas vide, alors on enlève de cette liste son premier élément {4, - on teste si après le départ du groupe des noeuds {4} du cluster local Ck, ce dernier satisfait encore les contraintes sur les clusters, - si oui, alors on considère N la liste des clusters voisins du 15 cluster local Ck et on va à une étape suivante de test sur la liste des clusters, - si non, alors on retourne à l'étape de test sur la liste L, - si la liste des clusters voisins n'est pas vide, on considère le premier élément de N correspondant au premier cluster voisin de la liste, on 20 enlève le premier élément de N, puis on vérifie si l'union du premier cluster voisin CI avec le groupe de noeuds du cluster {4} satisfait bien les contraintes sur les clusters, - si les contraintes sur les clusters ne sont pas satisfaites, alors on retourne à l'étape qui considère la liste des clusters non vide, 25 - sinon on va calculer le gain g({ui},Ck,Cl), - si ce gain est strictement supérieur à une valeur de gain g de référence, alors mettre à jour la référence de gain g en utilisant le gain g({ui},Ck,C1) induit par la mobilité du groupe de noeud vers le cluster CI, on met à jour la liste M={ {4},C1 et on 3032848 6 retourne à l'étape précédente de test qui considère la liste des clusters non vide, - si ce gain n'est pas strictement supérieur à g alors on teste si la valeur de gain g est égale à la valeur g({ui},Ck,C1), si oui, on 5 ajoute {{4},C,} àM:M=Mu {{L'ICI} et on retourne à l'étape qui considère la liste des clusters non vide, - si la valeur de gain trouvée est strictement inférieur à g alors on retourne à l'étape qui considère la liste des clusters non vide. L'ensemble des noeuds considérés est formé, par exemple, de noeuds regroupés par fonctionnalité. Le procédé peut comporter une phase de maintenance dans laquelle chaque cluster détermine sa dimension et vérifie si la liste des noeuds contenus dans le cluster forme un graphe connexe. La dimension que l'on vérifie est, par exemple, le diamètre du cluster et dans le cas où le 15 diamètre du cluster est supérieur à une valeur donnée, le groupe de noeuds appartenant au cluster est scindé en plusieurs groupes de noeuds. La scission du groupe de noeuds est, par exemple, réalisée en utilisant les étapes suivantes : - regrouper le noeud de plus haut degré avec tous ses voisins, 20 - construire des composantes connexes avec les noeuds restants. Le procédé peut aussi comporter les étapes suivantes : lors d'une première étape on teste si le cluster Ck vérifie les contraintes sur les clusters, - si oui on conserve le cluster en l'état, - si le cluster ne vérifie pas les contraintes, alors on exécute les étapes 25 suivantes : - soit L la liste des ensembles de membres du cluster local Ck qui sont dans le même groupe opérationnel, - si la liste L est vide la procédure de maintenance est terminée, - si la liste L contient un élément au moins alors on teste si 30 l'ensemble {4} est connexe, 3032848 7 - si oui on remonte à l'étape de test de la liste L vide, - si non, alors on scinde l'ensemble en plusieurs composantes connexes {{u11},...,{e}} et on va créer un nouveau cluster avec chacune de ces composantes connexes, puis on 5 remonte à l'étape de test de la liste L vide. Le calcul de gain est, par exemple, effectué en utilisant une fonction de coût exprimée de la manière suivante : e - (nk e + 1) et = 1 ' ne - (ne + 1) avec -e le groupe opérationnel dont le nombre de membres est le plus élevé dans le cluster k, nk,e le nombre de noeuds du groupe -e, et ne la taille du 10 groupe opérationnel numéro -e . Selon une autre variante, le calcul de gain est effectué en utilisant une fonction de coût exprimée de la manière suivante : c2(Ck) = 1 nk - (nk + 1) nnia, - (Tin. + avec nk le nombre de membres du cluster Ck, et nma, la taille maximale admissible d'un cluster. 15 Les noeuds communiquent entre eux en utilisant des messages de type « Hello ». D'autres caractéristiques et avantages de la présente invention apparaîtront mieux à la lecture de la description qui suit annexée des figures qui représentent : 20 - La figure 1, un exemple de réseau mobile ad hoc avec plusieurs groupes dont les membres sont identifiés, - La figure 2, un organigramme décrivant un exemple de succession d'étapes pour l'algorithme de clusterisation, - La figure 3, un exemple d'algorithme de maintenance, 25 - Les figures 4 et 5, un exemple chiffré de mise en oeuvre du procédé selon l'invention. 3032848 8 Afin de mieux faire comprendre l'invention, l'exemple donné ci-après va être décrit dans le cas d'un réseau radio mobile ad hoc RM comprenant plusieurs groupes G1, G2, G3, G4, G5, G6, dont les membres sont identifiés par des graphismes différents, carré, triangle, rond, losange, étoile, 5 triangle inversé. Dans cet exemple, chaque noeud Ei=1,.2,.., 30, du réseau appartient à un seul groupe opérationnel G. Un noeud du réseau est équipé de moyens de communication radio, un émetteur/récepteur 101/102, un processeur 103 adapté à collecter l'information qui lui est nécessaire via l'échange de messages de signalisation avec ses voisins. Chaque noeud 10 utilise cette information pour s'affilier dynamiquement à un cluster de manière à maximiser une fonction de coût tout en respectant des contraintes, telles que par exemple, des contraintes de connectivité, de diamètre et/ou de taille. Une base de données 104 permet à un noeud de mémoriser l'état du réseau, l'état des liens de connectivité avec des noeuds voisins, des 15 informations relatives au cluster selon des méthodes connues de l'homme du métier. Les messages utilisés par les noeuds pour dialoguer et s'échanger des informations relatives à l'état du réseau sont par exemple des messages de type « Hello » qui sont connus de l'homme du métier et ne seront pas détaillés. 20 La fonction de coût mise en oeuvre au sein de chacun des noeuds du réseau est définie, dans le cas d'un réseau où les noeuds appartiennent à un même groupe, de manière à atteindre au moins un des deux objectifs suivants : - Construire des clusters comprenant un maximum de membres 25 appartenant à un même groupe, - Favoriser des clusters dont la taille est maximale par rapport à des contraintes de fonctionnement du réseau préétablies. Dans le cas d'un réseau ad hoc mobile où les noeuds ne sont pas nécessairement regroupés par groupe opérationnel, on prendra en compte 30 uniquement le deuxième objectif. 3032848 9 La fonction de coût est notamment ajustable en fonction de l'objectif recherché en prenant en compte des paramètres divers tels que: la taille des clusters, le nombre de membres des groupes dans les clusters, la qualité des liens radio, etc. En raison de la mobilité des noeuds du réseau, 5 les clusters formés précédemment peuvent ne plus satisfaire les contraintes de dimension ou de connectivité, le procédé selon l'invention permettra notamment de répondre à ce problème. Dans l'exemple donné, chaque noeud du réseau appartient à un seul groupe opérationnel selon la définition donnée préalablement. Le 10 nombre total de groupes opérationnels est Ng. Le procédé va construire des clusters connexes (terme connu de l'homme du métier). Ces clusters peuvent par exemple avoir un nombre de membres maximal nmax- De plus, le diamètre du sous-graphe induit par ses membres peut être borné par la valeur maximum dmax (définition selon la théorie des graphes). 15 Chaque noeud d'un cluster doit maintenir des informations concernant le cluster dont il est membre : - les identifiants et les groupes opérationnels des noeuds du cluster, - les liens radios entre les membres du cluster. Chaque noeud va maintenir une table par exemple stockée dans la 20 base de données et contenant les informations suivantes concernant les clusters voisins {Ck} - Les nombres nic,e de membres d'un cluster Ck par groupe opérationnel -e, - Le nombre nk de membres du cluster déduit des nombres nk,e, 25 - Optionnellement les liens radios /k, entre les membres du cluster. Le procédé définit une fonction de coût et un coût associé à chaque cluster. Un exemple de calcul de coût va prendre en compte le nombre des membres du cluster par groupe opérationnel. L'objectif de l'algorithme de clusterisation selon l'invention est notamment de 30 minimiser ce coût associé à chaque cluster. Un premier exemple de calcul de 3032848 10 coût d'un cluster Ck lorsque les noeuds du cluster appartiennent à un groupe organisationnel est donné par la fonction suivante : nk,f - (nk + et (Ck) = 1 ' ne - (ne + 1) avec k le numéro désignant le cluster dont le coût est calculé, -e le groupe dont le nombre de membres ou noeuds est le plus élevé dans le cluster k, 5 nk,E comme défini précédemment et ne la taille du groupe opérationnel numéro e. Un second exemple de calcul de coût du cluster Ck, cette fois en l'absence de notion de groupe organisationnel, est donné par la fonction suivante : nk - (nk + 1) c2(Ck) = 1 avec nmax et nk comme définis précédemment. 10 Dans ces deux exemples, le coût d'un cluster vide est maximal et égal à 1. Le procédé selon l'invention va comporter une première phase de construction de clusters en exécutant un algorithme de clusterisation et une deuxième phase de maintenance des clusters. Avant d'expliciter les étapes de l'algorithme, quelques rappels sur la notion de gain sont donnés dans le 15 cadre de l'invention. L'algorithme de clusterisation a notamment pour fonction d'effectuer un regroupement distribué et dynamique des noeuds du réseau. La figure 2 illustre un organigramme des étapes exécutées par l'algorithme de clusterisation. 20 La perte liée au départ d'un groupe de noeuds {4} d'un cluster Ck est égale à c(Ck \ {4}) - c(Ck) et le gain lié à l'arrivée d'un groupe de noeuds {4} dans un cluster CI est égal à c(C1) - c(C, u {4}). Le gain net g({4},Ck,Ci) lié au déplacement d'un groupe de noeuds {4} depuis un premier cluster Ck vers un deuxième cluster CI vaut alors : 25 g({1.1}Ck,C1) = [ C(C1) - C(Clu {u}) - [C/Ck {u1}) - «CO]. nmaX - (nMax 1)' 3032 848 11 Régulièrement les noeuds d'un cluster Ck évaluent l'opportunité pour les ensembles de noeuds {4} membres du cluster Ck et membres d'un même groupe opérationnel de quitter le cluster Ck pour joindre un cluster voisin C,. Le cluster Ck doit continuer à satisfaire les contraintes définies sur les 5 clusters dans le cas où les noeuds {4} le quitteraient. De plus l'arrivée des noeuds {4} dans le cluster CI ne doit pas conduire à la « non satisfaction » des contraintes définies sur les clusters. Pour les groupes de noeuds {4} et les clusters CI qui satisfont les conditions prédéfinies, c'est le groupe de noeuds {4} et le cluster C, qui 10 conduit au meilleur gain g({ui},Ck,C1)>0 qui est retenu. En cas d'égalité entre plusieurs paires (groupe de noeuds, clusters), ({4},C1), l'une d'entre elles est choisie aléatoirement. Si un groupe de noeuds {4} a été sélectionné pour quitter le premier cluster Ck et rejoindre le deuxième cluster CI, alors un échange de messages entre les deux clusters permet d'appliquer la 15 modification ainsi décidée selon des principes connus de l'homme du métier. Sur la figure 2, la première étape 200 est une étape d'apprentissage des informations d'un cluster local Ck et des clusters voisins. On définit 201 la liste L des ensembles de membres du cluster local Ck qui sont dans le même groupe opérationnel. Soit M un ensemble contenant les 20 noeuds du cluster local Ck qui ne satisfait pas les contraintes définies initialement. M est initialement vide, 202. On initialise aussi le gain g à zéro. On teste si la liste L est vide, 203. Si la liste est vide, on choisit 204 au hasard un ensemble de noeuds du même groupe du cluster Ck, ({4}, C,) de M et on fait migrer les groupes de noeuds {4} du cluster local Ck au 25 Cluster CI. Si la liste L n'est pas vide, il existe des membres du cluster local Ck qui sont dans un même groupe opérationnel et qui n'ont pas encore été évalués par l'algorithme, alors on va 211, considérer le premier élément {4} de la liste L et ôter ce premier élément de la liste L. 30 On teste, 212, si après le départ du groupe de noeuds {4} du cluster local Ck, ce dernier satisfait encore les contraintes sur les clusters. Si 3032848 12 oui alors, 213, on considère N la liste des clusters voisins du cluster local Ck et on va à l'étape 220. Si non, alors on retourne à l'étape 203. Le test sur les contraintes peut comporter la vérification que le diamètre du cluster obtenu après le départ du groupe {ui} reste inférieur à une valeur maximale de 5 diamètre prédéfinie et/ou que le départ du groupe de noeuds {4} ne rend pas le cluster non connexe. Si la liste des clusters voisins n'est pas vide, 220, on considère le premier élément de N correspondant au premier cluster voisin de la liste, on enlève 221 le premier élément de N, puis on vérifie 222 si l'union du premier o cluster voisin CI avec le groupe de noeuds du cluster {u1} satisfait bien les contraintes sur les clusters. Si les contraintes sur les clusters ne sont pas satisfaites, alors on retourne à l'étape 220, sinon on va calculer 223, le gain g({ui},Ck,CI). Si ce gain est strictement supérieur à une valeur de gain g de référence, 224, alors on va, 225, mettre à jour comme référence de gain g le 15 gain g({ui},Ck,CI) induit par la mobilité du groupe de noeuds vers le cluster C1 et on va mettre à jour la liste M={ }, puis on retourne 228 à l'étape 220. Si ce gain n'est pas strictement supérieur à g alors, 226 on teste si la valeur de gain g est égale à la valeur g({ui},Ck,C1), si oui, on ajoute {{4},C1} à M : M = M {{4},C1}, 227 puis on retourne 228 à l'étape 220. Si la valeur de gain 20 trouvée est strictement inférieur à g alors on retourne 228 à l'étape 220. Le procédé peut comporter une phase de maintenance des clusters qui est exécutée par les noeuds des clusters. En raison de la mobilité spatiale des noeuds, à un moment, la ou les contraintes définies (par exemple la connectivité, ou le diamètre) peuvent 25 ne plus être satisfaites. Pour le vérifier, par exemple périodiquement, chaque cluster vérifie si la liste de ses membres forme toujours un graphe connexe. Un cluster pour lequel les membres ne forment pas un graphe connexe, va considérer un par un les ensembles de ses membres qui font partie du même groupe opérationnel. Chacun de ces ensembles est scindé en autant 30 de nouveaux clusters que de sous-composantes connexes. De plus, si un de ces ensembles ou si une de ces composantes connexes nouvellement 3032848 13 formées ne satisfait pas la contrainte de diamètre, alors ce groupe de noeuds est scindé en autant de clusters que de sous-composantes qui satisfont la contrainte de diamètre. Lorsque la contrainte de diamètre vaut 2 par exemple, une manière de scinder un groupe de noeuds d'un cluster ne 5 satisfaisant pas cette contrainte est d'utiliser l'heuristique suivante : (1) regrouper le noeud de plus haut degré avec tous ses voisins, et (2) construire des composantes connexes avec les noeuds restants. Pourvu que la vérification des contraintes soit réalisée suffisamment souvent, cette heuristique permet d'aboutir à des groupes de noeuds satisfaisant une ou les 10 deux conditions de connexité et de diamètre. La figure 3 illustre un exemple d'organigramme des étapes mises en oeuvre pour la phase de maintenance, en considérant la contrainte de connectivité. Il serait aussi possible de mettre en oeuvre tout procédé de maintenance connu de l'homme du métier présentant comme caractéristique 15 de vérifier que les clusters vérifient les contraintes et qui est adapté à scinder un ou plusieurs clusters qui ne vérifient pas ces contraintes en autant de clusters que nécessaire. Lors d'une première étape, 300 on teste si le cluster Ck est connecté. Si oui, 310, on conserve le cluster en l'état. Il est aussi possible de 20 vérifier que le diamètre du cluster obtenu vérifie toujours d'autres contraintes sur les clusters. Dans le cas où le cluster n'est pas connecté, alors l'algorithme de maintenance va exécuter les étapes décrites ci-après. Soit L la liste des ensembles de membres du cluster local Ck qui 25 sont dans le même groupe opérationnel 320. On teste si la liste L est vide 321, si oui, la procédure de maintenance est terminée 323. Dans le cas où la liste L contient un élément au moins, alors 322 on va enlever de la liste le premier élément {ui}. On teste 324, si l'ensemble 30 {ui} est connexe. Si oui on remonte à l'étape de test 321. Si non, alors on scinde l'ensemble 325 en plusieurs composantes connexes {{u11},...,{e}}, et 3032 848 14 on va créer un nouveau cluster avec chacune de ces composantes connexes, puis on remonte à l'étape de test 321. Les noeuds des clusters s'échangent des messages sous un format « Hello » par exemple pour prévenir des changements et mettre à jour 5 les bases de données. Le réseau de la figure 1 est composé de trente noeuds répartis en six groupes opérationnels de même taille I = 5. Supposons qu'initialement chaque noeud forme son propre cluster singleton. Tout d'abord chaque noeud u va chercher à rejoindre un autre noeud y voisin. 10 Le gain associé si y est du même groupe est égal à : g ({u}, {u}, {y)) = [c({v}) - c({u,1.2})] - [c(0) - c({u})]. Or c({u}) = c({v}) et c(0) = 1, donc : g ({u}, {u}, CO) = 2. c (fu)) - c - 1, _22 3 g au}, (u), (y)) = 2.{1 : fi 5 6} 51 1. 6} g au}, tu), (v)) = 241 - -15} - - 11 - 1, (tul, fia 10) = 5. Chaque noeud va chercher à former un cluster de deux membres avec l'un de ses noeuds voisins membre du même groupe opérationnel. L'enchaînement exact des formations de cluster dépend de la méthode 15 d'accès au canal radio. Pour illustrer un fonctionnement possible de l'invention regardons en détail ce qu'il peut se passer au niveau des noeuds du réseau : - Les noeuds 1 et 19 décident individuellement de rejoindre le noeud du même groupe 13 (caché derrière le noeud 16 dans la figure), 20 - Les noeuds 2, 8, 14 et 20 décident individuellement de rejoindre le noeud du même groupe 26, - Le noeud 3 décide d'aller rejoindre le noeud du même groupe 21, - Les noeuds 4 et 16 décident individuellement de rejoindre le noeud du même groupe 22, 3032848 15 - Le noeud 5 décide d'aller rejoindre le noeud du même groupe 17, - Le noeud 6 décide d'aller rejoindre le noeud du même groupe 30, - Le noeud 25 décide d'aller rejoindre le noeud du même groupe 7, - Le noeud 15 décide de rejoindre le noeud du même groupe 9, 5 - Le noeud 12 décide d'aller rejoindre le noeud du même groupe 24, - Le noeud 23 décide d'aller rejoindre le noeud du même groupe 29, - Les noeuds 11, 10, 18, 27 et 28 restent dans leur propre cluster. Ces mobilités entre clusters sont illustrées par la figure 4. Quinze clusters sont formés : {1, 19, 13), {2, 4, 8, 20, 26}, {3, 21}, {4, 16, 22}, {5, 17), {6,30}, 10 {7,25}, {9, 15), {10}, {11}, {12, 24), {18}, {23,29}, {27}, {28}. , Considérons la fonction de coût c(Ck) = 1 knr(nk,t+i) , Regardons n?, -(nr. +1) maintenant en détail une suite possible au fonctionnement de l'invention, en ce qui concerne le cluster {5, 17}, dont les deux membres sont du même groupe. La perte liée au départ du cluster de ces deux membres s'écrit : )c (0) - c ([5 ,17}) = 1 - 11 - 1 -5 =5. 15 Le cluster {5, 17) a quatre clusters voisins. Le gain lié à la fusion du cluster {5, 17} avec {11} (tous du même groupe) est : g({5,17}, {5,17}, (11)) = [c({11}) - c({5,11,17})] - 1 1*23 *11 1 g({5,17}, {5,17), {11}) = [11 - 7;761 {1 6 14 3 1 2 g((5,17), (5,17}, (11)) = - - =15 5 5 15 Le gain lié à la fusion du cluster {5, 17) avec {23,19} (tous du même groupe) 20 est : 1 g({5,17), (5,171 -5 [23,29)) = [c((23,29)) - c([5,17,23,29))] - ' 2 * 3 4 * g({5,17}, {5,17), [23,29)) = [1151] - 6) - 6 - -5-,5 * 3032848 16 4 1 1 4 g({5,17}, {5,17), {11)) = 5 3 5 = 15. Le gain lié à la fusion du cluster {5, 17} avec {28} (de groupes différents) est : 1 g({5,17), (5,171 {28)) = [c({28)) - c({5,17,28})]-5 5,17,281)] - ' gg({5,17},17), {5,17}, (28}) = [11 g ({5,17}, {5,17}, {28)) = - - =- - Le gain lié à la fusion du cluster {5, 17} avec {9,15} (de groupes différents) est : 1 g({5,17}, [5,171 -5 {9,15)) = [c({9,15)) - c([5,9,15,17))] - , 2 *3 g({5,17}, {5,17), [9,15)) = [11 - 5 * 6) 11 - 5 *6311- 5, 1 g({5,17), (5,171 [9,15)) = - -§. Le gain lié à la fusion du cluster {5, 17} avec {2, 4, 8, 20, 26} (de groupes 5 différents) est : g({5,17}, (5,17), {2, 4, 8, 20, 26)) = rc({2, 4, 8, 20, 26)) - c(f2, 4,8, 11,17, 20, 26))] -1 g({5,17}, [5,17), [2, 4, 8, 20, 26)) = [11 - 661 11 - 6)]5 * g({5,17), {5,17}, {2, 4, 8, 20, 26}) = - 1 Le cluster {5,17} choisit de fusionner avec le cluster {23, 19}, car c'est cette action qui occasionne le gain le plus élevé. La mobilité inter-cluster des noeuds {5, 17} est illustrée par la figure 5. L'invention ne nécessite pas la présence de chef de cluster. Elle 10 offre une convergence rapide pour la construction de clusters et demande un faible nombre d'itérations dans des réseaux denses, par exemple moins de dix itérations dans des réseaux comportant 1000 noeuds avec une densité d'environ 150 voisins à 1 bond. 1 * 2 2 * 3 1 5 *61 - {1 11 - 14 4 1 1 3032848 17 De plus, elle ne nécessite que très peu de paramètres pour fonctionner. Par exemple pour le premier exemple de fonction de coût cl(Ck), aucun paramètre de configuration n'est requis (nk,e est une variable mesurée pendant l'exécution du procédé, et ne est lié à la structure en groupes du 5 réseau). Dans le second exemple de fonction de coût c2(Ck), seul le paramètre de configuration indiquant la taille maximale nnia, d'un cluster est requis (nk est une variable mesurée pendant l'exécution du procédé). REVENDICATIONS1 - Procédé pour regrouper des noeuds dans un réseau radio ad hoc mobile RM caractérisé en ce qu'il comporte au moins les étapes suivantes : - définir un ensemble de contraintes à vérifier relatives aux contraintes sur les clusters, - considérer un ensemble de noeuds {4} appartenant à un premier cluster local Ck, (201), - déterminer si le cluster formé par le groupe de noeuds {4} migrant du premier cluster local Ck dans un deuxième cluster CI voisin du cluster Ck, et le départ des noeuds du cluster local vérifient les contraintes sur les clusters, - dans le cas où les contraintes sur les clusters sont satisfaites, alors déterminer le gain induit par la mobilité des groupes de noeuds {u1} du premier cluster Ck vers chacun des clusters voisins et déplacer le groupe de noeuds vers le cluster voisin qui entraîne le plus fort gain. 2 - Procédé selon la revendication 1 caractérisé en ce que l'on vérifie les contraintes sur les clusters en vérifiant la connectivité des noeuds et/ou la dimension du cluster. 3 - Procédé selon l'une des revendications 1 ou 2 caractérisé en ce qu'il comporte au moins les étapes suivantes : - une étape d'apprentissage des informations d'un cluster local Ck et des clusters voisins, - définir (201) la liste des ensembles de membres du cluster local Ck qui sont dans le même groupe opérationnel, - tester si la liste L des ensembles de membres du cluster du même groupe opérationnel est vide (203) et choisir (204) au hasard un ensemble groupe de noeuds, cluster, ({4}, CI) contenu dans une liste 3032848 19 M correspondant aux noeuds qui induisent un gain maximal et migrer le groupe de noeuds {4} du cluster local Ck au deuxième cluster CI, - si la liste L n'est pas vide, alors on considère (211) un premier élément {u1} de la liste L, 5 - on teste (212) si après le départ du groupe des noeuds {u,} du cluster local Ck, ce dernier satisfait encore les contraintes sur les clusters, - si oui alors (213) on considère N la liste des clusters voisins du cluster local Ck et on va à une étape suivante (220) de test sur la liste des clusters, 10 - si non, alors on retourne à l'étape (203), - si la liste des clusters voisins n'est pas vide (220), on considère le premier élément de N correspondant au premier cluster voisin de la liste, on enlève (221) le premier élément de N, puis on vérifie (222) si l'union du premier cluster voisin CI avec le groupe de noeuds du 15 cluster {u1} satisfait bien les contraintes sur les clusters, - si les contraintes sur les clusters ne sont pas satisfaites, alors on retourne à l'étape (220), - sinon on va calculer (223) le gain g({ui},Ck,C1), - si ce gain est strictement supérieur à une valeur de gain g de 20 référence, 224, alors mettre à jour (225) la référence de gain g en utilisant le gain g({4},Ck,C1) induit par la mobilité du groupe de noeud vers le cluster CI, on met à jour la liste M={ } et on retourne (228) à l'étape (220), - si ce gain n'est pas strictement supérieur à g alors, (226) on 25 teste si la valeur de gain g est égale à la valeur g({ui},Ck,C1), si oui, on ajoute {{L'ICI} àM:M=M v {{4,C1}, (227), et on retourne (228) à l'étape (220), - si la valeur de gain trouvée est strictement inférieur à g alors on retourne (228) à l'étape (220). 30 3032848 20 4 - Procédé selon la revendication 1 caractérisé en ce que l'ensemble des noeuds est formé de noeuds regroupés par fonctionnalité. 5 - Procédé selon l'une des revendications précédentes caractérisé en ce 5 qu'il comporte une phase de maintenance dans laquelle chaque cluster détermine sa dimension et vérifie si la liste des noeuds contenus dans le cluster forme un graphe connexe. 6 - Procédé selon la revendication 5 caractérisé en ce que la dimension 10 vérifiée est le diamètre du cluster et dans le cas où le diamètre du cluster est supérieur à une valeur donnée, le groupe de noeuds appartenant au cluster est scindé en plusieurs groupes de noeuds. 7 - Procédé selon la revendication 6 caractérisé en ce qu'on scinde le 15 groupe de noeuds en utilisant les étapes suivantes : - regrouper le noeud de plus haut degré avec tous ses voisins, - construire des composantes connexes avec les noeuds restants. 8 - Procédé selon l'une des revendications 1 à 7 caractérisé en ce qu'il 20 comporte au moins les étapes suivantes : lors d'une première étape (300) on teste si le cluster Ck vérifie les contraintes sur les clusters, - si oui (310) on conserve le cluster en l'état, - si le cluster ne vérifie pas les contraintes, alors on exécute les étapes 25 suivantes : - soit L la liste des ensembles de membres du cluster local Ck qui sont dans le même groupe opérationnel, (320), - si la liste L est vide la procédure de maintenance est terminée (323), 30 - si la liste L contient un élément au moins alors on teste (324) si l'ensemble {4} est connexe, 3032848 21 - si oui on remonte à l'étape de test la liste L est vide (321), - si non, alors on scinde l'ensemble (325) en plusieurs composantes connexes {{u1},..., {Lei}} et on va créer un nouveau cluster avec chacune de ces composantes 5 connexes, puis on remonte à l'étape de test la liste L est vide (321). 9 - Procédé selon l'une des revendications précédentes caractérisé en ce que le calcul de gain est effectué en utilisant une fonction de coût exprimée 10 de la manière suivante : Tik,f - (nk,e + 1J, ci(Ck) = 1 ' ' n'; - Ore + 1) avec -e le groupe opérationnel dont le nombre de membres est le plus élevé dans le cluster k, nk,e le nombre de noeuds du groupe -e, et ne la taille du groupe opérationnel numéro -e. 15 10 - Procédé selon l'une des revendications 1 à 8 caractérisé en ce que le calcul de gain est effectué en utilisant une fonction de coût exprimée de la manière suivante : nk - (nk + 1) c2(Ck) = 1 nmax - (nmax + 1)' avec nk le nombre de membres du cluster Ck, et nmax la taille maximale admissible d'un cluster. 20 11 - Procédé selon l'une des revendications précédentes caractérisé en ce que les noeuds communiquent entre eux en utilisant des messages de type « Hello ». 25