• Aucun résultat trouvé

La structure algorithmique des simulateurs qui sont utilis´es pour ex´ecuter un mod`ele est en grande partie li´ee `a la gestion du temps consid´er´ee. Ainsi, `a chaque type de mod`ele tem- porel correspondent une ou plusieurs techniques g´en´eriques de simulation. Dans cette section nous allons grossi`erement pr´esenter les principes d’impl´ementation g´en´eraux qui sont utilis´es pour simuler les diff´erents mod`eles que nous avons pr´esent´es. La technique de simulation par int´egration pour les mod`eles continus, la simulation `a pas de temps constant dans le cas des mod`eles discrets et le principe d’´ech´eancier pour les mod`eles ´ev´enementiels.

2.6.1 Simulation des mod`eles continus

Il serait long et fastidieux de pr´esenter ici dans le d´etail les techniques de simulation qui se rapportent `a l’impl´ementation de mod`eles continus. D’autre part, nous verrons que l’approche multi-agents est par nature ´eloign´ee des mod`eles continus. En effet, le changement de comportement d’un agent est toujours un ´ev´enement ponctuel, et donc discret. Ce qui ne veut pas dire pour autant que les agents ne puissent ˆetre plong´es dans un environnement d´ecrit par un mod`ele continu. Cela ´etant dit, il faut savoir que la simulation de mod`eles continus pose de nombreux probl`emes dus `a la nature digitale de l’ordinateur : il est tout simplement impossible de reproduire la continuit´e de la dynamique d’un syst`eme car celui-ci ´evolue infiniment souvent alors que la simulation digitale impose des calculs ponctuels. Les m´ethodes qui permettent de r´esoudre ce probl`eme sont connues sous le nom de m´ethodes d’int´egration num´erique. Comme leur nom l’indique, il s’agit de m´ethodes math´ematiques qui prennent en compte plusieurs param`etres (valeurs pass´ees et/ou futures estim´ees, taux de changement, etc.) pour estimer la v´eritable valeur de l’´etat du syst`eme au plus pr`es.

2.6.2 Simulation des mod`eles discrets

Etant donn´ee la repr´esentation du temps utilis´e, les techniques d’impl´ementation employ´ees pour la simulation des mod`eles discrets sont sans aucun doute les plus simples `a mettre en œuvre. En effet, lorsque les fonctions qui impl´ementent la dynamique du syst`eme sont

3

On d´efinit parfois des ´etats tels que ta(s) = 0. Cela de mani`ere `a ce que le syst`eme produise imm´ediatement une valeur en sortie `a la suite d’une transition externe par exemple. On dit alors que s constitue un ´etat transitoire. De la mˆeme mani`ere, certains ´etats sont tels que ta(s) = ∞, on parle alors d’´etat passif.

2.6 Principales techniques d’impl´ementation 35

clairement d´efinies, il suffit de mettre en place un algorithme qui applique ces fonctions puis incr´emente le temps d’une unit´e. La figure 2.7illustre ce principe de simulation.

Fig. 2.7 – Principe de simulation d’un mod`ele discret.

Bien sˆur, tout n’est pas aussi simple dans le cas d’un syst`eme compos´e. Le simulateur doit dans ce cas impl´ementer les diff´erentes caract´eristiques li´ees au type du mod`ele consid´er´e (Moore, Mealy, etc.) et les algorithmes correspondants peuvent ˆetre tr`es diff´erents. Nous en verrons plusieurs exemples dans le contexte de la simulation multi-agents. C’est pourquoi nous n’en dirons ici pas plus.

2.6.3 Simulation par ´ev´enements

Il existe trois politiques d’impl´ementation couramment utilis´ees pour la simulation de mo- d`eles `a ´ev´enement discret : par ordonnancement d’´ev´enements (event sceduling), par activit´es (activity scanning) et par interaction de processus (interaction process) qui est une combinai- son des deux premi`eres.

Ordonnancement d’´ev´enements

La simulation par ordonnancement d’´ev´enements est la technique la plus fr´equemment utilis´ee. Elle consiste `a d´eterminer au fur et `a mesure de la simulation les futurs ´ev´enements qui doivent intervenir sur le syst`eme. Ainsi, dans ce type de simulation, tous les ´ev´enements sont d´etermin´es au pr´ealable. Les ´ev´enements externes sont g´en´er´es par ce qui peut ˆetre appel´e un g´en´erateur d’´ev´enements et les ´ev´enements internes sont produits par les composants syst`eme eux-mˆemes. Chaque ´ev´enement ainsi cr´e´e est plac´e dans une liste d’´ev´enements qui est ordonn´ee de mani`ere chronologique. Au lancement de la simulation, l’horloge logique de la simulation est avanc´ee jusqu’`a la date de l’´ev´enement chronologiquement le plus proche qui est alors retir´e de la liste et ex´ecut´e. Son ex´ecution peut engendrer la planification d’un nouvel ´ev´enement qu’il faut bien sˆur int´egrer dans la liste d’´ev´enements. La figure2.8r´esume l’algorithme qui correspond `a ce principe de simulation.

La simulation de file d’attente est un exemple simple de ce type de programmation. Par exemple, pour simuler un syst`eme ”station-service” on peut d´efinir les ´ev´enements E= {”arriv´ee d’une voiture dans la queue”, ”d´ebut de service”, ”fin de service”}. L’´ev´enement ”arriv´ee d’une voiture” est un ´ev´enement externe tandis que les deux autres sont des ´ev´enements internes. Lorsqu’une voiture d´ebute son service, la date de l’´ev´enement ”fin de service” est imm´ediate-

Avancer l'horloge jusqu'à la date de l'événement le plus proche dans la liste des

événements

retirer cet événement de la liste et l’exécuter

réordonner la liste des événements si besoin rajouter les nouveaux événements (internes et externes) produits dans la

liste des événements

Fig. 2.8 – Principe de simulation par ordonnancement d’´ev´enements.

ment calcul´ee et l’´ev´enement est alors planifi´e et sera ex´ecut´e `a la date pr´evue. L’´ev´enement ”fin de service” est donc une cons´equence de l’´ev´enement ”d´ebut de service”.

Analyse d’activit´es

Dans le cas d’une simulation par activit´es, l’occurrence de certains ´ev´enements est assu- jettie `a une r`egle d’activation qui est conditionn´ee par l’´etat du syst`eme. Autrement dit, ces ´ev´enements ne sont pas planifi´es mais d´eclench´es, au fur et `a mesure de la simulation, lorsque certaines conditions sont remplies. L’id´ee qui se cache derri`ere cette approche est de pouvoir d´efinir des ´ev´enements dont on ne peut pas connaˆıtre `a l’avance la date de d´eclenchement. Par exemple, l’´ev´enement collision interviendra si deux v´ehicules rentrent en contact. Pour mettre en place cette technique, il suffit, pour chaque ex´ecution d’un nouvel ´ev´enement, de v´erifier si celui-ci engendre un ´etat du syst`eme qui v´erifie les conditions de d´eclenchement de ce type d’´ev´enements.

Interaction de processus

Cette approche est une combinaison des deux premi`eres dans le sens o`u les deux m´ethodes pr´ec´edentes sont utilis´ees pour d´efinir le comportement d’un composant. Celui-ci est alors sp´e- cifi´e par un ensemble de routines qui g`erent l’´etat du composant `a la mani`ere d’un programme s´equentiel, d’o`u le terme processus : gestion des entr´ees, proc´edures conditionnelles, g´en´era- tion des sorties, etc. Dans le cas d’un syst`eme compos´e on a alors un ensemble de processus en interaction. Il est cependant important de ne pas confondre ce type de syst`eme avec un ensemble de programmes en interaction o`u le temps n’est pas mod´elis´e. Dans le cadre d’une