Le réseau de neurones est entraîné en utilisant l’apprentissage profond par renforcement (« Deep Reinforcement Learning »). Par exemple, l’ensemble d’étapes suivant est alors réitéré. - un scénario est lancé. - au cours de ce scénario, tous les T_calc secondes, les nœuds du réseau simulé font des observations et fournissent ces observations (ou des données déduites de ces observations) au réseau de neurones sous la forme d’un vecteur de paramètres d’information (appelé ici « states »), tel que défini auparavant. La nature des informations varie en fonction de la solution, comme expliqué plus haut ; - alors, le réseau de neurones fournit en sortie, pour chaque vecteur d’informations fournie par un nœud, pour chaque action possible, i.e. pour chaque valeur de période candidate Ti, i = 1 à n, un score, encore appelé Q_value_i. Dans le cas où il a été fixé trois valeurs de période distinctes possibles T1, T2, T3, le réseau de neurones ainsi calcule les scores respectivement notés Q_value1, Q_value2, Q_value3. Deux cas de figure se présentent alors: o Avec une probabilité alpha (alpha étant un paramètre prédéfini qui peut évoluer durant le processus d’entraînement) : le nœud applique l’action avec le meilleur score (supposons un cas où le meilleur score est Q_value2, l’action appliquée par le nœud est T2) (on entend ici par « appliquer l’action Ti», i= 1, 2 ou 3, le fait de de mettre en œuvre par le nœud la nouvelle valeur Ti de période considérée) ; o Avec une probabilité (1-alpha) : le nœud applique une action au hasard parmi T1, T2 ou T3. Puis, pour cette action, une fois qu’il l’a appliquée pendant un cycle de durée T_calc, le nœud obtient alors une récompense r : o s’il a bien respecté la contrainte opérationnelle prédéfinie (par exemple que les temps nécessaires à être découvert par chaque élément dans le voisinage sont bien inférieurs à un seuil fixé, ou encore que le temps moyen pour être découvert par l’ensemble des éléments voisins est inférieure à un seuil, ou encore que les tables de routage obtenues à l’aide de cette découverte sont suffisamment proches des tables de routage optimales et qu’il n’a pas envoyé trop de Hellos (i.e. un nombre de messages Hello -ou une bande passante correspondant à l’envoi de ces Hellos - inférieur à un seuil déterminé), une valeur grande est affectée à r ; o sinon le nœud est pénalisé (valeur de r faible). Le vecteur target = (Q_value_1, r, Q_value_3) est alors créé, où r vient remplacer le score de l’action choisie (dans ce cas r remplace Q_value_2) et on continue à entraîner le réseau avec ce vecteur cible. De manière simplifiée, on vient ainsi dire au réseau de neurones qu’il aurait dû obtenir la valeur « r » pour l’action T2, et non pas le score Q_value_2 qu’il avait obtenu. Les poids w du réseau de neurones sont alors adaptés de manière à fournir un réseau de neurones qui, dans le futur, renverra en sortie le vecteur (Q_value_1, r, Q_value_3) lorsque les même informations « states » lui seront fournies. Ces étapes sont réitérées jusqu’à ce que la différence entre le score prédit par le réseau de neurones pour l’action choisie soit suffisamment proche (par rapport à un seuil prédéfini par exemple) de la valeur r qu’il aurait effectivement dû obtenir : la convergence du réseau de neurones est alors estimée suffisante. A l’issue de cette phase préliminaire d’apprentissage, le réseau de neurones obtenu 24 est implémenté dans chaque nœud N du réseau, au sein du module d’évaluation de périodes 23.