Un individu qui ne communique pas est un individu isolé, muet et sourd
aux informations potentiellement utiles en provenance des autres
agents du système. Un tel individu est inapte à se synchroniser avec
ses pairs et donc à former une équipe pour travailler en groupe. La
coopération efficace implique que les agents engagés dans une
tâche commune communiquent entre eux.
Communiquer, c'est avant tout émettre des signaux. La communication
entre plusieurs agents nécessite un mécanisme de transport de
l'information ainsi qu'un support sur lequel l'agent émetteur peut écrire et
sur lequel un ou plusieurs agents peuvent recevoir des informations.
On parle alors de support ou de canal de communication. La définition
de canaux de communication permet d'abstraire les paramètres physiques
ou fonctionnels d'un médium de transport d'information. On trouve par
exemple un tel mécanisme d'abstraction dans [#!valvassori-2001!#].
Nous distinguons trois grands types de canaux de communication
transportant un signal:
Les robots simulés de la RoboCup utilisent un canal de communication
de type propagatoire, dont la portée maximum est de 50 mètres. Les
signaux émis sont des messages transmis sous forme de paquets
contenant un message et une date d'émission. Par exemple, un agent
recevra le message suivant: (hear 145 "Where's the ball?").
Le choix du destinataire est de plus à la charge de l'émetteur: il
peut choisir de communiquer en destination d'un agent unique ou à
destination d'un groupe restreint d'agents nommés, à destination
d'agents satisfaisant une condition
(typiquement, les agents les plus proches de l'émetteur) ou à
destination de tous les
agents du système. Dans le cas de canaux de communication
propagatoires, il se peut que seuls certains agents soient
suffisamment proches pour recevoir l'information. Un agent peut ainsi
recourir à un intermédiaire pour relayer l'information à
tous et demander à un agent à portée suffisante d'émettre le
signal reçu à l'identique (ce dernier sera appelé agent
facilitateur). De même, les canaux de communication propagatoires
nécessitent la spécification du destinataire dans les communications
particulières.
Communiquer, c'est aussi interpréter les signaux reçus. Un signal prend un sens
lorsqu'un agent réunit deux conditions: lorsqu'il perçoit le stimulus
en question (son, signal visuel, odeur, paquet TCP, etc.) et lorsque
son système interprétatif transforme le signal en sens (symbole) ou en
comportement (réaction). Un tel processus d'abduction nécessite
l'utilisation d'un formalisme déterminé à l'avance et compréhensible par
les deux parties pour décrire la nature des messages envoyés.
KQML [#!finin-1994!#] est un exemple de langage de communication
agent remplissant ce besoin: KQML fournit un symbolisme de haut niveau
dans la description de l'acheminement du message vers son
destinataire et dans le contenu du message envoyé à l'agent (par le
biais de KIF, par exemple). Notamment, KQML définit des performatifs de communication de haut
niveau permettant à des agents potentiellement hétérogènes d'échanger
des informations structurées. Un des désavantages de KQML est cependant son
orientation vers la communication point à point entre agents (avec
potentiellement l'utilisation d'agents facilitateurs pour relayer un
message), ce qui le rend peu adapté à une utilisation dans un contexte
de canaux de communication partagés, non fiables et possédant une faible bande
passante.