Cours les systèmes Multi-Agents, tutoriel & guide de travaux pratiques en pdf.
Pourquoi distribuer l’intelligence?
Pourquoi cherche-t-on à créer des intelligences collectives? Pourquoi vouloir à tout prix prendre un point de vue local? Pourquoi tout simplement vouloir distribuer l’intelligence?
L’Informatique « moderne » contient des systèmes de plus en plus répartis parallèlement, qui peuvent donner des éléments de réponse à ces questions :
L’accroissement des capacités informatiques
Connectivité (internet, WWW, Satellite…)
puissance de calcul
Puissance de transmission (vitesse, bande passante…)
Interface (visualisation, vocal…).
Informations (taille, complexité, modalité).
Ressources (distribuées, hétérogènes partagées)
L’accroissement de l’hétérogénéité
Interactivité (collecticiels, environnement) données/connaissances
BDD multimédia, scientifiques numériques Syntaxe, sémantique, structuration
Régionalisation des informations
Interface multimodales (données, voix, image, geste, vidéo, langage…).
Communication (satellite, communication mobiles, réseaux).
L’accroissement des besoins applicatifs
Traitement intégrés, omniprésents, dynamiques (sujets, information, activité).
Système d’information hétérogène, étendus, fortement intégrés, très complexes.
De nouveaux utilisateurs (population globale, communautés d’intérêt, multiples intérêts).
De nouveaux champs (domaines de connaissance application).
De nouvelles opportunités d’information, de cout, de transaction, de valorisation.
Les problèmes sont physiquement distribués Réseaux, contrôle aérien, robotique, etc…
Figure 5.2 : Distribution physique
Les problèmes sont fonctionnellement très distribues et hétérogènes
Concevoir un produit industriel aussi élabore qu’une voiture de course, qu’un avion de ligne ou qu’un lanceur de satellites réclame l’intervention d’un grand nombre de spécialistes, qui ne possèdent qu’une vision locale de l’ensemble des problèmes poses par la réalisation du système: nul en effet n’est suffisamment savant ou qualifie pour produire une telle réalisation a lui tout seul. L’ensemble des problèmes est trop vaste pour un seul individu. Une voiture de formule 1, par exemple, fait intervenir un grand nombre d’experts pour sa mise au point: il y a le spécialiste des moteurs, celui des châssis, celui des pneumatiques, l’ingénieur en chef et le pilote. Toutes ces personnes mettent leurs connaissances en commun pour essayer de faire la meilleure voiture possible.
Figure 5.3 : Distribution fonctionnelle Les réseaux imposent une vision distribuée
A l’heure des réseaux interplanétaires (Internet), ou toute l’information et la puissance de traitement est repartie sur un nombre Très grand de sites, il faut penser en termes de systèmes ouverts, c’est-`a-dire en termes d’interopérabilité radicale des systèmes informatiques. Il faut considérer que l’espace informatique n’est qu’une gigantesque toile d’araignée (WWW) dans laquelle tout ordinateur, qu’il soit fixe, ou mobile, est connecte `a l’ensemble des autres ordinateurs du monde entier. Les SMA se présentent ainsi comme des candidats sérieux pour la construction d’architectures ouvertes, distribuées, hétérogènes et souples, capables d’offrir une grande qualité de service dans un travail collectif, sans imposer une structure a priori.
La complexité des problèmes
Impose une vision locale. Lorsque les problèmes sont trop vastes pour être analyses globalement, les solutions fondées sur des approches locales permettent souvent de les résoudre plus rapidement. Par exemple, la régulation de trafic aérien est un problème global complexe, difficile à résoudre du fait du grand nombre de paramètres qui sont mis en jeu et de l’ensemble des contraintes qui doivent être satisfaites, des approches locales permettent de résoudre efficacement ce type de problème.
Les systèmes doivent pouvoir s’adapter à des modifications de structure ou d’environnement
Savoir concevoir des systèmes informatiques efficaces, fiables et corrects ne suffit plus. Devant les défis de la complexité, il faut aussi penser à l’adaptabilité d’un logiciel à des modifications du contexte de travail (changement de système d’exploitation, de gestionnaire de bases de données, d’interfaces graphiques, ajouts d’autres logiciels, etc.), et sa nécessaire capacité d’´evolution face à des besoins sans cesse accrus (ajouts de fonctionnalités, modifications de l’utilisation, intégration à d’autres logiciels, etc.). Dans ce cadre, les SMA, de par leur nature distribuée, parce qu’ils supposent toujours un raisonnement local, qu’ils permettent l’intégration et l’apparition ou la disparition d’agents en cours même de fonctionnement, constituent des architectures particulièrement aptes à prendre en compte l’évolutivité et l’adaptation nécessaires au fonctionnement du système.
Le génie logiciel va dans le sens d’une conception en termes d’unités autonomes en interactions
L’histoire du développement des logiciels montre que la réalisation de programmes informatique suit une démarche visant à la réalisation de systèmes conçus comme des ensembles d’entités de plus en plus distribuées, mettant en jeu des composants davantage individualises et autonomes. Le récent développement des langages à objets dans tous les secteurs de l’informatique est là pour en témoigner: le génie logiciel passe par la réalisation de modules autonomes capables d’interagir les uns avec les autres, même, et surtout, lorsque ceux-ci sont conçus par des personnes, des équipes ou des entreprises différentes. Il faut donc associer la fluidité des calculs, la distribution des traitements et l’hétérogénéité des réalisations. Les SMA ont ici un rôle essentiel `a jouer en s’inscrivant comme les possibles successeurs des systèmes à objets, en ajoutant à la localité des comportements l’autonomie et la répartition des prises de décision. On peut ainsi déjà parier que le génie logiciel de demain sera “orienté agent”, comme celui d’aujourd’hui qui est “oriente objet” (Ferber, 1995).
dans l’espace : il est difficile de décomposer le système en parties déboguables indépendamment ; si on coupe un système en deux on le “tue”.
dans le temps : il est difficile d’analyser des systèmes en fonctionnement en continu ; si on arrête un système pour l’observer on le “tue”.
Tous ces facteurs peuvent justifier la nécessite de cette distribution d’où des systèmes :
– de plus en plus complexes
– répartis sur des sites de plus en plus nombreux
– constitués de logiciels en interaction entre eux ou avec des êtres humains d’où une volonté D’intégrer :
De faire inter opérer :
De faire coopérer des logiciels existants.
Qu’est que l’intelligence artificielle distribuée (IAD) ?
Les systèmes experts (qui sont l’émanation la plus visible de l’IA dans l’entreprise) ne peuvent donc prétendre qu’à un rôle mineur dans les procédures de travail informatisé :
– unicité de leur expertise,
– unicité de leur point de vue,
– rigidité de leur capacité d’interaction.
« L’IAD est l’étude, la conception et la réalisation de systèmes multi-agents, c’est à-dire de systèmes dans lesquels des agents intelligents qui interagissent, poursuivent un ensemble de buts ou réalisent un ensemble d’actions » (Wies, 1995).
« L’intelligence, comme la science, n’est pas une caractéristique individuelle que l’on pourrait séparer du contexte social dans lequel elle s’exprime » (Latour, 1989), (Latour, 2006), (Latour & Lemonnier , 1994), (Lestel, 1986), (Lestel & all, 1994).
« Un être humain ne peut se développer convenablement s’il ne se trouve pas entouré d’autres êtres de son espèce. Sans un entourage adéquat, son développement cognitif est très limité, et le simple apprentissage d’une langue articulée lui devient proprement impossible s’il n’a pas été plongé dans une culture humaine dés sa première enfance. En d’autres termes, les autres sont indispensables à notre développement cognitif et ce que nous appelons “intelligence” est autant dû aux bases génétiques qui définissent notre structure neuronale générale qu’aux interactions que nous pouvons avoir avec le monde qui nous entoure et, en particulier, avec la société humaine » (Ferber, 1995).
L’IA Distribuée ajoute donc la dimension sociale à l’IA classique. Les capacités intellectuelles d’un être humain proviennent :
De ses prédispositions génétiques ;
Des interactions avec ses semblables (accointances) ; Des interactions avec son environnement.
Les capacités d’une machine “intelligente” devraient donc provenir :
• de ses possibilités d’inférence ;
• des interactions avec les autres machines ;
• des interactions avec son environnement.
L’IAD est née de la difficulté d’intégrer dans une même base de connaissances, l’expertise, les compétences et la connaissance de différentes entités qui communiquent et collaborent pour réaliser un but commun (Erceau & Ferber, 1991). L’IAD consiste à distribuer l’expertise au sein d’une société d’entités, appelées agents dont le contrôle et les données sont distribués (Guessoum, 1996). Ces agents, qui sont relativement indépendants et autonomes interagissent dans des modes simples ou complexes de coopération pour accomplir un objectif global, notamment la résolution de problèmes complexes. N.Skarmeas définit l’IAD, dans «Agents as Objects with Knowledge Base State» (Skarmeas, 1998), comme étant un domaine concerné par les systèmes ouverts et distribués dont les entités présentent une sorte d’intelligence et qui essayent d’accomplir des buts qui peuvent être implicites ou explicites. L’IAD a donné naissance à deux principaux domaines :
La résolution des problèmes distribués (DPS), qui s’intéresse à la décomposition d’un problème complexe en sous-problèmes et à sa résolution par des entités distribuées logiques et physiques.
Les systèmes multi-agents (SMA) qui sont concernés par la coordination du comportement des agents, qui peuvent être vus comme des entités intelligentes et autonomes (Skarmeas, 1998).
SMA «versus» DPS
DPS (résolution distribuée de problème) proche de l’IA classique
•Répartir à la conception du travail nécessaire à la résolution d’un problème parmi un ensemble d’agents.
•Orienté par le problème à traiter.
•Approche descendante, centrée Agent.
contrôle centralisé, statique, modulaire
SMA (système multi-agent)
•Ensemble d’agents autonomes en interaction
•Coordonner le comportement de cet ensemble d’agents (pré-existants) pour résoudre collectivement un problème
•Dans un environnement complexe et évolutif
•Approche ascendante, centrée sociale
résolution « émergente » : à l’exécution
(Labidi & Lejouad 1993) et (Oliveira, 1998) affirment que l’IAD était supposée apporter une solution à des problèmes spécifiques tels que :
la modélisation et distribution de la connaissance parmi plusieurs agents ;
la génération de plans d’actions où la présence d’autres agents doit être considérée ;
la résolution de conflits entre agents et la maintenance de la cohérence des décisions et plans d’actions ;
la résolution des problèmes de communication pour permettre les interactions entre agents ;
la résolution des problèmes spécifiques concernant l’organisation des SMAs
On voit que les systèmes multi-agents se positionnent au carrefour de la programmation (ce sont des logiciels), de l’intelligence artificielle (leur autonomie de décision), et des systèmes répartis (leur décentralisation). Historiquement, on peut replacer le concept d’agent et de système multi-agent dans l’histoire de l’intelligence artificielle et de manière duale dans l’histoire de la programmation.
Le monde est ouvert
La programmation classique est fermée
• Dans l’espace : le programmeur a une connaissance globale du logiciel à construire. Le principe même de l’analyse descendante d’application ou de la spécification d’application est de partir du haut (où on voit tout) puis de décomposer en parties à programmer.
• Dans le temps : bien que la notion de cycle de vie d’un logiciel introduise une dose de dynamique, il s’agit plutôt de corriger et de maintenir un logiciel spécifié une fois pour toutes.
• Dans la modalité : il existe une volonté de développer les applications de manière la plus homogène possible : mêmes personnes, mêmes logiciels de développement.
• Dans la sémantique : Les applications ont une sémantique globale et statique.
• Dans la complexité : Les applications sont bien délimitées et conçues de manière analytique. Ceci facilite le découpage en parties pour leur mise au point et l’étude de leur comportement qui est considéré comme devant être totalement prédictible.
A l’opposé, la nouvelle programmation est ouverte
L’ouverture est une propriété inhérente des systèmes d’information actuels. Elle n’est voulue par personne mais c’est un état des choses que l’on ne peut plus se permettre d’ignorer. Plutôt que d’essayer de l’enrayer, il vaut mieux essayer de la maîtriser voire en tirer avantage. Cette ouverture s’exprime :
• Dans l’espace : les systèmes d’information actuels sont intrinsèquement distribués (vision locale obligatoire) et se développent de manière agrégative.
• Dans la modalité : les deux points précédents ont pour conséquence directe que les systèmes d’information actuels sont de plus en plus hétérogènes : environnements de programmation ; points de vues adoptés sur un même sujet : fonctionnel, matériel, structurel etc. ; applications hybrides.
• Dans la sémantique : les multiples points de vue engendrent autant de mondes sémantiques hétérogènes les uns aux autres.
• Dans la complexité : les systèmes actuels présentent des interactions très intriquées ce qui les rend difficiles à prédire et à analyser
Domaines d’intérêts
¬ Intelligence Artificielle Distribuée (IAD)
¬ Bases de Données Distribuées (BDD)
¬ Systèmes d’Information Coopératifs (SIC)
¬ Génie logiciel
¬ Aide à la décision
¬ Apprentissage automatique
Concepts de base
Agent
Définitions
Ces dix dernières années, le concept d’agent a été utilisé et étudié dans plusieurs domaines. Toutefois, il n’y a encore aucun consensus, entre les différents chercheurs, quant à la définition même du mot « agent ». Selon H.S.Nwana (Nwana, 1996) et (Nwana & Ndumu, 2000) et rapporté par M.Raza (Raza, 2009), il y a au moins deux raisons qui permettent d’expliquer cette difficulté.
-La première réside dans le fait que les chercheurs, dans le domaine des agents, ne sont pas à l’origine de ce terme comme l’on été, par exemple, les chercheurs dans le domaine de la logique floue. En effet, le terme agent a été et continue d’être utilisé dans la vie de tous les jours par des personnes travaillant dans des domaines très différents.
Par exemple, on parle d’agent de voyage, d’agent immobilier, d’agent d’assurance, etc.
-La deuxième raison est que même dans la communauté des chercheurs sur les agents logiciels, le mot « agent » est utilisé pour décrire des systèmes très différents les uns des autres. Pour ajouter à la confusion, les chercheurs sont allés même jusqu’à inventer plusieurs synonymes au mot « agent ». Ils ont ainsi inventé, par exemple, « knowbots » (robots à base de connaissances), « softbots » (robots logiciel), taskbots (robots à base de tâche), « userbots
» (robots pour utilisateur), robots, agents personnels, agents autonomes, assistants personnels, etc. Il est vrai qu’une telle prolifération de termes trouve sa justification dans le fait que les agents peuvent prendre différentes formes physiques (robot ou agent logiciel) et qu’ils peuvent aussi jouer plusieurs rôles.
Cela dit, il est tout de même important de s’entendre sur une définition du terme agent pour que les exposés qui suivent dans ce mémoire aient un sens. La définition que nous avons adoptée, et qui semble couvrir les caractéristiques des agents que nous avons développés, est celle proposée par Jennings, Sycara et Wooldridge (Jennings & all, 1998) :
A ce propos, Carl Hewitt fit remarquer (lors du troisième international workshop sur l’IAD), que la question qu’est ce qu’un agent ? est aussi embarrassante pour la communauté informatique que la question qu’est ce que l’intelligence ? est embarrassante pour la communauté d’intelligence artificielle.
Etant donné les origines diverses du concept agent, nous ne pouvons pas donner une seule définition au terme agent. En effet, plusieurs définitions ont été proposées par différents auteurs pour clarifier ce concept.
Déf1 : « les agents peuvent être vus comme des unités intelligentes et autonomes » (Skarmeas, 1998)
Déf2 : « les objets qui pensent » (Magendaz, 1995)
Déf3 : Un agent est un système informatique, situé dans un environnement, qui agit d’une façon autonome et flexible pour atteindre les objectifs pour lesquels il a été conçu.
Déf4 : Un agent est une entité logicielle ou physique à qui est attribuée une certaine mission qu’elle est capable d’accomplir de manière autonome et en coopération avec d’autres agents. Déf5 : Un agent intelligent tout ce qui perçoit son environnement à l’aide de ses capteurs et qui agit sur son environnement à l’aide de ses effecteurs. (Chaib-Draa & all, 2001)