SystemeMultiAgents

Un article de Agora2ia.

(Redirigé depuis SMA)


Sommaire

Présentation

[Inspirée de http://csl.ensm-douai.fr/MAAC/uploads/1/projetMAAC.rapport2003.pdf]


Apparu dans les années 90, le domaine des SystemeMultiAgents (SMA) est en plein essor actuellement. Evolution naturelle des paradigmes de programmation informatiques, il fusionne différentes technologies et se situe à la croisée de problèmes actuels tels que :

  • Distribution,
  • Décentralisation,
  • Hétérogénéité,
  • Adaptation aux évolutions de l'environnement,
  • ...


Issus de l'IntelligenceArtificielle, la programmation par agents étend la ProgrammationOrienteeObjet. Elle permet d'agréger des objets pour développer des composants à la fois actifs et autonomes : les agents. Ces derniers ont en effet la capacité de décider localement des programmes et données à exécuter en réponses à des buts locaux et à des stimuli extérieurs.

Le domaine de prédilection des SMA est l'InformatiqueDistribuée. Ils apportent en effet une solution à la fois efficace et séduisante. Un des points forts est la communication (entre agents) : tant par le contenu des messages (du plus simple au plus élaboré), que par les possibilités de traitements de ces messages.

Autre point fort, la mobilité au sens large. Les agents peuvent en effet être déployés sur un grande variété de plateformes, et selon une configuration qui peut évoluer au cours de l'exécution, du fonctionnement du système.

Enfin, les SMA favorisent l'intégration tant technique que fonctionnelle. Tout d'abord au sein d'un même SMA, chaque agent pouvant être réalisé par des développeurs aux compétences variées, et selon des technologies informatiques diverses : au sein d'un même SMA tous les agents communiquent selon un même protocole de communication. Cette intégration est également permise au travers de plusieurs SMA grâce à l'émergence de standards de protocoles de communication inter-agents, élaborés par des organismes tels que la FIPA.

Cela fait des SMA un outil à la fois adaptable, ouvert et simple mais robuste, qui pourra être adopté aussi bien sur des applications aux besoins techniques et/ou fonctionnels basiques, selon une architecture élémentaire, que des systèmes distribués élaborés. Dans tous ces cas, les SMA accompagneront et favoriseront les évolutions de l'application au grès des variations des besoins et des ressources.


Intérêt d'un SMA

  • Accélérer les développements et diminuer les efforts de programmation
  • S'abstraire les mécanismes :
  • De communication
  • D'interaction,
  • De Coopération
  • Permettre l'implémentation de systèmes complexes
  • Notamment via une extensibilité aisée du code :
  • Cela permet de se concentrer dans un premier temps sur des fonctionnalités classiques, puis d'appréhender à mesure la théorie des SMA
  • Enfin un déploiement aisé : NOUVEAU !

C'est pour ces raisons que l'on parle parfois de Erlang comme un SMA.

La programmation SMA

  • Validité des méthodes classiques ?
    • Les méthodologies SMA :
  • Validité des techniques classiques :
    • Design patterns
    • Tests
    • Remaniements
    • Conception

D'où l'intérêt des méthodologies itératives telles que XP !


Tests

  • Un agent est composé de classes, pour lesquelles ont peut donc utiliser les harnais classiques de tests unitaires tel que JUnit.
  • Tests « unitaires » d'agent ?... Voir le plugin de tests sur Jade : peut-on encore parler de Tests Unitaires, ou doit-on parler de test fonctionnels ?


Critères d'un agent

  • Autonome mais dépendant
  • D'où la notion de communauté (le SMA),
  • Donc d'envoie de communication, par envoi de messages
  • A un ou plusieurs agents,
  • Avec la possibilité pour chacun de refuser un message (contrairement à la POO)
  • Chaque agent à un but (local / global)
  • Il est spécialisé
  • Mobile :
    • Sur impulsion de l'utilisateur
    • Ou sur sa propre impulsion
    • Intra ou inter SMA
    • Coopèrent vers un objectif commun




S'appuyant sur la ProgrammationOrientéeObjets et l'IntelligenceArtificielle, il transforme chacun des objets en agents autonomes, par la capacité à décider localement des programmes et données à exécuter en réponses à des buts locaux et à des stimuli extérieurs. Il se situe également dans l'Informatique Distribuée.

Cependant, privilégiant la décentralisation et la distribution des applications, il accentue la confrontation entre exécutions locales des agents et le fonctionnement global du système. Ce paradigme étend la notion de composants logiciels via l'introduction d'un couplage explicite entre agents au niveau de la connaissance au lieu d'être seulement au niveau des types de données.

Les SMAs proposent un ensemble de modèles et de concepts qui permettent aux concepteurs et utilisateurs d'applications multi-agents d'aborder la complexité des applications à la fois au sein de modules appelés agent, et au niveau du système lui même, appelé SystemeMultiAgents. Ces deux concepts définissent deux niveaux de modélisation. Un agent est une entité logicielle ou matérielle qui interagit, via des modalitéés de perception et d'action, avec un environnement partagé avec d'autres agents, qui interagit avec les autres agents et dont le comportement peut être qualifié d'autonome. Un SystemeMultiAgents est l'ensemble des agents en interaction au sein de l'environnement partagé et montrant éventuellement une activité organisée.

Les applications caractéristiques de ce paradigme se situent dans au moins trois grandes classes de problématiques :

  • Résolution distribuée de problèmes avec des applications de supervision [17], [57] par exemple,
  • Simulation avec des applications de modélisation de phénomènes sociaux, [11] par exemple,
  • Et enfin des applications distribuées, décentralisées et ouvertes telles que le commerce électronique [19], les télécommunications [10].


Méthodologies

  • MaSE,
  • Aalaadin ou AGR,
  • RETSINA,
  • dMARS,
  • OAA,
  • DESIRE,
  • Gaia,
  • Tropos,
  • Kaos
  • et bien d’autres...


Plateformes

Divers


Jade


Cougaar


Ressources

Portails


Doc


IA