next up previous contents
suivant: Architecture de l'agent monter: Une implémentation d'équipe pour précédent: Une implémentation d'équipe pour   Table des matières


Langage d'implémentation

Notre implémentation utilise un mélange des langages C++ et Scheme. La motivation du choix du langage C++ pour le corps du programme est un compromis entre rapidité d'exécution (le programme doit être capable de se comporter en temps réel) et confort de programmation. Le langage C++ offre des possibilités objet intéressantes, utiles dans l'implémentation d'un système multi-agents [#!stroustrup-1999!#]: les fonctionnalités objet standard (héritage, surclassage, encapsulation, etc.), une bibliothèque de manipulation de données de haut niveau (STL), un symbolisme de niveau intermédiaire, etc. La nature intrinsèquement modulaire de l'architecture d'un agent impose de fait l'utilisation d'un langage objet, une partie de la méthodologie objet étant pratiquement identique à celle de la méthodologie agent [#!wooldridge-1998!#]. Par ailleurs, malgré des déficiences connues dans l'implémentation de certaines composantes de la norme C++, le compilateur g++ de GNU fournit un bon environnement de développement multi-plates-formes. De plus et ce n'est pas une mince motivation, l'utilisation du langage C++ nous permet de réutiliser plus étroitement les composants définis par l'équipe CMU-2000.

La motivation de l'utilisation du langage Scheme est l'ajout de fonctionnalités de script, d'évaluation à la volée d'instructions symboliques de haut niveau et de manipulation de structures de données complexes par les agents composant l'équipe de football simulée. Cette fonctionnalité est déjà utilisée lors du démarrage du programme (lecture d'un fichier d'initialisation), où elle permet de faire exécuter des opérations initiales à chacun des agents (se placer sur le terrain en fonction de la stratégie d'équipe par exemple) et en cours de jeu à la lecture de l'entrée standard. Nous envisageons de plus l'utilisation de ce langage de script pour symboliser des actes de langage des agents de notre système, tout comme pour formaliser les arbres décisionnels des organes de décision. Le choix de Scheme en tant que langage d'extension interprété a été effectué sur la base de notre expérience avec ce langage, sur les possibilités offertes (aspect fonctionnel, représentation de structures de données complexes, etc.) mais aussi sur l'implémentation Scheme de GNU (guile), dont la qualité est un argument déterminant. Guile est composé d'une bibliothèque de primitives permettant d'inclure un interpréteur Scheme dans un programme compilé (C, C++, etc.). Cette inclusion permet d'accéder réciproquement aux données de l'interpréteur Scheme et du programme et de définir des méthodes Scheme exécutant du code compilé. Une problématique reste cependant soulevée: une correspondance fine entre la structure objet de notre programme et le paradigme fonctionnel du langage Scheme reste à implémenter.


next up previous contents
suivant: Architecture de l'agent monter: Une implémentation d'équipe pour précédent: Une implémentation d'équipe pour   Table des matières
Benjamin DRIEU 2001-10-12