9. L'environnement
Un agent ne peut exister sans environnement et sans systeme
multi-agents ,
Donc l'environnement est une structure dans laquelle l'agent
evolue. Un agent va agir sur son environnement et l'environnement va agir sur
l'agent.
On retrouve cette notion de boucle de retro-action dans la
« commande » de Francisco Varela [Varela, 19 89].
Fig.10 :Shema represente la notion de
boucle.
Cette structure peut etre centralisee et on la represente comme
un bloc monolithique. Elle peut aussi etre formee de cellules reunies en reseau
et on la represente sous forme d'un automate cellulaire. On parle dans ce
dernier cas d'environnement distribue. Chaque cellule se comporte comme un
environnement centralise en miniature.
Ce qui distingue un environnement distribue d'un environnement
centralise tient en quatre points :
ü L'etat de la cellule depend des autres cellules qui
l'environnent et donc aussi des influences produites par les agents dans les
cellules voisines.
ü La perception des agents s'etend generalement au-dela
d'une cellule , ce qui fait qu'il n'est pas possible d'envoyer a l'agent
uniquement les informations de l'etat de la cellule sur laquelle il se
trouve.
ü Les agents se deplacent de cellule en cellule , ce qui
fait qu'il faut gerer les liens que les agents entretiennent avec une cellule
particuliere.
ü Des signaux peuvent se propager de cellule en cellule.
Cette propagation prend un certain temps et il faut alors synchroniser le
deplacement des signaux avec les mouvements des agents.
10. Communication entre les agents
10.1. Communication asynchrone :
Reponse non donnee immediatement. On demande et on n'attend pas
la reponse, on fait autre chose en attendant.
10.2. Communication synchrone :
La communication synchrone est celle que l'on a le plus
l'habitude de manipuler : c'est, par exemple , un appel de methode. Un objet
demande quelque chose a un autre objet et attend la reponse avant de poursuivre
son execution.
10.3. Communication directe (monocast) :
On discute directement d'un agent avec un autre agent : les deux
agents sont en communication directe. En fonction des implementations, les deux
objets se "connaissent" directement via leurs references, connaissent
un proxy de l'objet ou ne connaissent que le nom de l'objet et
utilisent les services d'un facteur pour delivrer le message. Les diverses
implementations dependant du niveau d'independance que l'on veut donner aux
agents.
10.4. Communication en groupe de diffusion (multicast)
:
Inscription a une liste de diffusion et reception de tous les
messages qui y sont associes (utilisation des sockets multicast).
La difference entre la communication directe et les listes de
diffusion, est exactement la meme que celle qui existe entre le mail et les
mailing-list. (On peut noter que les listes de diffusion s'apparentent a la
technologie push.)
Dans le cas ou plusieurs listes existent, il est possible de les
structurer sous forme d'une liste ou d'une arborescence. Cette derniere
possibilite est beaucoup plus souple. De meme un objet partage peut gerer la
liste des sujets et en ajouter a la demande d'un utilisateur.
Un cas particulier de la communication multicast est la
communication broadcast. La communication broadcast consiste a envoyer un
message a tous les agents du SMA. Ceci permet, par exemple , a un agent
d'indiquer sa presence aux autres agents. Ce type de communication s'implemente
tres facilement si l'on dispose d'une couche de communication multicast.
Note : Les sockets multicast sont basees sur le
protocole UDP. Ce protocol se situe un niveau en dessous les sockets TCP/IP et
ne garantie pas la reception des donnees envoyees. Il se peut donc que certains
messages envoyes via les multicast sockets n'arrivent jamais.
|