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).
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.
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
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.
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.
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.
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.
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.
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.
Encore un autre système d'agent en Java...
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.
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.
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.]
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.
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é).
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.
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.
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.
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.
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.
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.
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.
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.
Il y a une rubrique sur ICM dans ce guide, vous pouvez également le trouver via un lien à partir de ce site.
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.
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.
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.
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.
Khepera Simulator est un paquetage logiciel du domaine public écrit par Olivier MICHEL 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.
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".
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 noeuds 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.
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.
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 :
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.
"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.
Il définit un langage de communication inter-agent et est compatible avec de multiples plateformes et langages de programmation.
PAI ("Programmable Artificial Intelligence", Intelligence Artificielle Programmable) est un programme capable de soutenir une conversation dans sa langue maternelle, l'anglais. Ecrit en C++.
Penguin est un module Perl version 5. Il vous fournira un ensemble de fonctions qui vous permettront de :
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.
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 :
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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++.
(Tcl/Tk)
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)
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.
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 :
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.
Bien que n'importe quel langage de programmation puisse être utilisé pour la recherche sur la vie ou l'intelligence artificielle, les langages de programmation décrits ci-dessous sont, si ils n'ont pas été spécifiquement créés pour cela, utilisés intensivement pour la programmation d'intelligence artificielle.
Version linux gratuite de l'environnement de développement Lisp de Franz Inc. Vous pouvez la télécharger ou ils vous expédieront un CD gratuitement (vous n'avez même pas à payer de frais d'expédition). Elle est généralement considérée comme l'une des meilleures plateformes Lisp.
APRIL est un langage de programmation symbolique conçu pour le codage de systèmes basés sur des agents, mobiles et distribués dans l'environnement Internet. Il a des fonctionnalités avancées telles qu'un sous-langage de macro, l'envoi et la réception asynchrone de messages, la mobilité du code, le filtrage, des fonctions d'ordre supérieur et la déclaration typée de variables. Ce langage est compilé en pseudo-code binaire qui est ensuite interprété par le moteur d'exécution APRIL. APRIL a maintenant besoin qu'InterAgent Communications Model (ICM) soit installé avant de pouvoir être installé à son tour. [Ed. ICM est disponible sur le même site web]
Ciao est un système complet Prolog englobant ISO-Prolog avec une nouvelle conception modulaire qui permet à la fois la restriction et l'extension du langage. Parmi les extensions de Ciao, on trouve actuellement les arguments nommés (enregistrements), les fonctions d'ordre supérieur, les contraintes, les objets, les prédicats persistants, une bonne base pour l'exécution distribuée (d'agents) et la concurrence. Les bibliothèques supportent aussi la programmation WWW, les sockets, et les interfaces externes (C, Java, Tcl/Tk, les bases de données relationnelles, etc.). Un environnement pour Emacs, un compilateur autonome, et un interpréteur de commandes haut niveau sont également fournis.
DHARMI est un langage spatial de haut niveau facile à utiliser dont les composants sont administrés de manière transparente par un processus en tâche de fond appelé "the Habitat". Comme son nom l'indique, ce langage a été conçu pour faire des prototypes de modélisation et la gestion des données actives. Les programmes peuvent être modifiés pendant leur exécution. Cela est rendu possible en estompant la distinction entre le code source, le programme et les données.
ECoLisp ("Embeddable Common Lisp", Lisp Commun Embarquable) est une implémentation de "Common Lisp" conçue pour être insérable dans des applications écrites en C. ECL utilise des conventions d'appel C standard pour les fonctions Lisp compilées, ce qui permet aux programmes C d'appeler facilement des fonctions Lisp et vice versa. Aucune interface de fonctions externes n'est requise : les données peuvent être échangées entre le C et le Lisp sans besoin de conversion. ECL est basé sur un "Common Runtime Support (CRS)" (Appui d'Exécution Commun) qui fournit des fonctionnalités de base pour la gestion de la mémoire, le chargement et le vidage dynamique des images binaires, et le soutien de processus multiple d'exécution. Le CRS est intégré à une bibliothèque qui peut être liée au code de l'application. L'ECL est modulaire : les modules principaux sont les outils de développement du programme (niveau supérieur, débogueur, trace d'une exécution, exécution pas à pas), le compilateur, et CLOS. Une version native de CLOS est disponible dans ECL : on peut de configurer ECL avec ou sans CLOS. Une version d'exécution d'ECL peut être construite avec les modules requis par l'application seulement. Le compilateur ECL compile du Lisp vers le C, puis fait appel au compilateur GCC pour créer les binaires.
Esterel est à la fois un langage de programmation, dédié à la programmation de systèmes réactifs, et un compilateur qui traduit les programmes Esterel en machine à états finis. Il est particulièrement bien adapté à la programmation de systèmes réactifs, y compris les systèmes temps-réel et les automates de commande.
Seul l'exécutable est disponible pour le compilateur de langage. :P
Gödel est un langage de programmation déclaratif à usage global, de la famille des langages de programmation de logique. C'est un langage fortement typé, le système de typage étant basé sur de la logique multitri avec du polymorphisme paramétrique. Il a un système de module. Gödel supporte les entiers à précision infinie, les nombres rationnels à précision infinie, et les réels à virgule flottante également. Il peut résoudre les contraintes sur des domaines finis d'entiers et également les contraintes rationnelles linéaires. Il supporte le traitement des ensembles finis. Il a également une règle de calcul flexible et un opérateur d'élagage qui généralise la validation des langages de programmation de logique concourante. Un accent considérable est mis sur l'infrastructure méta-logique de Gödel qui fournit un support significatif pour les méta-programmes qui font de l'analyse, de la transformation, de la compilation, de la vérification, du débogage, et ainsi de suite.
CLisp est une implémentation de "Common Lisp" réalisée par Bruno Haible et Michael Stoll. Il supporte principalement le Lisp décrit par Common LISP: The Language (2nd edition) et le standard Common Lisp ANSI. CLisp comprend un interpréteur, un byte-compilateur, un grand sous ensemble de CLOS ("Object-Oriented Lisp", Lisp Orienté Objet), une interface de langage externe et, pour certaines machines, un éditeur d'écran.
On choisit la langue d'interface utilisateur (anglais, allemand, français) au moment de l'exécution. Les principaux paquetages qui fonctionnent dans CLisp incluent CLX et Garnet. CLisp ne requiert que 2 Mo de mémoire seulement.
CMU Common Lisp est un environnement de programmation Common Lisp de "puissance industrielle" de domaine public. Une grande partie des changements de X3j13 ont été incorporés dans CMU CL. Partout où cela était possible, ceci a été fait afin de permettre de manière transparente l'utilisation soit du CLtL1, soit du CL ANSI proposé. Les nouvelles fonctionnalités les plus intéressantes pour les utilisateurs sont probablement les fonctions SETF, LOOP et la macro WITH-COMPILATION-UNIT.
GNU Common Lisp (GCL) possède un compilateur et un interpréteur pour Common Lisp. Il était connu auparavant sous le nom de Kyoto Common Lisp. Il est très portable et extrêmement efficace sur une large gamme d'applications. Il soutient la comparaison au niveau performance avec les Lisps commerciaux sur un grand nombre de démontreurs de théorèmes et de systèmes d'algèbre symbolique. Il supporte la spécification CLtL1 mais évolue vers la définition proposée de norme ANSI. GCL compile vers du C et utilise ensuite les compilateurs C d'optimisation de code natif (ex.: GCC). Une fonction comportant un nombre fixe d'arguments et une valeur se transforme en une fonction C du même nombre d'arguments, renvoyant une valeur, GCL a donc une efficacité maximale sur de tels appels. Il a un garbage collector [NdT : ramasse-miettes] classique qui offre une grande liberté au compilateur C pour mettre les valeurs Lisp dans des registres arbitraires.
Il possède un débogueur Lisp niveau source pour le code interprété, avec affichage du code source dans une fenêtre Emacs. Son outil de profilage (basé sur les outils de profilage C) compte les appels de fonction et le temps passé dans chaque fonction.
GNU Prolog est un compilateur Prolog gratuit, et résolveur de contraintes sur les domaines finis, développé par Daniel Diaz. GNU Prolog accepte des programmes en Prolog+contraintes et produit des exécutables natifs (comme gcc le fait à partir de code source C). L'exécutable obtenu est alors autonome. La taille de cet exécutable peut être relativement petite puisque GNU Prolog peut éviter de lier le code de la plupart des prédicats intégrés inutilisés. Les performances de GNU Prolog sont très encourageantes (comparables à celles des systèmes commerciaux).
En plus de la compilation en code exécutable natif, GNU Prolog offre un interpréteur interactif classique (haut niveau) avec un débogueur.
La partie Prolog se conforme aux standards ISO pour Prolog avec beaucoup d'extensions très utiles à l'usage (variables globales, interface système d'exploitation, sockets, ...).
GNU Prolog comprend également un efficace résolveur de contraintes sur Domaines Finis (FD), ce qui ouvre la programmation logique par contraintes à l'utilisateur, en combinant la puissance de la programmation par contraintes à la déclarativité de la programmation logique.
Mercury est un nouveau langage de programmation logique, purement déclaratif. Tout comme Prolog et d'autres langages de programmation logique existants, c'est un langage très haut niveau qui permet aux programmeurs de se concentrer sur le problème plutôt que sur les détails bas niveau tels que la gestion de la mémoire. Contrairement à Prolog, qui est orienté vers la programmation exploratoire, Mercury est conçu pour la construction de grands systèmes logiciels fiables et efficaces par des équipes de programmeurs. Par conséquent, programmer en Mercury apporte une touche différente par rapport à la programmation en Prolog.
Le système Mozart fournit un support de pointe dans 2 domaines : le calcul distribué ouvert et l'inférence basée sur les contraintes. Mozart implémente Oz, un langage concourant orienté objet avec synchronisation des flux de données. Oz combine la programmation distribuée et concourante avec l'inférence logique basée sur les contraintes, ce qui en fait un choix excellent pour le développement des systèmes multiagents. Mozart est une plateforme idéale aussi bien pour les applications distribuées polyvalentes que pour les problèmes difficiles nécessitant une optimisation sophistiquée et des capacités d'inférence. Nous avons développé des applications de planification et de gestion du temps, de placement et de configuration, de représentation du langage naturel et des connaissances, de systèmes multiagent et d'outils de collaboration sophistiqués.
SWI est une version gratuite de Prolog dans la famille Prolog Edinburgh (la rendant de ce fait très similaire à Quintus et à beaucoup d'autres versions), qui contient : une grande bibliothèque de prédicats intégrés, un système de modules, un garbage collector, une interface bidirectionnelle avec le langage C, et beaucoup d'autres dispositifs encore. Il est censé être un langage éducatif, donc son code compilé n'est pas le plus rapide. Bien que sa similarité avec Quintus permette un portage facile.
XPCE est librement et gratuitement disponible en exécutable pour la version Linux de SWI-Prolog. XPCE est un paquetage/environnement de développement d'interface graphique (GUI) X-window orienté objet.
Kali Scheme est une implémentation distribuée de Scheme qui permet une transmission efficace d'objets d'ordre supérieur tels que les fermetures et continuations. L'intégration d'équipements de communication distribuée dans un langage de programmation évolué engendre un certain nombre d'abstractions et de paradigmes nouveaux pour l'informatique distribuée. Parmi ces derniers nous avons les politiques de migration des processus et l'équilibrage de charge, personnalisés par l'utilisateur, les calculs distribués liés incrémentalement, les agents, et les applications client-serveur paramétrées. Kali Scheme supporte la simultanéité et la communication, grâce aux procédures et continuations de première classe. Il intègre les procédures et continuations dans un cadre distribué basé sur des messages qui permet à n'importe quel objet Scheme (y compris les vecteurs de code) d'être envoyé et reçu dans un message.
RScheme est une version orientée objet étendue du dialecte Scheme de Lisp. RScheme est librement redistribuable, et il offre des performances raisonnables en dépit de son extraordinaire portabilité. RScheme peut être compilé en C, et le C peut ensuite être compilé avec un compilateur C habituel pour générer du code machine. Cependant, par défaut, RScheme compile en code objet qui est interprété par une machine virtuelle (un moteur d'exécution). Cela assure une compilation rapide et permet de conserver un code de taille réduite. En général, nous recommandons l'utilisation du système de génération de code objet (activé par défaut), et de ne compiler en code machine que vos programmes dont le temps d'exécution est critique. Cela permet un bon compromis taille mémoire/temps d'exécution. (voir le site web pour plus de détails)
Scheme 48 est une implémentation de Scheme basée sur une architecture de machine virtuelle. Scheme 48 est conçu pour être simple, souple, fiable, et rapide. Il devrait être facilement portable vers des machines 32 bits qui ont POSIX et le support du C ANSI. En plus de l'environnement de développement et des procédures usuelles intégrées de Scheme, les logiciels de bibliothèques incluent le support des macros hygiéniques (comme cela est décrit dans le rapport Scheme Revised^4), du multitâche, des enregistrements, de la gestion des exceptions, des tables de hachage, des tableaux, des pointeurs nuls, et du FORMAT. Scheme 48 implémente et exploite un système expérimental de modules vaguement dérivé de Standard ML et de Scheme Xerox. L'environnement de développement supporte les changements interactifs de modules et d'interfaces.
SCM est conforme à la révision 5 du rapport sur l'Algorithmic Language Scheme (le langage algorithmique Scheme) et à la spécification IEEE P1178. SCM est écrit en C. Il utilise les utilitaires suivants (tous disponibles sur le site ftp) :
Shift est un langage de programmation permettant de décrire les réseaux dynamiques d'automates hybrides. De tels systèmes sont constitués de composants qui peuvent être créés, interconnectés et détruits au fur et à mesure que le système évolue. Les composants montrent un comportement hybride, constitué de phases continues séparées par des transitions à événements discrets. Les composants peuvent évoluer indépendamment, ou ils peuvent interagir par leurs entrées, leurs sorties et les événements exportés. Le réseau d'interaction lui-même peut évoluer.
YAP est un compilateur Prolog à haute performance développé par LIACC/Universidade do Porto. Son moteur Prolog est basé sur WAM (Warren Abstract Machine, Machine Abstraite Warren), avec plusieurs optimisations pour de meilleures performances. YAP suit la tradition d'Edinburgh, et est en grande partie compatible avec Prolog DEC-10, Quintus Prolog, et particulièrement avec le C-Prolog. Le travail sur la version la plus récente de YAP tends vers plusieurs objectifs :