• Aucun résultat trouvé

2.4 Les applications au contrôle de moteurs

3.1.1 Qu’est-ce qu’un agent ?

Le concept d’agent est apparu avec les premiers programmes destinés à s’exécuter sur le long terme, au sein d’un environnement dans lequel ils jouissent d’une certaine autono- mie d’action. Le terme se retrouve par exemple dans la littérature de l’apprentissage par renforcement.

Leur définition a depuis été enrichie et affinée, notamment par Wooldridge et Jennings 1995 et Ferber 1999. Un consensus s’est établi autour d’une liste de propriétés et d’un schéma d’exécution présentés ci-après. Un agent est une entité physique ou logicielle qui :

– est autonome,

– existe au sein d’un environnement qu’elle est capable de percevoir et sur lequel elle peut agir,

– possède une représentation partielle de cet environnement, – est capable de communiquer avec d’autres agents,

– possède des ressources,

– possède des compétences et peut offrir des services.

Le comportement d’un agent résulte de ses perceptions, de ses connaissances, de ses com- pétences, et bien évidemment de son but. Il suit un cycle de vie en trois étapes se répétant indéfiniment tout au long de son exécution :

– la phase de perception durant laquelle l’agent acquiert de nouvelles informations sur l’environnement

– la phase de décision durant laquelle l’agent choisit les prochaines actions à effectuer – la phase d’action durant laquelle l’agent réalise les actions décidées à l’étape précédente. La propriété la plus importante d’un agent est son autonomie. Celle-ci se rapporte au contrôle de son exécution : un agent peut dire "non" à une requête, il décide lui-même d’agir ou non, et de la nature de ses actions. C’est d’ailleurs ce qui le différencie d’un simple sous-programme. Cette autonomie sous-entend qu’un agent a des buts qui lui sont propres, et qu’il peut les privilégier à la résolution d’une requête extérieure.

Enfin, notons que cette définition s’appuie fortement sur la notion d’environnement, qui elle ne bénéficie pas d’un consensus dans la communauté. Intuitivement, l’environnement peut être décrit comme tout ce qui est extérieur à l’agent et qu’il peut percevoir. Nous reviendrons sur ce point un peu plus tard, dans la section 3.1.2.2.

3.1.1.1 Différents types d’agents

Outre l’autonomie qui est une propriété commune à tous, les agents possèdent d’autres caractéristiques par lesquelles ils peuvent être différenciés (Gleizes et al. 2011).

Réactif Un agent est dit réactif lorsqu’il est capable de réagir aux modifications de son environnement. Ses actions sont déclenchées par les évènements dans l’environnement. On parle alors de comportement réflexe. Les conditions des règles de comportement reposent sur ses perceptions et son état interne. Un agent réactif n’a généralement pas (ou très peu) de mémoire.

Proactif À l’opposé des agents réactifs se situent les agents proactifs. De tels agents sont capables de modifier leurs buts et d’en générer de nouveaux. Ils disposent d’une mémoire et mettent en œuvre des algorithmes d’apprentissage complexes. On s’y réfère parfois sous le nom d’agents cognitifs. C’est le cas par exemple des agents Croyance-Désir-Intention (BDI, pour Belief-Desire-Intention, Rao et Georgeff 1995). Il n’y a en réalité pas de limite franche entre agent réactif et agent proactif, ils représentent les extrémités d’une échelle de granularité. Les agents réactifs, moins complexes, sont généralement présents en plus grand nombre dans

un système et chacun d’entre eux s’occupe d’une tâche relativement simple. On parle d’un système à granularité fine. Les agents cognitifs sont quant à eux de granularité plus grosse, chacun peut prendre en charge une tâche plus compliquée et ils sont donc généralement moins nombreux pour former un système.

Situé Un agent est qualifié de situé lorsque ses perceptions et sa communication avec les autres agents sont conditionnées par son positionnement dans l’environnement. Par exemple, un agent-piéton dans une simulation de foule ne percevra pas les mêmes obstacles selon sa position. C’est un agent situé. De même, un agent-fourmi qui communique avec les autres au travers de l’environnement (en déposant des phéromones) est un agent situé.

Communicant Les interactions des agents communicants ne dépendent pas de leur posi-

tionnement. Leur environnement ne possède pas de référentiel, et les agents communiquent directement par envoi de messages sans qu’une quelconque mesure de position n’interfère. Là encore, la frontière entre situé et communicant n’est pas absolue. Des agents situés peuvent utiliser divers canaux de communication, dont l’envoi direct de messages.

D’autres caractéristiques sont parfois associées aux agents. Notons par exemple les agents sociaux qui tiennent compte des autres agents à divers degrés dans leur raisonnement, ou encore les agents adaptatifs qui modifient leur comportement au cours de leur vie.

3.1.1.2 Architecture d’un agent

Les agents possèdent généralement une architecture modulaire bien définie. Les modules utilisés varient selon les applications, mais trois se retrouvent systématiquement :

– Le module perception prends en compte les évènements provenant de l’environnement. Il peut s’agir d’une simple boîte à lettre dans le cas d’un agent communicant, ou d’un module gérant des capteurs pour un agent situé.

– Le module décision implémente le raisonnement de l’agent. Il comprend les connais- sances de l’agent et des règles pour les exploiter, et décider d’action à entreprendre en fonction du but de l’agent. Il peut s’agir de simples règles conditionnelles pour un agent réactif comme d’algorithmes d’apprentissage et d’un moteur d’inférence pour un agent cognitif.

– Le module action réalise les actions que le module décision lui demande. Il peut s’agir de simples envois de messages dans le cas d’agents communicants comme d’actions plus complexes mettant en œuvre des effecteurs. C’est ce qui est vu depuis l’extérieur comme le comportement de l’agent.

La figure 3.1 schématise ces modules et leur interaction avec l’environnement. Cette architec- ture de base est souvent enrichie de modules propres à l’approche, par exemple d’un module spécifique pour les connaissances, les compétences ou encore l’apprentissage. De nombreuses implémentations sont en fait hybrides, possédant des caractéristiques à la fois réactives et cognitives et des modules d’interaction à la fois situés et communicants. Cette modularité fait

Figure 3.1 – Un agent et son environnement.

que la programmation par composants est particulièrement appropriée au développement d’agents, et donc de SMA (Noël 2012).

La notion d’agent étant maintenant bien définie, il est temps de s’intéresser aux systèmes multi-agents.