[Next] [Previous] [Up] [Top]

chapitre 6 Le décideur, son organisation et son environnement

6-3.1 La simulation orientée objets


La simulation objets s'inspire très directement des premiers "paradigmes" de la programmation objets. L'ancêtre des langages orienté objets, SIMULA était d'ailleurs un langage de simulation. Un langage objets plus moderne comme Smalltalk encourage un type de programmation qu'on a appellé "message passing", le transfert de messages*1. Un tel programme est constitué par un ensemble d'objets (parfois appelés acteurs) qui interagissent entre eux par le biais de la transmission de messages (cf. Klahr 1982:1ff). Cette architecture peut être implémentée de façon variée. Dans le langage Ross (McArthur, Klahr et Narain 85) par exemple, chaque acteur possède un jeu d'attributs et un jeu de chablons (ou masques, angl.: "templates"). Les attributs caractérisent son état interne. Ce sont des variables qui peuvent être modifiées lorsque la simulation tourne. Chaque "template" possède un comportement associé qui sera activé lorsque l'acteur reçoit un message qui correspond ("match") à ce "template". Un comportement est un jeu de messages adressé aux acteurs ou à soi-même. Un processus computationnel est donc la résultante d'un certain comportement de ces acteurs que l'on lance avec des messages sélectifs.

Ce style de programmation se prête très naturellement à la simulation d'un système que l'on peut décrire par le comportement interagissant d'acteurs autonomes. Un langage objets permet de modéliser en tout cas les objets physiques d'une façon très naturelle. Un langage de simulation objets n'est rien d'autre qu'un langage objets possédant en plus (a) quelques objets spécialisés en simulation (comme une "montre"), (b) des comportements spécialisés (comme un "tick" qui fait avancer la montre ou un gestionnaire de "queues") et (c) des outils (ou comportements) qui aident le modéliseur et l'utilisateur à gérer le modèle. Ainsi, on peut considérer la simulation orientée objets comme un super-ensemble de la simulation d'événements discrets (cf. Zeigler: 91). Cette dernière est à son tour un super-ensemble de la simulation discrète des systèmes dynamiques (discutée dans la section précédente)

La simulation objets est utilisée profitablement si les conditions suivantes sont réunies:

En outre, la simulation objets est également très intéressante lorsqu'on peut classer les objets à modéliser dans des arbres de classification. Par le biais d'un mécanisme d'héritage, on peut composer des objets inférieurs dans la hiérarchie en les déclarant "enfant" d'un ou plusieurs autres objets. Par ce mécanisme, ils "héritent" des attributs (et valeurs par défaut) et des comportements des objets parents. Ainsi, on obtient un très bon outil pour décrire chaque type de comportement par rapport à une classe-type appropriée d'objets de simulation. Ainsi, on peut par exemple définir un objet "objet-déplaçant" au départ et le donner comme parent à tous les objets qui savent se déplacer. Ces objets (par ex. un camion) héritent de tous les comportements de cet objet parent (à moins que l'on décide de leur donner des comportements très spécifiques). Le travail de développement et de maintenance d'un tel système est donc grandement simplifié. La simulation objets connaît certes aussi ses inconvénients. On peut distinguer entre des maladies de jeunesse de ces langages*2 et des problèmes plus conceptuels. Les maladies de jeunesse sont toutes en rapport avec le problème suivant, à savoir que le modéliseur doit trop souvent s'occuper des tâches qui sont inintéressantes au plan conceptuel et que le système devrait déjà fournir en partie. Il s'agit notamment de la gestion de variables "autonomes" qui évoluent en fonction du temps et/ou de l'évolution d'autres variables de l'objet. Le comportement de ces attributs doit à présent être défini par le modéliseur sans compter sur le soutien de bons outils.

Mentionnons trois des critiques ou problèmes plus fondamentaux: (1) La simulation objets est très intensive en connaissances et elle demande un temps considérable de développement. Elle n'est appropriée que lorsqu'il est nécessaire de modéliser le comportement des objets dans un système et qu'il est important d'avoir une vue "naturelle" du système. Pour des questions de simple prévision, il est souvent beaucoup plus simple d'utiliser une technique mathématique traditionnelle. (2) Pour le moment, ce type de simulation repose sur un paradigme de traitement d'information. Il est donc seulement utile d'utiliser ce type de modèle si l'on pense pouvoir définir le comportement des objets en termes de messages à traiter et à envoyer, et le comportement du système en fonction de l'interaction de tels objets. (3) La modélisation des processus de réflexion dans un objet ne peut pas être très sophistiquée dans la plupart des langages de simulations. Toutefois, il est possible en principe de coupler des systèmes expert avec chaque objet et de parvenir à des mécanismes plus puissants de traitement d'information. Mais de façon générale, on peut dire que ces langages ne permettent encore au fond qu'une modélisation très sommaire des processus de traitement d'information qui ont par exemple lieu dans des objets décideurs (acteurs humains ou organisations).

La simulation orientée objet est populaire dans relativement peu de domaines. En premier lieu, il faut citer le domaine des processus d'entreprise et surtout de la production (angl.: "manufacturing") où cette méthodologie a fait ses preuves*3. Un autre domaine important est celui des simulations militaires (par ex. des "battle-fields", dont on discute un exemple dans la section suivante). Finalement, il faut encore mentionner le domaine des réseaux informatiques et des systèmes d'information. Toutefois, dans ce dernier domaine dominent les approches "bases de données" (cf. Dampney 92) ou quantitatives.


THESE présentée par Daniel Schneider - 19 OCT 94

Generated with WebMaker