• Aucun résultat trouvé

Chapitre 10 Preuves de concepts 95

10.3 Conception du multi-mod` ele

Cette section a pour but d’illustrer les diff´erentes ´etapes n´ecessaires `a la conception et la mise en place, via le m´eta-mod`ele AA4MM, d’un multi-mod`ele compos´e de mod`eles ´el´ementaires existants.

10.3. Conception du multi-mod`ele

Figure 10.1 – Ph´enom`ene `a mod´eliser et `a simuler

10.3.1 Mod`eles

La premi`ere ´etape de conception du multi-mod`ele consiste `a d´efinir au niveau s´emantique quels sont les mod`eles et `a sp´ecifier les entr´ees et sorties de chaque mod`ele ´el´ementaire.

Le premier mod`ele repr´esente des moutons qui mangent de l’herbe. La dynamique de ce mod`ele est la suivante : le mod`ele d´etermine la quantit´e d’herbe pr´esente par unit´e de surface (patchs) et, `a partir de la position de chaque mouton, calcule la quantit´e d’´energie ing´er´ee par chaque ovid´e. Les donn´ees d’entr´ee de ce mod`ele sont donc les positions des moutons P M et les donn´ees de sortie, la quantit´e d’´energie gagn´ee pour chaque mouton EM (voir figure 10.2). On notera ce mod`ele m1, il poss`ede un port d’entr´ee x1et un port de sortie y1. Les donn´ees d’entr´ee sont not´ees din1(t1) et dout1(t1), din1(t1) ∈ P M et dout1(t1) ∈ EM (avec dout2(t2) ≥ 0)..

Figure 10.2 – Mod`ele m1 repr´esentant la dynamique entre les moutons et l’herbe

Le deuxi`eme mod`ele repr´esente des loups qui mangent des moutons. La dynamique de ce mod`ele est la suivante : le mod`ele d´etermine le comportement des loups et, `a partir des positions des moutons, ce dernier d´etermine si un mouton est attaqu´e. Pour des raisons d’illustration, lorsqu’un mouton se fait attaquer par un loup, celui-ci n’est pas d´evor´e mais perd de l’´energie. De cette mani`ere, les entr´ees du mod`ele sont donc les positions des moutons. On noter P M le type ”position des moutons”. Les sorties du mod`ele sont la quantit´e d’´energie perdue pour chaque mouton. On note EM le type ”variation d’´energie des moutons” (voir figure 10.3). On notera ce mod`ele m2, il poss`ede un port d’entr´ee x2 et un port de sortie y2. Les donn´ees d’entr´ee sont not´ees din2(t2) et dout2(t2), din2(t2) ∈ P M et dout2(t2) ∈ EM (avec dout2(t2) ≤ 0).

Le dernier mod`ele repr´esente des bergers qui attroupent des moutons. La dynamique de ce mod`ele est la suivante : les moutons bougent en fonction de leur ´energie et les bergers tentent de les rassembler. Les entr´ees du mod`ele sont donc la quantit´e d’´energie EM des moutons et les sorties sont l’ensemble des positions des moutons P M (voir figure 10.4). On notera ce mod`ele m3, il poss`ede un port d’entr´ee x3

Figure 10.3 – Mod`ele m2 repr´esentant la dynamique entre les loups et les moutons

et un port de sortie y3. Les donn´ees d’entr´ee sont not´ees din3(t3) et dout3(t3), din3(t3) ∈ EM et dout3(t3) ∈ P M .

Figure 10.4 – Mod`ele repr´esentant la dynamique entre les bergers et les moutons

On fera l’hypoth`ese que les donn´ees ´echang´ees sont d´ecrites dans le mˆeme formalisme et que le nombre de moutons (not´e #moutons) est identique dans chaque mod`ele. Le type de donn´ee ”positions des moutons” (not´e P M ) est une matrice 2×#moutonsqui met en correspondance le num´ero du mouton avec sa position. Le type de donn´ee ”variation d’´energie des moutons” (not´e EM ) est une matrice 2 × #moutons qui met en correspondance le num´ero du mouton avec la variation de son ´energie.

description notation premier mod`ele (moutons + herbe) m1

port d’entr´ee x1

port de sortie y1

donn´ee d’entr´ee din1(t1) ∈ P M donn´ee de sortie dout1(t1) ∈ EM deuxi`eme mod`ele (loups + moutons) m2

port d’entr´ee x2

port de sortie y2

donn´ee d’entr´ee din2(t2) ∈ P M donn´ee de sortie dout2(t2) ∈ EM troisi`eme mod`ele (bergers + moutons) m3

port d’entr´ee x3 port de sortie y3 donn´ee d’entr´ee din3(t3) ∈ EM donn´ee de sortie dout3(t3) ∈ P M nombre de moutons #moutons

positions des moutons P M variation d’´energie des moutons EM

Figure 10.5 – Notations des mod`eles

10.3.2 Graphe de d´ependance

`

A partir des mod`eles ainsi sp´ecifi´es, le graphe de d´ependance peut ais´ement se construire. La figure 10.6 illustre le graphe de d´ependance tandis que la figure 10.7 donne l’ensemble des notations formelles. Il est `a noter que les donn´ees repr´esentant les positions des moutons dout3(t3) sont n´ecessaires `a l’ex´ecution des mod`eles m1 et m2. Ensuite les donn´ees repr´esentant la variation d’´energie des moutons dout1(t1) et dout2(t2) doivent ˆetre combin´ees pour pouvoir ˆetre consomm´ees par le troisi`eme mod`ele. Nous explicitons la composition dans la section suivante.

10.3. Conception du multi-mod`ele

Figure 10.6 – Graphe de d´ependance du multi-mod`ele moutons-loups-bergers description notation

entr´ees du mod`ele m1 IN1 = {(3, 1)} sorties du mod`ele m1 OUT1 = {(1, 3)} entr´ees du mod`ele m2 IN2 = {(3, 1)} sorties du mod`ele m2 OUT2 = {(1, 3)} entr´ees du mod`ele m3 IN3 = {(1, 1); (2, 1)} sorties du mod`ele m3 OUT3 = {(1, 1); (1, 2)}

Lien de m1 `a m3 L1 3= {(1, 1)} Lien de m2 `a m3 L2 3= {(1, 1)} Lien de m3 `a m1 L3 1= {(1, 1)} Lien de m3 `a m2 L3 2= {(1, 1)} Figure 10.7 – Notation du grape de d´ependance

10.3.3 Composition de donn´ees

Dans cette section, nous d´efinissions ce que signifie composer les donn´ees ´echang´ees et comment cela est pris en compte dans le m´eta-mod`ele. C’est le cas, dans notre exemple, avec l’´energie des moutons. En effet, les gains et pertes d’´energies issus de m1et m2 doivent ˆetre combin´es afin de fournir au mod`ele m3

une donn´ee repr´esentant la variation d’´energie de chaque mouton.

Comme nous avons fait l’hypoth`ese de r´eutiliser des mod`eles existants, nous consid´erons que ceux-ci ne peuvent composer eux mˆeme les donn´ees. La composition doit donc se faire en dehors de tous les mod`eles. Celle-ci sera effectu´ee par un artefact-de-couplage.

Au niveau s´emantique, la composition est relativement simple `a d´efinir puisqu’il suffit d’additionner les gains et les pertes d’´energie : din3(t3) = dout2(t2) + dout1(t1). On dira que l’op´erateur de composition est l’op´erateur +.

Au niveau syntaxique, si les donn´ees `a composer sont dans des formalismes diff´erents, il faut r´esoudre les conflits avant la composition. Par exemple, si les donn´ees issues des mod`eles m1et m2 sont des r´eels et la donn´ee d’entr´ee du mod`ele m3 est enti`ere (dout2(t2) ∈ R, dout1(t1) ∈ R+ et dout3(t3) ∈ Z) alors il faut transformer le r´esultat de la somme qui est r´eel en un entier. Dans notre exemple, nous faisons l’hypoth`ese qu’il n’y a pas de conflit au niveau syntaxique.

Enfin au niveau dynamique, il faut tenir compte des intervalles de validit´e lors de la composition des donn´ees. Prenons comme exemple deux donn´ees dout1(t1= 1) et dout2(t2= 1.5) associ´ees `a leurs intervalles de validit´e Γ1et Γ2. Ces intervalles Γ1 et Γ2 ne sont pas toujours de mˆeme taille. Par exemple la donn´ee dout1(t1= 1) peut ˆetre associ´ee `a un intervalle Γ1=]1, 3] et la donn´ee dout2(t2= 1.5) peut ˆetre associ´ee `a un intervalle de validit´e Γ2=]1.5, 5]. Pour le troisi`eme mod`ele m3seule la donn´ee dout1(t1= 1) est valide pour t3∈]1, 1.5]. Ensuite, les deux donn´ees sont valides en mˆeme temps pour t3∈]1.5, 3]. Enfin, seule la donn´ee dout2(t2= 1.5) est valide pour t3∈]3, 5].

Afin de ne pas remettre en question la contrainte de causalit´e et d’utiliser l’algorithme de simulation pr´esent´e au chapitre pr´ec´edent, nous proposons de composer les intervalles de validit´e en mˆeme temps que les donn´ees.

Soit ◦ l’op´erateur de composition. Soit (doutn1(t1), Γ1) et (doutn20(t1 = 1), Γ2) les donn´ees `a compo-ser. Composer les donn´ees doutn1(t1) et doutn

0

2 (t2) signifie produire un nouvel ensemble de donn´ees comprenant :

(doutn1(t1) ◦ doutn20(t2), Γ1T Γ2), (doutn1(t1), Γ1\{Γ1T Γ2}) et (doutn

0

2 (t2), Γ2\{Γ1T Γ2}).

Il est `a noter que cette op´eration de composition devra ˆetre automatiquement effectu´ee par les artefact-de-couplage et que celle-ci ne change en rien l’algorithme de simulation propos´e. La figure suivante (figure 10.8) illustre cette op´eration de composition.

Figure 10.8 – Composition de deux donn´ees (doutn1(t1), Γ1) et (doutn20(t1 = 1), Γ2) par un artefact-de-couplage. Chaque intervalle de validit´e est repr´esent´e par un rectangle sur l’axe du temps de simulation (rouge pour Γ1et bleu pour Γ2). Les donn´ees compos´ees sont affect´ees `a un nouvel intervalle de validit´e : Γ1T Γ2 (repr´esent´e par un rectangle violet).

10.3.4 Cr´eation des entit´es propres au m´eta-mod`ele AA4MM

Une fois le graphe de d´ependance ´etabli, il est relativement simple de cr´eer les entit´es propres au m´eta-mod`ele AA4MM. Il faut tout d’abord cr´eer pour chaque logiciel de simulation un m-agent. Ensuite, il faut ´etablir l’interface entre cet m-agent et le logiciel de simulation g´er´e : l’artefact-d’interface. Enfin, pour chaque lien du graphe de d´ependance, il faut d´efinir un artefact-de-couplage. La figure 10.9 donne une vue g´en´erale des entit´es composant le multi-mod`ele multi-agent (un exemple de code est donn´e en annexe).

L’artefact-d’interface fait office d’interface entre l’m-agent et le logiciel de simulation. Nous d´efinissons trois artefacts-d’interface (un pour chaque logiciel de simulation) not´es I1, I2et I3. Diff´erentes op´erations doivent ˆetre implant´ees au sein de chaque artefact-d’interface (voir chapitre 8). Nous ne donnons pas ici le d´etail complet de l’implantation de chaque op´eration mais seulement les grandes lignes. Il est important de noter que chaque op´eration utilise uniquement les fonctions fournies par l’API NetLogo (en Java). En aucun cas, les artefacts-d’interface ne modifie le code interne de ce dernier.

1. L’op´eration init() cr´ee une instance de NetLogo, charge le mod`ele (le fichier .nlogo correspondant) et param`etre celui-ci.

10.3. Conception du multi-mod`ele

2. L’op´eration run() lance l’ex´ecution du mod`ele pour un pas de simulation. En effet, la plate-forme NetLogo ex´ecute ses mod`eles pas par pas. Cette op´eration est implant´ee en invoquant la m´ethode ”go” de NetLogo.

3. L’op´eration getCurrentTime() retourne le nombre de pas de simulation effectu´es (le nombre de ”ticks”).

4. Les op´erations getOutputData() et setInputData(di) se chargent de r´ecup´erer les donn´ees de sortie du mod`ele et d’injecter `a ce dernier les donn´ees d’entr´ee.

5. L’op´eration stop(), quant `a elle, termine l’instance de NetLogo.

Chaque lien du graphe de d´ependance donne naissance `a un artefact-de-couplage. Du mod`ele m3 aux mod`eles m1 et m2, nous d´efinissons deux artefacts-de-couplage. Nous les notons C3

1 et C3

2. Ceux-ci ont pour rˆole respectif de faire le lien entre la donn´ee de sortie du mod`ele m3 dout3(t3) et les donn´ees d’entr´ee des mod`eles m1 et m2 : din1(t1) et din2(t2). L’ artefact-de-couplage C3

1 poss`ede l’information L3 1 et l’ artefact-de-couplage C3

2 L3 2.

Pour le transfert des gains et des pertes d’´energie des moutons provenant des deux mod`eles m1et m2

vers la variation d’´energie au mod`ele m3, nous d´efinissons un artefact-de-couplage. Celui-ci est not´e C31,2 et fait le lien entre dout1(t1), dout2(t2) et din3(t3). Celui-ci effectue ´egalement la composition des donn´ees selon le principe pr´esent´e pr´ec´edemment (l’op´erateur de composition correspond `a l’op´erateur d’addition +).

Il ne reste plus qu’`a d´efinir les m-agents. Il y en a un pour chaque logiciel de simulation. On les notes A1, A2 et A3. En ce qui concerne la phase d’ex´ecution des mod`eles, le comportement de ces m-agents suit l’algorithme de simulation pr´esent´e au chapitre pr´ec´edent.

Pour la phase d’initialisation, il est n´ecessaire de sp´ecifier quelque peu les choses. L’initialisation des mod`eles m1 et m2 d´epend des positions g´en´er´ees par le mod`ele m3. Les m-agents A1 et A2 doivent, pendant la phase d’initialisation, attendre que l’m-agent A3 leur ait fourni les positions des moutons (dout3(t3) ∈ P M ) avant de pouvoir param´etrer leurs mod`eles. L’m-agent A3doit, quant `a lui, attendre que les m-agents A1et A2lui aient envoy´e les variations d’´energie initiales de chaque mouton. On se retrouve ici dans une situation bloquante `a l’initialisation. Pour r´esoudre cet inter-bloquage, on consid´erera que le mod`ele m3 prend en param`etre initial une variation d’´energie nulle pour chaque mouton. Ce que l’on peut traduire par dout1(t1)+dout2(t2) = 0. Cette variation d’´energie sera donn´ee directement `a l’m-agent A3 par nos soins.

Ainsi, le mod`ele m3est param´etr´e puis l’m-agent A3 envoie les positions des moutons (dout3(t3)) aux autres m-agents A1 et A2via les artefacts-de-couplage C13et C23. De cette mani`ere les m-agents A1et A2

peuvent initialiser et param´etrer leurs mod`eles respectifs (voir figure 10.10).

10.3.5 Choix d’implantation

Il est important de noter que le m´eta-mod`ele AA4MM n’impose pas l’utilisation d’un mˆeme langage de programmation pour tous ses composant et permet plus facilement, de par son essence distribu´ee (un ensemble d’entit´es en interaction), l’utilisation de langages h´et´erog`enes. Dans cet exemple, notre approche nous permet d’avoir trois instances de la plate-forme NetLogo fonctionnant de mani`ere concurrente. ´Etant donn´e que le logiciel NetLogo fournit une API en Java, nous avons implant´e l’ensemble des entit´es du m´eta-mod`ele AA4MM en Java.

Nous avons fait deux implantations de cet exemple. La premi`ere a consist´e simplement `a implan-ter l’ensemble des m-agents, des artefacts-d’inimplan-terface et des artefacts-de-couplage dans un programme concurrent (`a base de threads) qui est ex´ecut´e par une seule JVM (java virtual machine). Le but de cette premi`ere implantation ´etait de v´erifier exp´erimentalement le comportement du m´eta-mod`ele AA4MM. La deuxi`eme implantation a consist´e `a utiliser un middleware existant (JMS : Java Messaging Service) pour implanter les artefacts-de-couplage. Le but de cette implantation est de d´emontrer la possibilit´e d’utiliser AA4MM de mani`ere distribu´ee sur plusieurs machines. Bien que le choix de JMS est suffisant pour ´etablir une preuve de concepts, celui-ci s’est montr´e tr`es mauvais en terme de performance. Le temps de calcul variant du simple `a plus du double de la premi`ere `a la deuxi`eme implantation.

Figure 10.9 – Multi-mod`ele multi-agent moutons-loups-bergers : vue g´en´erale