• Aucun résultat trouvé

7.2 Agents de r´ esolution

7.2.2 Agent superviseur de fonctionnalit´ e

Un agent superviseur prend en charge la supervision d’une fonctionnalit´e seule, qui correspond `a une variable du CSP. Son rˆole est de d´efinir un ensemble de va- leurs possibles pour cette variable, en tenant compte des fonctionnalit´es disponibles dans l’environnement et des contraintes locales sur la variable. Cette section d´etaille le fonctionnement de l’agent superviseur en pr´ecisant son mod`ele de croyances, les perceptions et actions dont il dispose puis l’ensemble des plans qu’il utilise.

a) Perceptions et actions d’un agent superviseur

Le superviseur utilise uniquement la d´ecouverte de descriptions fournie par la pla- teforme. On d´efinit ainsi les deux actions et les deux perceptions :

registerDiscovery([f: Description]) est l’action de s’inscrire aupr`es du d´ecouvreur de descriptions en sp´ecifiant la description f comme filtre.

deregisterDiscovery([f: Description]) est l’action de suspendre l’inscription bas´ee sur le filtre f.

discovered([d: Description], [f: Description]) est la perception d´eclench´ee par la d´e- couverte d’une description de fonctionnalit´e.

disappeared([d: Description], [f: Description]) est la perception d´eclench´ee par la dis- parition d’une description de fonctionnalit´e.

La r´eception de perceptions n´ecessite l’ex´ecution pr´ealable des actions d’inscription. Les perceptions peuvent ensuite apparaˆıtre `a tout moment, sans n´ecessiter une re- cherche active de la part de l’agent.

b) Croyances et intentions internes d’un agent superviseur

En plus du mod`ele de croyances d´efini dans la section 7.2.1, un agent superviseur utilise les pr´edicats suivants :

(allowed [asg1:Assign1]) repr´esente que l’instanciation asg1 est autoris´ee (c’est-`a-dire que l’agent ne connait pas de contrainte qui l’interdise explicitement).

L’agent superviseur peut d´efinir les intentions suivantes :

(evaluating [asg1:Assign1]) d´esigne l’intention d’effectuer l’´evaluation d’une instan- ciation asg1 de la variable, c’est-`a-dire de chercher `a obtenir des interpr´etations pour cette instanciation.

(analysed [asg1:Assign1]) d´esigne l’intention d’analyser l’instanciation asg1 de la va- riable, c’est-`a-dire de d´eterminer si cette instanciation est permise en fonction des interpr´etations connues.

(solved [x:Variable]) d´esigne l’intention de d´eterminer l’ensemble des valeurs possibles pour la variable x.

c) Plans d’un agent superviseur

Cette section d´etaille les diff´erents plans que l’agent superviseur utilise pour g´erer ses connaissances et ses actions. Les plans de l’agent superviseur sont divis´es en quatre ensembles de plans :

– La mise en œuvre de la supervision, qui comprend notamment la d´ecouverte de fonctionnalit´es dans l’environnement.

– La collecte d’information sur les contraintes locales.

– La r´esolution des contraintes locales, qui permet de d´eterminer un ensemble de valeurs possibles pour la variable supervis´ee.

– L’expression de la description contextualis´ee de la fonctionnalit´e choisie.

Mise en œuvre de la supervision Cet ensemble de plans permet `a un agent superviseur de commencer la supervision d’une variable. En particulier, les plans per- mettent d’obtenir des descriptions de fonctionnalit´es, grˆace au m´ecanisme de d´ecou- verte fourni par FCAP. Deux plans sont utilis´es :

Initialisation de la supervision Le plan BeginSupervise (figure 7.8) permet de r´epondre `a une demande de supervision provenant d’un agent composeur. Au cours de ce plan, les informations concernant la variable sont tout d’abord enre- gistr´ees dans la base de croyance (1). Ensuite, le superviseur inscrit une requˆete correspondant `a la fonctionnalit´e recherch´ee aupr`es du syst`eme de d´ecouverte fournit par FCAP (2).

R´eception de descriptions de fonctionnalit´es d´ecouvertes Le plan CreateVa- lue (figure 7.8) permet de prendre en compte la d´ecouverte d’une description de fonctionnalit´e. Ce plan consiste principalement `a adopter l’intention d’´evaluer l’instanciation de la variable supervis´ee par la valeur qui vient d’ˆetre d´ecouverte (2). Le plan d´efinit de plus l’intention future de proposer `a l’agent composeur les valeurs trouv´ees (4). La date `a laquelle cette intention sera adopt´ee est calcul´ee par une fonction scheduleNewProposal(). `A chaque r´eception d’une nouvelle description, l’agent red´efinit son intention de proposer les valeurs au composeur en repoussant la date de proposition. Cela lui permet de collecter pr´ealablement des informations sur les nouvelles fonctionnalit´es qui apparaissent.

Collecte d’information sur les contraintes locales Pour chaque valeur po- tentielle de la variable supervis´ee, cet ensemble de plans permet au superviseur d’obte- nir des informations sur les contraintes locales portant sur l’instanciation de la variable par cette valeur. Pour cela, l’agent interroge les agents d’interpr´etation pr´esents dans l’environnement. Les plans de collecte d’interpr´etation sont les suivants. :

Mise en place de la collecte d’utilit´es d’interpr´etation Le plan CollectInter- pretations (figure 7.9) permet d’initialiser la collecte d’informations sur les in- terpr´etations relative `a l’instanciation de la variable par une valeur donn´ee. Ce plan consiste `a ouvrir une discussion dans laquelle des agents d’interpr´etation peuvent proposer leur interpr´etation pour cette instanciation (1).

R´eception des interpr´etations Le plan HandleInterpretation (figure 7.9) permet de prendre en charge une interpr´etation d’une instanciation. Pour chaque inter- pr´etation re¸cue (0), ce plan effectue une mise `a jour de la base de croyances,

BeginSupervise Ajouter croyance (= (Variable :desc a) (iota ?x (supervise me ?x))) Réception message $ag REQUEST (action (agent me) (BeginSupervise

:variable (Variable :desc $a) :problem $p)) Effectuer action registerDiscovery(a) Interroger croyance (= $x (iota ?x (supervise me ?x))) Perception discovered($d,$f) Prévoir but dt ATTEINDRE (solved x) Adopter but MAINTENIR (evaluating (Assign1 :val (Value :desc d) :var x))

Executer fonction $dt←scheduleNewProposal(x,d) CreateValue (0) (1) (2) (0) (2) (3) (1) (4)

Figure 7.8 – Les plans BeginSupervise et CreateValue

en stockant non seulement d’interpr´etation fournie, mais aussi quel agent d’in- terpr´etation la propose (1). Le plan d´efinit ensuite l’intention future d’analyser l’instanciation concern´ee par cette interpr´etation (3). Une fonction scheduleA- nalysis() calcule la date `a laquelle cette intention sera activ´ee (2). L’utilisation d’une intention future permet d’´eviter d’effectuer l’analyse juste apr`es chaque r´eception d’une interpr´etation, car de nouvelles interpr´etations peuvent arriver `a tout moment (et l’agent ne connait jamais le nombre d’interpr´etation qu’il doit recevoir).

R´esolution des contraintes locales Cet ensemble de plans permet `a l’agent de r´esoudre les contraintes locales, c’est-`a-dire de discriminer les valeurs qui pourront faire partie de la solution et les valeurs qui ne peuvent pas ˆetre choisies pour cette variable. L’agent utilise les coˆuts et les coˆuts limites pour d´eterminer si la valeur est autoris´ee. Deux plans sont utilis´es :

D´etermination des valeurs acceptables Le plan AnalyzeValue (figure 7.10) per- met de d´eterminer si une valeur est acceptable pour la variable supervis´ee. Pour cela, le plan collecte tout d’abord toutes les interpr´etations connues pour cette valeur (1). La fonction selectInterpretations1() lui permet de s´electionner les interpr´etations utilis´ees, en particulier lorsque plusieurs interpr´etations de mˆeme type sont disponibles (2). La fonction isAllowed1() d´etermine ensuite si l’instanciation consid´er´ee est permise ou non (3). Cette fonction s’appuie sur les coˆuts et les coˆuts limites pour effectuer ce choix. Le plan d´etermine ensuite si l’autorisation pour cette instanciation a ´et´e modifi´ee (5). Si elle a ´et´e modifi´e, il met `a jour les connaissances (7), puis d´efinit l’intention future de r´esoudre le CSP en tenant compte de cette modification (9). La date `a laquelle le CSP doit ˆ

etre r´esolu est calcul´e par une fonction scheduleUpdatedProposal(). Comme pr´ec´edemment, l’utilisation d’une intention future ´evite `a l’agent d’effectuer la proposition trop tˆot, alors que de nouvelles informations pourraient lui parvenir.

HandleInterpretation CollectInterpretation

Ajouter croyance

(cspEval1 util asg1) (B ia (cspEval1 util asg1))

Executer fonction

$dt←scheduleAnalysis(asg1)

Réception message

$ia INFORM (cspEval1 $util $asg1)

Activation but

(evaluating $asg1)

Créer discussion

SUBSCRIBE

(any ?u (cspEval1 ?u asg1)

Prévoir but dt ATTEINDRE (analysed asg1) (0) (2) (3) (1) (0) (1)

Figure 7.9 – Les plans CollectInterpretations et HandleInterpretation

Proposition des valeurs au composeur Le plan SetAllValues (figure 7.10) per- met de finaliser la recherche et de proposer au composeur les valeurs pour la variable supervis´ee. Ce plan v´erifie tout d’abord qu’il n’existe aucune analyse d’interpr´etation en cours (1). Si c’est le cas, ce plan se termine directement. Sinon, le plan obtient l’ensemble des instanciations consid´er´ees comme valides pour la variable supervis´ee (2), et stocke la liste des valeurs possibles dans sa base de croyance (3). Le plan n’envoie pas directement cette liste au composeur, mais un plan standard l’informe automatiquement le composeur, `a condition qu’il ait demand´e `a ˆetre tenu inform´e de la liste des valeurs de la variable.

Expression de la description contextualis´ee de la fonctionnalit´e choi- sie Afin de construire une description de la configuration adapt´ee, l’agent compo- seur doit obtenir aupr`es des agents superviseurs une description contextualis´ee de la fonctionnalit´e choisie. Le superviseur utilise des informations fournies par les agents d’interpr´etation pour construire cette description. Un plan est utilis´e pour cela : Expression de description de fonctionnalit´e Le plan DescribeValue (figure 7.11)

construit la description contextualis´ee associ´ee `a une valeur. Il obtient tout d’abord la liste des agents d’interpr´etation dont les interpr´etations ont ´et´e rete- nues (1). Il demande ensuite `a chacun de ces agents de lui fournir une description de l’interpr´etation effectu´ee (2-3). Le plan utilise ensuite une fonction aggre- gateComposableDescription() pour construire une description contextualis´ee de la fonctionnalit´e, selon le principe d´ecrit dans la section 6.2.4 (6). Enfin, il stocke la description obtenue dans sa base de croyance (7), et l’envoie `a l’agent composeur (8).