6. Ingénierie logicielle orienté agent
6.4 Plates-formes de développement des systèmes multi-agents
La nouvelle technologie des agents et systèmes multi-agents connaît
un vif succès chez les industriels pour qui elle promet des outils
de conception et d'implémentation flexibles et adaptatifs. Pourtant,
la difficulté de réalisation des systèmes multi-agents
due à la multiplicité et à la complexité des
concepts et composantes rend l'utilisation des outils existants très
difficile par les "non-spécialistes" des systèmes
multi-agents, et même par les "non-auteurs". Ces systèmes
ont tous les problèmes des systèmes distribués et
concurrents mais aussi d'autres problèmes liés à
leurs caractéristiques telles que la flexibilité des interactions
et la dynamique des organisations.
Dans le chapitre 2, on a présenté des architectures et
des langages orientés agents (voir section
2.3 pour les langages). Ces langages, aussi bien que d'autres langages
non présentés dans la section, montrent cependant des limitations
sur un certain nombre de points. Ils sont la plupart du temps limités
au type de modèle d'agent particulier qu'ils développent.
S'ils sont centrés agents, on constate en termes de modèles
une grande focalisation sur les aspects de décision et des limitations
sur les aspects sociaux. On peut remarquer qu'une bonne partie des langages
portent sur les approches BDI (Belief-Desire-Intentions). D'autre part,
les langages d'interaction comme FIPA et KQML sont le plus souvent définis
indépendamment des modèles ou des types d'agents utilisés,
ce qui permet aux concepteurs de choisir leurs propres architectures d'agents.
Pourtant, on se trouve face à un dilemme : soit on laisse le modèle
d'agent totalement libre et on garde un niveau d'abstraction très
élevé et peu opérationnel pour le langage (comme
KQML), soit on fournit un langage opérationnel mais qui contraint
fortement le modèle et la programmation des agents (comme AGENT0).
Afin de réaliser une opérationalisation plus accessible
des systèmes multi-agents, des travaux ont tenté de réutiliser
des architectures et des langages existants pour construire des environnements
de développement de ces systèmes. Les environnements de
développement ou les plates-formes multi-agents sont nécessaires
pour renforcer le succès de la technologie multi-agents. Les plates-formes
multi-agents permettent aux développeurs de concevoir et réaliser
leurs applications sans perdre de temps à réaliser des fonctions
de base pour la création et l'interaction entre agents et éliminent,
dans la plupart des cas, la nécessité d'être familier
avec les différents concepts théoriques des systèmes
multi-agents.
Il existe un nombre important d'environnements de développement
des applications orientées agents : il y a aussi bien des produits
commerciaux que des logiciels dans le domaine public. L'étudiant
peut trouver une liste assez complète de ces plates-formes à
l'adresse http://www.agentlink.org/resources/agent-software.php.
Parmi les plates-formes fournies comme logiciels libres, il y quelques
plates-formes plus connues pour avoir été utilisées
dans le développement de plusieurs applications : JADE, MACE, ZEUS,
et MADKIT pour les agents cognitifs, et SWORM pour les agents réactifs.
Il faut noter que cette liste n'est pas unique, et qu'il y a aussi d'autres
plates-formes qui ont été utilisées avec beaucoup
de succès pour bâtir diverses applications.
La plate-forme multi-agents JADE sera présentée en détail
dans la section suivante. Les autres mentionnées ci- dessous vont
être présentées d'une manière synthétique
dans cette section même.
MACE (Gasser e.a., 1987) est le premier
environnement de conception et d'expérimentation de différentes
architectures d'agents dans divers domaines d'application. Dans MACE,
un agent est un objet actif qui communique par envoi de messages. Les
agents existent dans un environnement qui regroupe tous les autres agents
et toutes les autres entités du système. Un agent peut effectuer
trois types d'actions : changer son état interne, envoyer des messages
aux autres agents et envoyer des requêtes au noyau MACE pour contrôler
les événements internes. Chaque agent est doté d'un
moteur qui représente la partie active de l'agent. Ce moteur détermine
l'activité de l'agent et la façon dont les messages sont
interprétés. MACE a été utilisé pour
développer des simulations d'applications distribuées.
ZEUS (Nwama e.a., 1999) est une plate-forme
multi-agents conçue et réalisée par British Telecom
(Agent Research Programme of BT Intelligent Research Laboratory) pour
développer des applications collaboratives. ZEUS est écrit
dans le langage Java et il est fondé sur les travaux de la FIPA.
L'architecture des agents ZEUS est similaire à la majorité
des agents collaboratifs. Elle regroupe principalement les composantes
suivantes :
- une boîte aux lettres et un gestionnaire de messages qui analyse
les messages de la boîte aux lettres et les transmet aux composantes
appropriées ;
- un moteur de coordination ;
- un planificateur qui planifie les tâches de l'agent en fonction
des décisions du moteur de coordination, des ressources disponibles
et des spécifications des tâches ;
- plusieurs bases de données représentant les plans connus
par l'agent, les ressources et l'ontologie utilisée ;
- un contrôleur d'exécution qui gère l'horloge locale
de l'agent et les tâches actives.
L'environnement comporte trois bibliothèques : une avec des agents
utilitaires, une avec des outils pour la construction des agents, et une
avec des composants agents.
ZEUS met un fort accent sur la méthodologie de développement,
fondée sur la notion de rôle (voir aussi la section précédente).
ZEUS a été utilisé pour développer plusieurs
applications réelles comme les ventes aux enchères et la
simulation de la fabrication des ordinateurs. Les caractéristiques
des domaines d'applications de ZEUS ont été définies
par les concepteurs ; parmi ces caractéristiques, on peut mentionner
:
- chaque agent crée un plan qui nécessite un raisonnement
explicite pour atteindre son but ;
- la résolution de problèmes nécessite une coopération
entre agents ;
- le rôle de chaque agent consiste à contrôler un
système externe qui réalise une tâche du domaine
d'application, la résolution de problème est ainsi effectuée
par ce système externe et contrôlée par les agents.
MADKIT (Madkit, 2003) est une plate-forme
développée par le Laboratoire d'Informatique, de Robotique
et de Microélectronique de Montpellier (LIRMM) de l'Université
Montpellier II. MADKIT est libre pour l'utilisation dans l'éducation.
MADKIT est écrit en Java et est fondé sur le modèle
organisationnel Alaadin. Il utilise un moteur d'exécution où
chaque agent est construit en partant d'un micro-noyau. Chaque agent a
un rôle et peut appartenir à un groupe. Il y a un environnement
de développement graphique qui permet facilement la construction
des applications.
SWARM (Minar e.a., 1996) est une
plate-forme multi-agents avec agents réactifs. L'inspiration du
modèle d'agent utilisé vient de la vie artificielle. SWARM
est l'outil privilégié de la communauté américaine
et des chercheurs en vie artificielle. L'environnement offre un ensemble
de bibliothèques qui permettent l'implémentation des systèmes
multi-agents avec un grand nombre d'agents simples qui interagissent dans
le même environnement. De nombreuses applications ont été
développées à partir de SWARM qui existe aujourd'hui
implémenté en plusieurs langages (Java, Objective-C).
|