• Aucun résultat trouvé

Partie I Le contexte industriel et le positionnement scienti-

Chapitre 3 Le contexte théorique et scientifique

4.3 L’auto-régulation du système

4.3.8 L’algorithme retenu pour l’auto-régulation du système

En utilisant les agents, les mécanismes de coopération et de régulation présentés pré- cédemment, nous déduisons les procédures et fonctions principales qui découlent de l’en- semble de ces choix. Deux procédures sont dédiées aux agents disciplinaires, qui ont à gérer à la fois des messages d’exécution RéceptionMessageExécutionAgentDisciplinaire et de modification TraitementModificationAgentDisciplinaire. La procédure TraitementMo-

dificationsAgentObjectifEntrée permet aux agents objectifs d’entrée de gérer les messages

de modification, qu’ils reçoivent. La procédure TraitementExécutionAgentObjectifSortie génère des modifications en provenance des agents objectif de sortie. Enfin la procédure

RéceptionMessageModificationAgentboucle permet aux agents boucles d’obtenir la conver-

gence des valeurs à la fois entrées/sorties du système.

Procédure TraitementModificationAgentDisciplinaire début

1. Pour chaque sortie j de l’agent faire

(a) modification-retenue = RecevoirRequêtes-Et-SélectionnerPlusCritique (j) ; 2. Pour chaque dépendance de la sortie j avec une entrée i faire

(a) construire l’objectif pour l’entrée i, correspondant à la modification-

retenue

fait

3. Pour chaque entrée i de l’agent faire

(a) objectif-retenue = choisir l’objectif le plus critique de l’entrée i (b) si l’entrée i n’a pas de fournisseur alors

i. adapter la valeur de l’entrée en accord avec l’objectif-retenue (c) sinon

i. envoyer une demande de modification en accord avec l’objectif-retenue à l’agent fournisseur

fin si fait

fin

Fig. 4.6 – Procédure de traitement des messages de modification d’un agent disciplinaire

La procédure TraitementModificationAgentDisciplinaire

L’algorithme de la figure 4.6 résume la phase de gestion des modifications par un agent disciplinaire. En faisant appel à la fonction RecevoirRequêtes-Et-SélectionnerPlusCritique

4.3. L’auto-régulation du système

(fig 4.7), l’agent reçoit les demandes de modification provenant des consommateurs de cha- cune de ses sorties (fig 4.6, étape (1)) et sélectionne pour chaque sortie la demande la plus critique (fig 4.7, (2)). En utilisant les relations de dépendances entre ses entrées/sorties, il construit la requête associée au niveau de chaque entrée (fig 4.6, (2)). Enfin, il sélectionne la demande de modification retenue pour chaque entrée (fig 4.6, (3a)) et la transmet au fournisseur (fig 4.6, (3c)) ou l’effectue (fig 4.6, (3b)). Lorsque les demandes de modi- fications disparaissent, tous les agents présents dans son environnement sont satisfaits. Le système a alors convergé vers un consensus, pour lequel toutes les contraintes sont satisfaites.

Fonction RecevoirRequêtes-Et-SélectionnerPlusCritique (Sortie j) début

1. tant que toutes les requêtes de la sortie j n’ont pas été reçues faire (a) recevoir les requêtes pour la sortie j provenant des k consommateurs fin tant que

2. modification-retenue = choisir la requête la plus critique pour la sortie j parmi les k requêtes reçues

fin

Fig. 4.7 – Fonction de réception et de sélection des messages de modification d’une sortie d’un agent

La procédure RéceptionMessageExécutionAgentDisciplinaire

L’algorithme 4.8 détaille le traitement des messages d’exécution par un agent disci- plinaire. Cette phase est simple, l’agent reçoit l’ensemble de ses messages d’exécution, puis exécute son modèle et enfin envoie les nouvelles valeurs de ses sorties à ses agents utilisateurs.

La procédure TraitementModificationsAgentObjectifEntrée

Le rôle d’un agent objectif d’entrée est de choisir la valeur du paramètre, qui satisfasse au mieux les demandes de ses successeurs. Cet agent ne possède aucun fournisseur de paramètre et par conséquent son raisonnement s’organise de la manière suivante :

– recevoir les demandes de modification provenant de ses consommateurs ; – modifier la valeur du paramètre en accord avec les demandes ;

– informer ses consommateurs de la nouvelle valeur choisie. Le détail de cet algorithme est décrit en figure 4.9.

Procédure RéceptionMessageExécutionAgentDisciplinaire début

1. tant que tous les messages d’exécution n’ont pas été reçu pour toutes les entrées faire

(a) recevoir les messages d’exécution provenant des fournisseurs fin tant que

2. exécuter le modèle

3. envoyer les valeurs des sorties aux consommateurs fin

Fig. 4.8 – Procédure de traitement des messages d’exécution d’un agent disciplinaire

Procédure TraitementModificationsAgentObjectifEntrée début

1. objectif-retenu = RecevoirRequêtes-Et-SélectionnerPlusCritique (sortieAgent) ; 2. adapterPasModification(objectif-retenu) ;

3. modifier la valeur de l’entrée

4. envoyer la nouvelle valeur aux agents consommateurs sous la forme d’un mes- sage d’exécution

fin

Fig. 4.9 – Procédure de traitement des messages de modification d’un agent objectif d’entrée

La procédure TraitementExécutionAgentObjectifSortie

À l’inverse les agents objectifs de sortie ne possèdent aucun consommateur de para- mètre et leur rôle est de générer des demandes de modification, qui permettent au système de tenir compte des performances souhaitées par le concepteur. À chaque itération, leur raisonnement local suit donc les étapes décrites en figure 4.10.

Procédure TraitementExécutionAgentObjectifSortie début

1. recevoir un message d’exécution

2. construire et envoyer un message de modification en accord avec le domaine de validité du paramètre

fin

4.3. L’auto-régulation du système

La procédure RéceptionMessageModificationAgentBoucle

Dans le sens direct (exécution), un agent boucle reçoit la nouvelle valeur calculée par le système. Il agit alors comme un agent objectif de sortie et réalise donc la procédure

TraitementExécutionAgentObjectifSortie.

Dans le sens des demandes de modification, il reçoit les demandes de modification provenant des autres parties du système comme le ferait un agent objectif d’entrée (Trai-

tementModificationsAgentObjectifEntrée).

La différence est qu’en plus de la comparaison de la criticité des modifications reçues avec celle de son objectif, il a aussi à comparer celle due à la différence de valeur obtenue entre l’entrée et la sortie du système. Il choisit alors la demande la plus critique et modifie sa valeur.

Procédure TraitementModificationsAgentBoucle début

1. objectif-modifications = RecevoirRequêtes-Et-SélectionnerPlusCritique (sor- tieAgent) ;

2. objectif-différence = CriticitéDeLaDifference (valeurEntrée, valeurSortie) 3. objectif-retenu = SélectionnerPlusCritique (objectif-modifications, objectif-

différence)

4. adapterPasModification(objectif-retenu) ; 5. modifier la valeur de l’entrée

6. envoyer la nouvelle valeur aux agents consommateurs sous la forme d’un mes- sage d’exécution

fin

Fig. 4.11 – Procédure de traitement des messages de modification d’un agent boucle