• Aucun résultat trouvé

Chapitre 10 Preuves de concepts 95

10.6 Modification du multi-mod`ele

10.6.1 Modification ou ´echange d’un mod`ele par un autre . . . 106 10.6.2 Ajout et suppression d’un mod`ele . . . 106 10.6.3 Ajout d’un lien entre deux mod`eles . . . 108

10.7 Synth`ese . . . 108

10.1 Introduction

La d´emarche utilis´ee dans ce chapitre est la suivante. Le but recherch´e est de se mettre `a la place d’une personne qui construit un multi-mod`ele `a partir de mod`eles et simulateurs existants qu’elle ne maˆıtrise pas totalement. C’est-`a-dire, par exemple, que le code source des simulateurs n’est accessible qu’au travers une API (Application Programming Interface), que les mod`eles utilis´es sont hors de son champ disciplinaire, etc.

Ainsi, les mod`eles utilis´es dans ce chapitre sont d´elib´er´ement simples. Cependant ceux-ci sont issus de travaux existants. Ensuite, le domaine duquel proviennent les mod`eles est, l`a aussi, d´elib´er´ement en dehors du champ des r´eseaux ambiants. Enfin, la seule interaction possible avec les simulateurs r´eutilis´es se fait via l’API qui nous est fournie.

Les preuves de concept apport´ees par ce chapitre se font au travers de la d´emarche de conception et d’utilisation d’un multi-mod`ele particulier. Ces derni`eres ciblent les points suivants :

– La r´eutilisation de simulateurs et de mod`eles existants. – L’expression des choix de multi-mod´elisation.

– La prise en compte de niveaux d’abstraction diff´erents (espace et temps).

– La modularit´e de l’approche (ajout, suppression et ´echange de mod`eles et de simulateurs).

Pour des raisons de clart´e, nous ne ciblons pas dans ce chapitre l’interaction de simulateurs poss´edant des politiques d’ex´ecution diff´erentes. En effet, le chapitre pr´ec´edent d´emontre de mani`ere th´eorique que le m´eta-mod`ele AA4MM respecte les contraintes de causalit´e quels que soient les simulateurs impliqu´es. De plus, une telle situation est compl`etement transparente pour le m´eta-mod`ele propos´e. Le chapitre suivant et les travaux exp´erimentaux faits dans le domaine des r´eseaux ambiants montrent un exemple d’un tel cas.

10.2 Exemple utilis´e : un multi-mod`ele proie-pr´edateur

com-pos´e de simulateurs NetLogo en interaction

10.2.1 Utilisation de NetLogo

Nous avons choisi d’utiliser le logiciel de simulation NetLogo [Wilensky, 1999]. Celui-ci est bien connu de la communaut´e multi-agent. En effet, ce dernier est souvent utilis´e de mani`ere p´edagogique pour introduire la mod´elisation et la simulation multi-agent ou pour concevoir des prototypes.

En plus de sa grande diffusion au sein de la communaut´e, nous avons choisi cet outil pour deux raisons. Tout d’abord, la plate-forme NetLogo poss`ede un grand nombre de mod`eles qui vont de la biologie aux math´ematiques en passant par les sciences sociales. Ensuite, cet outil poss`ede une API relativement bien document´ee qui permet d’interfacer cet outil avec un autre programme (dans notre cas l’implantation du m´eta-mod`ele AA4MM).

10.2.2 Cas d’´etude utilis´e : un multi-mod`ele proie-pr´edateur

Le mod`ele proie-pr´edateur d´ecrit la dynamique de deux populations : les proies et les pr´edateurs. Ce mod`ele est un exemple devenu classique dans le domaine de l’´ecologie et de la mod´elisation et simulation des ph´enom`enes collectifs (voir les utilisations faites dans [Michel, 2004; Grimm, 2005]). Le but vis´e dans cette section n’est pas de concevoir un mod`ele le plus r´ealiste possible mais de montrer, sur un exemple connu, l’application du m´eta-mod`ele AA4MM.

Nous souhaitons concevoir un multi-mod`ele proie-pr´edateur qui repr´esente les interactions entre une population de moutons, de loups et de bergers. Dans un premier temps, nous consid´erons des interactions relativement basiques entre ces diff´erentes populations : les loups mangent les moutons, les moutons mangent de l’herbe et les bergers tentent d’attrouper les moutons (voir la figure 10.1).

Pour construire notre multi-mod`ele, nous disposons des mod`eles fournis avec la plate-forme NetLogo. Cette derni`ere propose un mod`ele de dynamique de population dans lequel des moutons29 mangent de l’herbe [Wilensky, 2001], un mod`ele proie-pr´edateur repr´esentant des loups qui mangent des moutons [Wilensky, 1997b] et un mod`ele d’agr´egation dans lequel des bergers attroupent des moutons [Wilensky, 1998b].

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 moutonEM (voir figure 10.2). On notera ce mod`elem1, il poss`ede un port d’entr´ee

x1et un port de sortiey1. Les donn´ees d’entr´ee sont not´eesdin1(t1) etdout1(t1),din1(t1)∈P M etdout1(t1)

∈EM (avecdout

2(t2)≥0)..

Figure10.2 – Mod`elem1 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 noterP M le type ”position des moutons”. Les sorties du mod`ele sont la quantit´e d’´energie perdue pour chaque mouton. On noteEM 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 sortiey2. Les donn´ees d’entr´ee sont not´eesdin2(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’´energieEM 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`elem2 repr´esentant la dynamique entre les loups et les moutons

et un port de sortiey3. Les donn´ees d’entr´ee sont not´eesdin

3(t3) etdout

3(t3),din

3(t3)∈EM etdout

3(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´eP 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´eEM) 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 din

1(t1)∈P M

donn´ee de sortie dout

1(t1)∈EM

deuxi`eme mod`ele (loups + moutons) m2 port d’entr´ee x2 port de sortie y2 donn´ee d’entr´ee din

2(t2)∈P M

donn´ee de sortie dout

2(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

Figure10.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 moutonsdout3(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 moutonsdout1(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

Figure10.6 – Graphe de d´ependance du multi-mod`ele moutons-loups-bergers

description notation

entr´ees du mod`elem1 IN1 ={(3,1)}

sorties du mod`ele m1 OUT1 ={(1,3)}

entr´ees du mod`elem2 IN2 ={(3,1)}

sorties du mod`ele m2 OUT2 ={(1,3)}

entr´ees du mod`elem3 IN3 ={(1,1); (2,1)}

sorties du mod`ele m3 OUT3 ={(1,1); (1,2)}

Lien dem1 `am3 L1

3={(1,1)}

Lien dem2 `am3 L23={(1,1)}

Lien dem3 `am1 L31={(1,1)}

Lien dem3 `am2 L32={(1,1)}

Figure10.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 dem1etm2 doivent ˆetre combin´es afin de fournir au mod`elem3 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 unartefact-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`elesm1et m2 sont des r´eels et la donn´ee d’entr´ee du mod`elem3 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´eesdout

1(t1= 1) etdout

2(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

dout

1(t1= 1) peut ˆetre associ´ee `a un intervalle Γ1=]1,3] et la donn´eedout

2(t2= 1.5) peut ˆetre associ´ee `a un intervalle de validit´e Γ2=]1.5,5]. Pour le troisi`eme mod`elem3seule la donn´eedout1(t1= 1) est valide pour t3∈]1,1.5]. Ensuite, les deux donn´ees sont valides en mˆeme temps pourt3∈]1.5,3]. Enfin, seule la donn´eedout2(t2= 1.5) est valide pourt3∈]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(doutn2(t1 = 1),Γ2) les donn´ees `a compo-ser. Composer les donn´ees doutn

1(t1) et doutn

2 (t2) signifie produire un nouvel ensemble de donn´ees comprenant : (doutn 1(t1)◦ doutn 2 (t2),Γ1T Γ2),(doutn 1(t1),Γ1\{Γ1T Γ2}) et(doutn 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 (doutn

1(t1),Γ1) et (doutn

2 (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 unm-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 unartefact-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 troisartefacts-d’interface(un pour chaque logiciel de simulation) not´esI1,I2etI3. Diff´erentes op´erations doivent ˆetre implant´ees au sein de chaqueartefact-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, lesartefacts-d’interface ne modifie le code interne de ce dernier.

1. L’op´erationinit()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´erationrun() 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´erationsgetOutputData()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´erationstop(), quant `a elle, termine l’instance de NetLogo.

Chaque lien du graphe de d´ependance donne naissance `a unartefact-de-couplage. Du mod`elem3 aux mod`eles m1 et m2, nous d´efinissons deux artefacts-de-couplage. Nous les notons C13 et C23. Ceux-ci ont pour rˆole respectif de faire le lien entre la donn´ee de sortie du mod`elem3 dout

3(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 L31 et l’

artefact-de-couplageC3

2 L32.

Pour le transfert des gains et des pertes d’´energie des moutons provenant des deux mod`elesm1etm2 vers la variation d’´energie au mod`elem3, nous d´efinissons unartefact-de-couplage. Celui-ci est not´eC31,2

et fait le lien entredout1(t1),dout2(t2) etdin3(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 lesm-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-agentA3doit, quant `a lui, attendre que lesm-agentsA1etA2lui 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`elem3 prend en param`etre initial une variation d’´energie nulle pour chaque mouton. Ce que l’on peut traduire pardout1(t

1)+dout2(t

2) = 0. Cette variation d’´energie sera donn´ee directement `a l’m-agent

A3 par nos soins.

Ainsi, le mod`elem3est param´etr´e puis l’m-agent A3 envoie les positions des moutons (dout

3(t

3)) aux autresm-agents A1 etA2via lesartefacts-de-couplage C3

1 etC3

2. De cette mani`ere lesm-agents A1etA2 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 desm-agents, des artefacts-d’interface 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 unmiddlewareexistant (JMS :Java Messaging Service) pour implanter lesartefacts-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.

Figure10.9 – Multi-mod`ele multi-agent moutons-loups-bergers : vue g´en´erale

10.4. Ex´ecutions des mod`eles

10.4 Ex´ecutions des mod`eles

Un fois les mod`eles initialis´es, la simulation se d´eroule suivant l’algorithme d´ecrit dans le chapitre pr´ec´edent. Afin d’´eviter toute redondance avec les exemples d´ej`a pr´esent´es, nous ne donnerons ici qu’un aper¸cu rapide de la phase d’ex´ecution des mod`eles. La principale diff´erence avec les exemples pr´ec´edents vient du fait que nous avons introduit des op´erations sur les donn´ees ´echang´ees. Le fait d’avoir plus de deux mod`eles ne pose aucun probl`eme puisque nous avons d´emontr´e que l’algorithme de simulation respecte la contrainte de causalit´e et n’introduit pas d’attente infinie pour un nombre quelconque et fini d’m-agents.

10.4.1 Phase de simulation

Nous avons vu pr´ec´edemment comment r´esoudre la situation de bloquage `a l’initialisation. Chaque mod`ele ´etant initialis´e et param´etr´e, chaquem-agent peut faire ex´ecuter son mod`ele, augmenter le temps de simulation et r´ecup´erer les donn´ees de sortie. La simulation dans NetLogo s’effectue par pas de temps (ou ”ticks”). De ce fait, les temps de simulation apr`es la premi`ere ex´ecution sontt1 =t2 =t3= 1. Les