<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>6. Les agents</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.70.1" name="generator"><link rel="start" href="index.html" title="Guide pratique sur l'intelligence artificielle et la vie artificielle sous GNU/linux"><link rel="up" href="index.html" title="Guide pratique sur l'intelligence artificielle et la vie artificielle sous GNU/linux"><link rel="prev" href="ar01s05.html" title="5. A venir"><link rel="next" href="ar01s07.html" title="7. Les langages de programmation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">6. Les agents</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s05.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ar01s07.html">Suivant</a></td></tr></table><hr></div><div class="section" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N105B2"></a>6. Les agents</h2></div></div></div><p>Aussi connus sous le nom d'agents intelligents ou simplement agents, ce domaine de recherche en IA traite de petites applications destinées à aider l'utilisateur(trice) dans son travail. Ils peuvent être mobiles (capables de stopper leur exécution sur une machine et de la relancer sur une autre) ou statiques (en demeurant dans une seule machine). Ils sont le plus souvent spécifiques à une tâche (donc relativement simples) et conçus pour aider l'utilisateur à la manière d'un assistant. Jusqu'à présent, l'utilisation la plus courante (c'est à dire la plus largement répandue) de ce type d'application concerne les robots d'indexation, que beaucoup de moteurs de recherche utilisent (ex.: webcrawler).</p><div class="glosslist"><dl><dt>Agent</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site FTP : <a href="ftp://www.cpan.org/modules/by-category/23_Miscellaneous_Modules/Agent/" target="_top"> www.cpan.org/modules/by-category/23_Miscellaneous_Modules/Agent/</a> </p></li></ul></div><p>Agent est le prototype d'un système "Information Agent". Il est à la fois multiplateforme et multilangue, car il stocke les informations récoltées dans de simples chaînes de caractères condensées. Il peut être condensé et transporté à travers le réseau dans n'importe quel format, car l'agent peut s'autobloquer dans son état initial.</p></dd><dt>agentTool</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://en.afit.af.mil/ai/agentool.htm" target="_top">en.afit.af.mil/ai/agentool.htm</a> </p></li><li><p> Site de téléchargement : <a href="http://en.afit.af.mil/ai/registration.htm" target="_top">en.afit.af.mil/ai/registration.htm</a> </p></li></ul></div><p>Autre cadre de développement d'agent conçu en Java. Il est assez unique dans le fait qu'il s'appuie sur l'utilisation d'une interface graphique pour concevoir le système qui va "synthétiser semi-automatiquement des systèmes multiagents pour répondre à ces exigences". Il vous faut un navigateur compatible java pour pouvoir télécharger le logiciel. :P</p></dd><dt>Aglets Workbench</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.trl.ibm.com/aglets/index_e.htm" target="_top">www.trl.ibm.com/aglets/index_e.htm</a> </p></li></ul></div><p>Un aglet est un objet Java qui peut se déplacer d'un hôte à un autre sur Internet. Cela veut dire qu'un aglet s'exécutant sur une machine peut brusquement arrêter son exécution, s'expédier sur une machine distante, et reprendre son déroulement sur son nouvel hôte. Quand l'aglet se déplace, il emporte aussi bien son code source que son état (ses données). Un mécanisme de sécurité intégré sécurise l'accueil d'aglets d'origine incertaine pour l'hôte. L'API d'Aglet Java (J-AAPI) est un standard proposé au public pour interfacer les aglets et leur environnement. J-AAPI contient des fonctions pour initialiser les aglets, gérer les messages et expédier, retirer, activer ou désactiver, cloner, ou se débarrasser de l'aglet. J-AAPI est simple, souple, et stable. Les développeurs d'applications peuvent coder des aglets multiplateformes en considérant qu'ils peuvent fonctionner sur n'importe quelle machine supportant J-AAPI.</p></dd><dt>A.L.I.C.E.</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.alicebot.org" target="_top">www.alicebot.org</a> </p></li></ul></div><p>Le logiciel ALICE implémente l'AIML (Artificial Intelligence Markup Language), un langage à balise non standard en évolution, permettant de créer des robots de "chat". La caractéristique de base de sa conception est minimaliste. Comparé à d'autres langages de robot de "chat", l'AIML est peut-être le plus simple. Le langage de filtrage est très simple, ne permettant par exemple qu'un seul caractère joker ('*') de comparaison par filtre. L'AIML est un langage XML, ce qui implique qu'il obéit à certaines méta-règles grammaticales. Le choix d'une syntaxe XML rend possible l'intégration avec d'autres outils tels que des éditeurs XML. Une autre motivation du choix du XML est son apparence familière, particulièrement pour les personnes expérimentée en HTML.</p></dd><dt>Ara</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://wwwagss.informatik.uni-kl.de/Projekte/Ara/index_e.html" target="_top">wwwagss.informatik.uni-kl.de/Projekte/Ara/index_e.html</a> </p></li></ul></div><p>Ara est une plateforme d'exécution sûre et portable d'agents mobiles dans les réseaux hétérogènes. Dans ce contexte, les agents mobiles sont des programmes ayant la capacité de changer de machine hôte pendant leur exécution tout en préservant leur état interne. Cela leur permet de gérer des opérations localement, plutôt que de devoir les effectuer à distance. Par rapport aux plateformes du même type, le but précis d'Ara est de fournir des fonctionnalités complètes d'agent mobile, tout en maintenant autant que possible des modèles et langages de programmation établis.</p></dd><dt>BattleBots</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.bluefire.nu/droidbattles/" target="_top">www.bluefire.nu/droidbattles/</a> </p></li></ul></div><p>Jeu de programmation d'IA où l'on conçoit un robot en choisissant du matériel et en programmant son unité centrale, puis en faisant des compétitions avec d'autres robots. Les compétitions peuvent engager des équipes et des règles spéciales pour un jeu.</p><p>Le matériel disponible pour concevoir votre robot comprend des armes, un moteur, des scanners, un microprocesseur, etc. Le langage de programmation dépend du type de votre CPU et est similaire à un langage d'assemblage.</p></dd><dt>Bee-gent</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www2.toshiba.co.jp/beegent/index.htm" target="_top">www2.toshiba.co.jp/beegent/index.htm</a> </p></li></ul></div><p>Bee-gent est un nouveau type de cadre de développement car c'est un système d'agent à 100%. Par opposition à d'autres systèmes qui ne font qu'une utilisation partielle des agents, Bee-gent "agentifie" complètement la communication qui a lieu entre les applications logicielles. Les applications deviennent des agents, et tous les messages sont transportés par les agents. Ainsi, Bee-gent permet aux développeurs de construire des systèmes ouverts, distribués et souples, qui permettent une utilisation optimale des applications existantes.</p></dd><dt>Bond</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://bond.cs.ucf.edu/" target="_top">bond.cs.ucf.edu/</a> </p></li></ul></div><p>Encore un autre système d'agent en Java...</p><p>Bond est un système d'objets distribués conçu en Java et un cadre d'agent. Il met en application un logiciel médian basé sur des messages et des services associés tels qu'un annuaire, la persistance, la surveillance et la sécurité. Bond permet de construire facilement des applications réparties multiagents. Une autre application future de Bond est le Laboratoire Virtuel supportant l'annotation d'informations et l'informatique répartie à grande échelle.</p></dd><dt>Cadaver</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.erikyyy.de/cadaver/" target="_top">www.erikyyy.de/cadaver/</a> </p></li></ul></div><p>Cadaver simule en temps réel des cyborgs et la nature. Le champ de bataille est constitué de forêts, de blé, d'eau, d'herbe, de carcasses (bien sûr) et de plein d'autres choses. Le serveur de jeu contrôle le jeu et les règles. Vous démarrez le serveur et connectez quelques clients. Les clients communiquent avec le serveur en utilisant un protocole très primitif. Ils peuvent donner l'ordre aux cyborgs de moissonner le blé, d'attaquer des ennemis ou de couper du bois. Le jeu n'est pas destiné à être joué par des humains! Il y a beaucoup trop de choses à contrôler. Réservé aux experts : vous pouvez uniquement vous connecter au serveur par telnet et entrer les commandes manuellement. Mais l'idée est plutôt que vous écriviez des clients dotés d'une intelligence artificielle pour battre les autres intelligences artificielles. Vous pouvez sélectionner un langage (et un système d'exploitation) de votre choix pour effectuer cette tâche. Il n'y a qu'à écrire un programme qui communique sur les canaux d'entrée et de sortie standard. Puis vous pouvez employer des programmes tels que "socket" pour connecter vos clients au serveur. Il n'est PAS nécessaire d'écrire du code TCP/IP, bien que je l'ai fait :) La bataille ne sera pas ennuyeuse, donc vous disposez du client appelé "spyboss" qui affiche graphiquement l'action à l'écran.</p></dd><dt>Cougaar</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.cougaar.org/" target="_top">www.cougaar.org/</a> </p></li></ul></div><p>Cougaar est une architecture Java pour la construction d'applications à base d'agents distribués à grande échelle. C'est le produit de plusieurs années de recherche dans le cadre du projet DARPA sur les systèmes d'agents à grande échelle, et il inclut non seulement l'architecture du noyau mais aussi un ensemble de composants de démonstration, de visualisation et d'administration pour simplifier le développement d'applications complexes et distribuées. [Encore un autre système d'agents conçu en Java — ed.]</p></dd><dt>D'Agent (anciennement AGENT TCL)</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://agent.cs.dartmouth.edu/software/agent2.0/" target="_top">agent.cs.dartmouth.edu/software/agent2.0/</a> </p></li><li><p> Site FTP : <a href="ftp://agent.cs.dartmouth.edu/pub/agents/" target="_top">agent.cs.dartmouth.edu/pub/agents/</a> </p></li></ul></div><p>Un agent transportable est un programme qui peut migrer d'une machine à une autre dans un réseau hétérogène. Le programme choisit où et quand il va migrer. Il peut suspendre son exécution à un certain point, se déplacer sur une autre machine et reprendre l'exécution sur la nouvelle machine. Par exemple, un agent transportant un courrier électronique migre d'abord vers le routeur et ensuite vers la boîte mail du destinataire. L'agent peut effectuer arbitrairement un traitement complexe sur chaque machine afin de s'assurer que le message atteint le bon destinataire.</p></dd><dt>Dunce</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.boswa.com/misc/dunce/" target="_top">www.boswa.com/misc/dunce/</a> </p></li></ul></div><p>Dunce est un simple robot de "chat" (IA conversationnelle) et un langage pour programmer ce type de robots. Il emploie un filtrage d'expressions rationnelles de base et un mécanisme semi-neuronal de lancement de règles et de réponses (avec des cycles accélération / ralentissement d'activité).</p></dd><dt>FIPA-OS</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://fipa-os.sourceforge.net/" target="_top">fipa-os.sourceforge.net/</a> </p></li><li><p> Site Web secondaire : <a href="http://www.nortelnetworks.com/products/announcements/fipa/" target="_top">www.nortelnetworks.com/products/announcements/fipa/</a> </p></li></ul></div><p>FIPA-OS est l'implémentation "open source" des éléments obligatoires contenus dans la spécification FIPA nécessaires à l'interopérabilité des agents. En plus d'être compatible avec le concept d'interopérabilité de FIPA, FIPA-OS fournit également une architecture basée sur des composants permettant le développement d'agents spécifiques à un domaine, pouvant utiliser les services des agents de la plateforme FIPA. Il est implémenté en Java.</p></dd><dt>FishMarket</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.iiia.csic.es/Projects/fishmarket/newindex.html" target="_top">www.iiia.csic.es/Projects/fishmarket/newindex.html</a> </p></li></ul></div><p>FM — Le projet FishMarket mené par l' "Artificial Intelligence Research Institute" (IIIA-CSIC) tente d'apporter sa contribution dans cette direction en développant FM, une maison de ventes aux enchères électronique gérée par des agents, qui a été transformée en banc d'essai pour les marchés d'enchères électroniques. Le cadre, conçu et mis en application comme extension de FM96.5 (une version Java de la maison de ventes de Fishmarket), permet de définir des scénarii de transactions basés sur les enchères à la criée (enchères hollandaises). FM fournit un cadre où les concepteurs d'agent peuvent réaliser des expériences contrôlées de telle manière qu'une multitude de scénarii de marchés expérimentaux — que nous considérons comme scénarii de compétition du fait de la nature concurrentielle du domaine — d'un réalisme et d'une complexité plus ou moins forts peuvent être établis, activés, et enregistrés ; et de telle manière que les agents hétérogènes (humains et logiciels) d'échange (acheteur et vendeur) peuvent être comparés, accordés et évalués.</p></dd><dt>GNU Robots</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.gnu.org/software/robots/robots.html" target="_top">www.gnu.org/software/robots/robots.html</a> </p></li></ul></div><p>GNU Robots est un jeu / divertissement où il vous faut construire un programme pour un petit robot, puis le regarder explorer un monde. Le monde en question est rempli de méchants qui peuvent vous blesser, d'objets dans lesquels vous pouvez frapper, et de nourriture que vous pouvez manger. Le but de ce jeu est de collecter autant de prix que possible avant d'être tué par un ennemi ou d'être à court d'énergie. Les robots peuvent être écrits en script "Guile" ou en utilisant une interface graphique.</p></dd><dt>Grasshopper</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.grasshopper.de/" target="_top">www.grasshopper.de/</a> </p></li></ul></div><p>Autre système d'agent en Java. Possède de nombreuses fonctionnalités et est activement développé. Commercial mais libre. Orienté à l'origine vers les systèmes embarqués.</p></dd><dt>Hive</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://hive.sourceforge.net/" target="_top">hive.sourceforge.net/</a> </p></li></ul></div><p>Hive est une plateforme logicielle en Java pour créer des applications réparties. En utilisant Hive, les programmeurs peuvent facilement créer des systèmes qui se connectent et utilisent des données provenant d'internet. Au fond, Hive est un environnement d'évolution pour les agents distribués, qui communiquent et se déplacent pour accomplir des tâches. Nous essayons de rendre Internet vivant.</p></dd><dt>ICM</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.nar.fujitsulabs.com/" target="_top">www.nar.fujitsulabs.com/</a> </p></li><li><p> Site sur SourceForge : <a href="http://sourceforge.net/projects/networkagent/" target="_top">sourceforge.net/projects/networkagent/</a> </p></li></ul></div><p>Inter-Agent Communication Model (ICM, Modèle de Communication Inter-agents) est un mécanisme de communication pouvant être utilisé pour envoyer des messages entre agents en mode asynchrone. Son domaine d'application prévu est le mécanisme de transport pour les langages de communication d'agent (ACLs), comme KQML et ACL de FIPA.</p></dd><dt>Jacomma</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://jacomma.sourceforge.net/" target="_top">jacomma.sourceforge.net/</a> </p></li><li><p> Site sur SourceForge : <a href="http://sourceforge.net/projects/jacomma/" target="_top">sourceforge.net/projects/jacomma/</a> </p></li></ul></div><p>Jacomma est une plateforme / un cadre de développement pour développer des agents d'information distribués, mobiles et réactifs, avec des capacités de communication hétérogène, en Java et Jpython.</p><p>Jacomma fournit un cadre de développement et un environnement d'exécution, qui repose sur l'infrastructure "Inter-Agent Communication Model". ICM définit un protocole de communication, une architecture de stockage et d'expédition de messages, et une infrastructure de communication bas niveau pour l'échange de messages. La communication est réellement asynchrone, basée sur des sockets TCP.</p><p>Il y a une rubrique sur ICM dans ce guide, vous pouvez également le trouver via un lien à partir de ce site.</p></dd><dt>Jade</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://sharon.cselt.it/projects/jade/" target="_top">sharon.cselt.it/projects/jade/</a> </p></li></ul></div><p>JADE (Java Agent DEvelopment Framework) est un cadre de développement logiciel complètement implémenté en langage Java. Cela simplifie l'implémentation de systèmes multiagents à travers un logiciel médian dont on est assuré qu'il est conforme aux spécifications de la FIPA, et à travers un ensemble d'outils permettant le débuggage et la phase de déploiement. La plateforme d'agents peut être distribuée entre diverses machines (qui n'ont même pas besoin de partager le même système d'exploitation) et sa configuration peut être réalisée au moyen d'une interface graphique distante. La configuration peut même être changée au cours de l'exécution, en déplaçant les agents d'une machine à une autre, au fur et à mesure que cela est nécessaire.</p></dd><dt>JAM Agent</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.marcush.net/IRS/irs_downloads.html" target="_top">www.marcush.net/IRS/irs_downloads.html</a> </p></li></ul></div><p>JAM accepte aussi bien les modes de raisonnement descendant (à base de buts à atteindre) que les modes de raisonnement ascendant (à partir des données). JAM choisit ses objectifs et plans selon la priorité maximale si le raisonnement métaniveau n'est pas utilisé, ou sur les plans de raisonnement métaniveau développés par l'utilisateur si ceux-ci existent. Pour JAM, la conceptualisation des objectifs et l'accomplissement des objectifs est définie plus classiquement (UMPRS est plus basé sur les performances comportementales que véritablement sur les objectifs) et fait la distinction entre les plans pour atteindre un objectif et les plans qui encodent simplement les comportements. Les objectifs-type implémentés incluent la réalisation (atteindre un état donné du système), la maintenance (atteindre de nouveau cet état donné du système), et la performance. L'exécution simultanée d'objectifs multiples est possible, avec une capacité de suspension et de reprise pour chaque processus d'objectif (c-à-d d'intention). Les plans de JAM ont des propriétés explicites de condition à priori et de fonctionnement qui restreignent leur applicabilité, une propriété de condition à posteriori et une section des propriétés du plan sont utilisées pour définir des caractéristiques spécifiques à un plan ou un domaine. Les constructions de plan disponibles incluent : l'ordonnancement, l'itération, les objectifs partiels, les segments de plan atomiques (c-à-d non-interruptible), l'exécution conditionnelle non déterministe et déterministe à n-branche, l'exécution parallèle de segments de plan multiples, la synchronisation basée sur l'état donné du système ou les objectifs, une section de manipulation des défaillances explicite, et la définition de primitives de fonction Java au moyen de sa construction dans JAM aussi bien que l'invocation de membres de classe prédéfinies (c-à-d propriétaire) via les capacités de réflexion de Java, sans avoir à le construire dans JAM.</p></dd><dt>JATLite</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://java.stanford.edu/" target="_top">java.stanford.edu/</a> </p></li></ul></div><p>JATLite fournit un ensemble de paquetages Java qui facilite la conception de systèmes multiagents en Java. JATLite fournit seulement un ensemble petit et léger de paquetages, de sorte que les développeurs puissent se débrouiller avec tous les paquetages avec un minimum d'efforts. Pour plus de souplesse, JATLite fournit quatre couches différentes, d'une implémentation abstraite à une implémentation "Router". Un utilisateur peut accéder à n'importe quelle couche fournie. Chaque couche est basée sur un ensemble de postulats différents. L'utilisateur peut choisir la couche appropriée selon les postulats de la couche et de l'application de l'utilisateur. La page d'introduction présente les fonctionnalités de JATLite et l'ensemble des postulats de chaque couche.</p></dd><dt>JATLiteBeans</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://waitaki.otago.ac.nz/JATLiteBean/" target="_top">waitaki.otago.ac.nz/JATLiteBean/</a> </p></li></ul></div><div class="itemizedlist"><ul type="disc"><li><p>Interface de JATLite améliorée et maniabilité accrue, comprenant l'envoi, la réception et l'analyse lexicale des messages KQML</p></li><li><p> Architecture extensible pour la gestion des messages et l'administration "thread of control" (NdT : unité d'exécution) des agents </p></li><li><p> Fonctions utiles pour l'analyse lexicale du contenu de messages KQML simples </p></li><li><p> JATLiteBean permet la transmission automatique aux agents animateurs de l'information sur les capacités des agents </p></li><li><p> Gestion automatique, facultative de la directive "forward" </p></li><li><p> Analyseur lexical des fichiers génériques de configuration </p></li><li><p> Vérificateur syntaxique de KQML </p></li></ul></div></dd><dt>Java(tm) Agent Template</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www-cdr.stanford.edu/ABE/JavaAgent.html" target="_top">www-cdr.stanford.edu/ABE/JavaAgent.html</a> </p></li></ul></div><p>Le JAT fournit un modèle pleinement fonctionnel, écrit entièrement en langage Java, qui permet de construire des agents logiciels qui communiquent en poste-à-poste ("peer-to-peer") avec une communauté d'autres agents répartis sur Internet. Bien que des portions du code utilisé dans chaque agent soient portables, les agents JAT ne sont pas mobiles mais restent statiques sur une seule machine. Ce comportement est en opposition à beaucoup d'autres technologies "agent". (Cependant, en utilisant le RMI Java, les agents JAT pourraient se déplacer dynamiquement sur une machine extérieure par l'intermédiaire d'un agent résidant sur cette seconde machine). Actuellement, tous les messages d'agent emploient KQML comme protocole de haut niveau ou comme emballeur de message. Le JAT possède une fonctionnalité pour échanger dynamiquement les "Ressources", qui peuvent inclure des classes Java (ex.: nouveaux langages ou interpréteurs, services distants, etc.), des fichiers de données et des informations intégrés dans les messages KQML.</p></dd><dt>Khepera Simulator</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://diwww.epfl.ch/lami/team/michel/khep-sim/index.html" target="_top">diwww.epfl.ch/lami/team/michel/khep-sim/index.html</a> </p></li></ul></div><p>Khepera Simulator est un paquetage logiciel du domaine public écrit par <a href="http://diwww.epfl.ch/lami/team/michel/" target="_top">Olivier MICHEL</a> pendant la préparation de son doctorat, au Laboratoire I3S, URA 1376 du CNRS et de l'Université de Nice-Sophia Antipolis, en France. Il permet d'écrire son propre contrôleur en langage C ou C++ pour le robot mobile Khepera, de le tester dans un environnement simulé, et comporte une belle interface graphique X11 colorée. De plus, si vous possédez un robot Khepera, le simulateur peut commander le vrai robot en utilisant le même algorithme de contrôle. Il est principalement destiné aux chercheurs étudiant les agents autonomes.</p></dd><dt>Lyntin</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://lyntin.sourceforge.net/" target="_top">lyntin.sourceforge.net/</a> </p></li></ul></div><p>Lyntin est un client "Mud" (Multi-User Dialog, dialogue multi-utilisateur) extensible et un cadre de développement d'agents autonomes, ou de robots, aussi bien que tout ce qui approche le "mudding" en général. Lyntin est basé sur du Python, langage de programmation amusant, dynamique et orienté objet, basé sur TinTin++, un beau client "mud".</p></dd><dt>Mole</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://mole.informatik.uni-stuttgart.de/" target="_top">mole.informatik.uni-stuttgart.de/</a> </p></li></ul></div><p>Mole est un système d'agent compatible avec les agents mobiles programmés en Java. Les agents de Mole sont un regroupement d'objets, qui n'ont pas de référence vers l'extérieur, et qui dans l'ensemble travaillent sur des tâches données par l'utilisateur ou par d'autres agents. Ils ont la capacité d'évoluer sur un réseau d'"emplacements" de façon autonome. Ces "emplacements" sont une abstraction de nœuds réels, qui existent dans le réseau sous-jacent. Ils peuvent accéder à des ressources de nature locale, en communiquant avec les agents dédiés représentant ces services. Les agents sont capables d'utiliser les services fournis par d'autres agents et de fournir également des services.</p></dd><dt>Narval</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.logilab.fr/narval.html" target="_top">www.logilab.fr/narval.html</a> et <a href="http://www.logilab.org/projects/narval" target="_top">www.logilab.org/projects/narval</a> </p></li></ul></div><p>Narval signifie Assistant Réseau pour la Visualisation de Ressources et Langage d'Agent ("Network Assistant for Ressources Visualization and Agent Language"). C'est un assistant personnel en réseau basé sur l'intelligence artificielle et les technologies d'agent. Il exécute des recettes (séquences d'actions) pour effectuer ses tâches. Il est très facile de définir une nouvelle action grâce à du XML et de l'implémenter en utilisant Python. Les recettes peuvent être codées et déboguées au moyen d'une interface graphique.</p></dd><dt>NeL</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.nevrax.org/" target="_top">www.nevrax.org/</a> </p></li></ul></div><p>NeL est en fait une bibliothèque de développement de jeux (pour les jeux multijoueurs massifs), mais je le signale ici car il devrait inclure une bibliothèque d'IA assez considérable. Voici une notice tirée du livre blanc :</p><p>Le but de cette bibliothèque d'IA est de fournir une approche pragmatique pour créer une plateforme d'agents distribués. Elle est centrée sur les agents ; des entités individuelles communiquant indépendamment de l'endroit, en utilisant un modèle action-réaction.</p></dd><dt>OAA</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.ai.sri.com/~oaa/" target="_top">www.ai.sri.com/~oaa/</a> </p></li></ul></div><p>"Open Agent Architecture" (Architecture Ouverte d'Agents) est un cadre dans lequel une communauté d'agents logiciels s'exécutant sur des machines distribuées peuvent travailler ensemble sur des tâches assignées par des participants de la communauté, humains ou non. La coopération distribuée et la communication haut-niveau sont deux idées centrales à l'origine d'OAA.</p><p>Il définit un langage de communication inter-agent et est compatible avec de multiples plateformes et langages de programmation.</p></dd><dt>PAI</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://utenti.quipo.it/claudioscordino/pai.html" target="_top">utenti.quipo.it/claudioscordino/pai.html</a> </p></li></ul></div><p>PAI ("Programmable Artificial Intelligence", Intelligence Artificielle Programmable) est un programme capable de soutenir une conversation dans sa langue maternelle, l'anglais. Ecrit en C++.</p></dd><dt>Penguin!</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site FTP : <a href="ftp://www.cpan.org/modules/by-category/23_Miscellaneous_Modules/Penguin/FSG/" target="_top">www.cpan.org/modules/by-category/23_Miscellaneous_Modules/Penguin/FSG/</a> </p></li></ul></div><p>Penguin est un module Perl version 5. Il vous fournira un ensemble de fonctions qui vous permettront de : <div class="itemizedlist"><ul type="disc"><li><p> envoyer du code Perl crypté, avec signature numérique vers une machine distante où il sera exécuté. </p></li><li><p> recevoir du code et, selon le signataire du message, l'exécuter dans un compartiment arbitrairement sécurisé et limité. </p></li></ul></div> La combinaison de ces fonctions permet le codage direct en Perl d'algorithmes qui permettent un commerce électronique sûr, des agents mobiles de récupération d'information, des applications d'aide à la navigation en contenu temps réel sur Internet ("live content"), le calcul distribué à répartition de charge, la mise à jour de logiciel à distance, l'administration de machines distantes, la propagation d'information basée sur le contenu, les applications de données partagées à travers Internet, les générateurs d'applications réseau, et ainsi de suite.</p></dd><dt>Ps-i</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://ps-i.sourceforge.net/" target="_top">ps-i.sourceforge.net/</a> </p></li></ul></div><p>Ps-i est un environnement permettant d'effectuer des simulations basées sur des agents. Il est multiplateforme, et un exécutable est disponible pour Win32. Ses fonctionnalités sont : <div class="itemizedlist"><ul type="disc"><li><p> langage déclaratif pour la spécification des modèles </p></li><li><p> langage de script Tcl/Tk conforme aux normes industrielles avec optimisation intégrée des sous-programmes, évaluation spéculative, de plus les utilisateurs du compilateur JIT xf86 pourront créer des modèles complexes sans dégradation de performance </p></li><li><p> interface conviviale </p></li><li><p> sauvegarde et restauration du déroulement du programme </p></li><li><p> changement des paramètres du modèle à la volée </p></li><li><p> visualisation des données : affichage d'agent par champs avec de multiples formes et couleurs, fenêtre de statistiques, visionneur d'agents, explorateur de sous-programmes et outil de mise en surbrillance d'agents </p></li></ul></div></p></dd><dt>RealTimeBattle</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.lysator.liu.se/realtimebattle/" target="_top">www.lysator.liu.se/realtimebattle/</a> </p></li></ul></div><p>RealTimeBattle (Bataille Temps Réel) est un jeu de programmation dans lequel les robots, contrôlés par des programmes, se battent les uns contre les autres. L'objectif est de détruire ses ennemis, à l'aide du radar pour observer les alentours et du canon pour tirer. <div class="itemizedlist"><ul type="disc"><li><p> Le jeu se déroule en temps réel, le programme du robot s'exécutant en tant que processus fils de RealTimeBattle. </p></li><li><p> Les robots communiquent avec le programme principal via l'entrée et la sortie standard. </p></li><li><p> Les robots peuvent être construits dans presque n'importe quel langage de programmation. </p></li><li><p> Autant de robots que voulu peuvent concourir simultanément si le système d'exploitation le permet. </p></li><li><p> Un langage de transmission de messages simple est utilisé pour communiquer, ce qui facilite le début de la construction de robots. </p></li><li><p> Les robots se comportent comme des objets physiques réels. </p></li><li><p> Vous pouvez créer vos propres arènes. </p></li><li><p> Hautement configurable. </p></li></ul></div></p></dd><dt>Remembrance Agents</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.remem.org/" target="_top">www.remem.org/</a> </p></li></ul></div><p>Remembrance Agents (les Agents du Souvenir) sont un ensemble d'applications qui veillent sur l'utilisateur et suggèrent des informations concernant la situation actuelle. Tandis que les moyens mnémoniques basés sur des requêtes aident à la remémoration directe, les agents de souvenir sont une mémoire associative étendue. Par exemple, la version du traitement de texte de RA met continuellement à jour une liste de documents en rapport avec ce qui est saisi ou lu dans un tampon d'emacs. Ces documents suggérés peuvent être n'importe quel fichier texte qui pourrait être en rapport avec ce que vous êtres en train d'écrire ou de lire. Ils pourraient être de vieux courriers électroniques liés au courrier que vous êtes en train de lire, ou des résumés de la recherche et des articles de journaux qui traitent du même sujet que ce que vous écrivez.</p></dd><dt>RoboTournament</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://robotournament.sourceforge.net/" target="_top">robotournament.sourceforge.net/</a> </p></li></ul></div><p>RoboTournament est un jeu inspiré de RoboRally où les joueurs programment leurs robots pour vaincre leurs adversaires. Les fonctionnalités de RoboTournament sont : types de jeu multiples : match à mort, rallye et capture de drapeau. Multijoueurs via TCP/IP, six armes y compris le BFG, un éditeur de cartes, et une grande variété d'éléments de tableau de bord.</p></dd><dt>SimRobot</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.informatik.uni-bremen.de/simrobot/index_e.htm" target="_top">www.informatik.uni-bremen.de/simrobot/index_e.htm</a> </p></li><li><p> Site FTP : <a href="ftp://ftp.uni-bremen.de/pub/ZKW/INFORM/simrobot/" target="_top">ftp.uni-bremen.de/pub/ZKW/INFORM/simrobot/</a> </p></li></ul></div><p>SimRobot est un programme de simulation de robots avec capteurs dans un environnement 3D. Ecrit en C++, il fonctionne sous Unix et X11 et requiert la boîte à outils graphique Xview. <div class="itemizedlist"><ul type="disc"><li><p> Simulation de la cinématique du robot </p></li><li><p> Définition de scène construite hiérarchiquement par l'intermédiaire d'une langue de définition simple </p></li><li><p> Divers capteurs intégrés : appareil photo, œil à facettes, mesure de distances, capteur de luminosité, etc. </p></li><li><p> Les objets sont définis comme des polyèdres </p></li><li><p> Emetteur défini abstraitement : peut être interprété par exemple comme lumière ou bruit </p></li><li><p> Images d'appareil-photo calculées selon les algorithmes de raytracing ou de Z-buffer que l'on connaît par l'infographie </p></li><li><p> Interface logicielle de capteur/moteur spécifique pour communiquer avec la simulation </p></li><li><p> Mappage de textures sur les surfaces de l'objet : bitmaps dans divers formats </p></li><li><p> Visualisation complète de la scène : rendu en fil de fer sans lignes cachées, ni valeurs de capteur ou d'acteur </p></li><li><p> Le contrôle des agents et l'opération dans l'environnement sont aussi bien interactifs que traités par lots </p></li><li><p> Détection des collisions </p></li><li><p> Capacité d'extension grâce à des types d'objet définis par l'utilisateur </p></li><li><p> Communication par socket possible vers, par exemple, le logiciel de traitement d'image Khoros </p></li></ul></div></p></dd><dt>Sulawesi</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://wearables.essex.ac.uk/sulawesi/" target="_top">wearables.essex.ac.uk/sulawesi/</a> </p></li></ul></div><p>Un cadre de développement appelé Sulawesi a été conçu et implémenté pour aborder ce qui est considéré comme des défis importants dans les interfaces utilisateur tout usage [NdT : en anglais le terme wearable est utilisé, pour exprimer la possibilité d'un système que l'on peut emporter sur soi, intégré ou non aux vêtements] : la capacité d'accepter une entrée venant de n'importe quel nombre de modalités, et d'effectuer au besoin une traduction vers n'importe quel nombre de sorties modales. Cela est fait principalement au moyen d'un ensemble d'agents qui agissent par anticipation sur l'entrée.</p></dd><dt>TclRobots</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.nyx.net/~tpoindex/" target="_top">www.nyx.net/~tpoindex/</a> </p></li></ul></div><p>TclRobots est un jeu de programmation, semblable à « Core War ». Pour jouer à TclRobots, vous devez écrire un programme en Tcl qui contrôle un robot. La mission du robot est de survivre à une bataille contre d'autres robots. Deux, trois ou quatre robots combattent pendant une bataille, chacun utilisant un programme différent (ou éventuellement le même programme dans différents robots). Chaque robot est équipé avec un radiomètre à balayage, un canon, et un mécanisme de déplacement. Un duel ne s'arrête que lorsqu'il ne reste qu'un seul robot opérationnel. Les robots peuvent combattre individuellement, ou par équipe. Un tournoi peut avoir lieu avec n'importe quel nombre de programmes de robot, chaque robot jouant contre tous les autres dans une poule, en face à face individuel. Un simulateur de bataille est disponible pour aider à la mise au point des programmes de robot.</p><p>Le programme TclRobots fournit un environnement physique, imposant certains paramètres de jeu auxquels tous les robots doivent adhérer. TclRobots fournit également une vue de la bataille, et une interface de contrôle pour l'utilisateur. Conditions pour utiliser TclRobots : un interpréteur "wish" conçu pour Tcl 7.4 et Tk 4.0.</p></dd><dt>TKQML</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.csee.umbc.edu/tkqml/" target="_top">www.csee.umbc.edu/tkqml/</a> </p></li></ul></div><p>TKQML est une application / un ajout KQML à Tcl/Tk, ce qui permet aux systèmes basés sur Tcl de communiquer facilement avec un puissant langage de communication d'agent.</p></dd><dt>The Tocoma Project</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.tacoma.cs.uit.no/" target="_top">www.tacoma.cs.uit.no/</a> </p></li></ul></div><p>Un agent est un processus qui peut migrer à travers un réseau informatique dans le but de satisfaire des requêtes émises par des clients. Les agents sont une manière attrayante de décrire les calculs distribués sur tout le réseau.</p><p>Le projet TACOMA se concentre sur le support des systèmes d'exploitation pour les agents et sur la manière dont les agents peuvent être utilisés pour résoudre des problèmes traditionnellement destinés aux systèmes d'exploitation. Nous avons implémenté une série de systèmes prototypes pour accueillir des agents.</p><p>TACOMA version 1.2 est basé sur UNIX et TCP. Le système est compatible avec des agents écrits en C, Tcl/Tk, Perl, Python, et Scheme (Elk). Il est implémenté en C. Cette version de TACOMA a été rendue publique en Avril 1996.</p><p>Nous nous concentrons actuellement sur les problèmes d'hétérogénéité, de tolérance aux anomalies, de sécurité et de gestion. En outre, plusieurs applications de TACOMA sont en construction. Nous avons implémenté StormCast 4.0, un vaste système en réseau de surveillance météorologique sur Internet, en utilisant TACOMA et Java. Nous sommes actuellement en cours d'évaluation de l'application, et nous prévoyons de construire une nouvelle version de StormCast qui devrait être achevée en Juin 1997.</p></dd><dt>Ummon</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.advogato.org/proj/Ummon/" target="_top">www.advogato.org/proj/Ummon/</a> </p></li></ul></div><p>Ummon est un robot conversationnel avancé et "open source". Le principe général du robot est qu'il ne possède aucune connaissance initiale en vocabulaire ou grammaire ; il apprend tout à la volée. De nombreuses techniques d'IA seront explorées au cours du développement d'Ummon pour arriver à une communication "humaine" réaliste avec le support de différentes personnalités paramétrables.</p></dd><dt>UMPRS Agent</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.marcush.net/IRS/" target="_top">www.marcush.net/IRS/</a> </p></li></ul></div><p>UMPRS supporte le mode de raisonnement descendant, avec objectifs à atteindre et il choisit ses objectifs et plan selon la priorité maximale. L'exécution de plusieurs buts simultanément est possible, ainsi que la suspension et reprise pour chaque tâche de but (c-à-d d'intention). Les plans d'UMPRS ont un attribut intégré de précondition/moteur d'exécution qui restreint leur applicabilité. Les plans de construction disponibles comprennent : l'ordonnancement, l'itération, la définition de sous-objectifs, les blocs atomiques (c-à-d non-interruptible), l'exécution conditionnelle déterministe à n-branches, une section de gestion de pannes explicite, et la définition de fonction primitive en C++.</p></dd><dt>Virtual Secretary Project (ViSe)</dt><dd><p>(Tcl/Tk)</p><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www.vise.cs.uit.no/vise/" target="_top">www.vise.cs.uit.no/vise/</a> </p></li></ul></div><p>Ce qui motive le projet Secrétaire Virtuelle est la construction d'agents logiciels intelligents basés sur des modèles utilisateurs, qui pourraient dans la plupart des cas remplacer les hommes pour des tâches de secrétariat ; ces agents seraient basés sur l'informatique mobile moderne et les réseaux informatiques. Le projet comporte 2 différentes phases : la première phase (ViSe1) se concentre sur le filtrage des informations et la migration de processus, son but étant de créer un environnement sécurisé pour les agents logiciels en utilisant le concept des modèles utilisateur ; la seconde phase (ViSe2) est axée sur la coopération efficace et intelligente des agents dans un environnement distribué, son but étant de construire des agents coopératifs pour obtenir un niveau d'intelligence élevé. (codé en Tcl/TclX/Tix/Tk)</p></dd><dt>VWORLD</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://zhar.net/projects/vworld/" target="_top">zhar.net/projects/vworld/</a> </p></li></ul></div><p>Vworld est un environnement simulé, écrit en prolog, pour la recherche avec des agents autonomes. Il est actuellement plus ou moins en version bêta. Il fonctionne bien avec SWI-prolog, et devrait fonctionner avec Quitnus-prolog, avec seulement quelques modifications. Il est destiné à être utilisé comme outil pédagogique pour des projets d'élèves traitant de prolog et des agents autonomes. Il est livré avec trois mondes ou environnements de démonstration, ainsi qu'avec des exemples d'agents qui leurs sont destinés. Il y a deux version maintenant. L'une d'elles est écrite pour SWI-prolog et l'autre pour LPA-prolog. Globalement, la documentation est faite (dans l'optique d'un cadre étudiant/professeur), et une interface graphique est prévue.</p></dd><dt>WebMate</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://www-2.cs.cmu.edu/~softagents/webmate/" target="_top">www-2.cs.cmu.edu/~softagents/webmate/</a> </p></li></ul></div><p>WebMate est un agent personnel pour la recherche et la navigation sur le World-Wide Web. Il vous accompagne quand vous surfez sur Internet et vous fournit ce que vous désirez. Ses fonctionnalités comprennent : <div class="itemizedlist"><ul type="disc"><li><p> Amélioration des recherches, dont la recherche parallèle, affinage des mots-clés de la recherche en utilisant notre technologie d'extraction de mots-clés appropriés, retour d'information pertinente, etc. </p></li><li><p> Assistant à la navigation, comprenant l'apprentissage de votre centre d'intérêt actuel, avec recommandation de nouveaux URLs selon votre profil et les ressources sélectionnées, gestion de vos signets de Netscape ou IE, envoie de la page actuellement affichée à vos amis, etc. </p></li><li><p> Navigation hors ligne, y compris le téléchargement des pages suivant la page affichée pour une navigation hors ligne. </p></li><li><p> Filtrage des en-têtes HTTP, comprenant l'enregistrement des en-têtes HTTP et de toutes les transactions effectuées entre le navigateur et les serveurs WWW, etc. </p></li><li><p> Vérification de la page HTML et détection des erreurs et liens morts, etc. </p></li><li><p> Programmation en Java, indépendant du système d'exploitation, fonctionnant en multiprocessus </p></li></ul></div></p></dd><dt>Zeus</dt><dd><div class="itemizedlist"><ul type="disc"><li><p> Site Web : <a href="http://more.btexact.com/projects/agents/zeus/" target="_top">more.btexact.com/projects/agents/zeus/</a> </p></li></ul></div><p>La construction de systèmes multiagents implique une longue période de développement et exige des solutions à quelques difficultés techniques considérables. C'est ce qui a motivé le développement de la boîte à outils ZEUS, qui fournit une bibliothèque de composants logiciels et des outils qui facilitent la conception, le développement et le déploiement rapide de systèmes d'agent.</p></dd></dl></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s05.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ar01s07.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">5. A venir </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> 7. Les langages de programmation</td></tr></table></div></body></html>