Cours d'Intelligence Artificielle (S. Landau) ENSTA 1° Année , INT 22 (2000-01)

TP n°6 : Systèmes Multi-Agents réactifs



Le but de ce TP est de mieux comprendre par l'expérience ce qu'est un système multi-agents réactif et ce que cela apporte.



  1. EcoRésolution et application au Taquin



    Dans les pages web d'Alexis Drogoul, et depuis sa page sur l'écorésolution aller sur la page de résolution du le taquin avec EPS. Comparez avec l'approche « IA classique » vue dans la première partie du cours (algorithmes de recherche dans les graphes). Puis, exécutez l'applet Java (cliquer sur « start »).

  2. Programmation de systèmes multi-agents réactifs avec StarLogo.



    StarLogo est langage de programmation d'agents réactifs développé par Mitchel Resnick (MIT) pour promouvoir le " decentralized mindset " (état d'esprit dépourvu de centralisation), qu'il défend et illustre également dans Turtles, Termites and Traffic Jams. Explorations in Massively Parallel Microworlds (MIT Press).

    1/ Description de StarLogo.

    Lancez le logiciel par : /usr/local/bin/starlogo

    Le logiciel est lancé à partir du répertoire /usr/local/pack/starlogo-1.2, dans lequel vous devriez trouver aussi de la documentation. La documentation est aussi disponible en ligne, sur le site de StarLogo, dont un exemple de mise en train, la liste des commandes StarLogo et un tutoriel.

    Le logiciel se compose par défaut de deux fenêtres : une d'interface (" StarLogo "), une de contrôle (" Control Center "). Cette dernière comporte deux onglets : Turtle et Observer.

    Les entités manipulées par StarLogo sont en effet de trois sortes : l'observer est un outil de monitoring, il a un fonctionnement centralisé ; les " tortues " (turtles) sont des agents mobiles opérant en parallèle ; enfin, les patches constituent l'environnement des tortues (l'environnement est découpé en une grille de NxM patches). Chacune de ces entités peut exécuter des commandes StarLogo. La fenêtre d'interface comporte une barre d'outils permettant d'ajouter des boutons, des sliders, etc. et une vue du système (patches et turtles). Les fenêtres du Control Center se subdivisent en deux : la partie supérieure (Command Center) permet de contrôler l'observer ou les tortues directement, la partie inférieure de définir les procédures qui leur sont associées.







    Exemple :

    Dans la fenêtre Observer Command, Center, tapez :

    clearall (ou ca)

    create 200 (ou crt 200)

    puis, dans Turtles Command Center :

    forward 10 (ou fd 10)

    repeat 36 [fd 10 right 10]

    On peut écrire une procédure d'initialisation dans Observer Procedures comme suit :

    to setup

    clearall

    create 200

    ask-turtles

    [ fd 10

    repeat 36 [fd 10 right 10]]

    end

    Puis on donnera dans l'Observer Command Center l'ordre : setup

    La description de toutes les commandes devrait aussi se trouver dans

    /usr/local/pack/starlogo-1.2/documentation/All_commands.html

     

    2/ Exercices

    EXERCICE 1 - Un exemple de fonctionnalité émergente : le tri collectif

    Le but de cet exercice est de se familiariser avec StarLogo en implémentant les comportements permettant un tri collectif réactif (exemple vu en cours). On modélisera le problème comme suit : un patch noir ó rien dans l'environnement, un patch jaune ó une ressource présente. Un patch ne peut contenir qu'une ressource. On doit rassembler toutes les ressources.

    a) Partez du canevas " tri0.slogo " (à défaut, créez un nouveau projet, avec une procédure " setup " qui crée un nombre paramétrable d'agents et les utilise pour initialiser l'environnement, en marquant aléatoirement des patches en jaune). Examinez les procédures, boutons, sliders, etc. déjà présents.

    Quelles sont les capacités d'action, de perception nécessaires ? Combien de tâches (au sens d'EMF : séquence comportementale fixe déclenchée par un stimulus) doit-on donner aux agents ? Comment se décomposent-elles ? En déduire les procédures StarLogo.

    b) Sauver le projet sous un nouveau nom. Récrire la procédure setup pour obtenir 3 couleurs dans l'environnement. Modifier les procédures des turtles pour trier les ressources par couleur. Qu'observez-vous ?

    Proposez et essayez des mécanismes pour provoquer la formation de tas distincts.

     

    EXERCICE 2 - Simulation de phénomènes naturels : l'agrégation chez Dictyostelium discoïdeum

    Les acrasiales (Dictyostelium discoïdeum) [Chauvet, 1987, Traité de physiologie descriptive] ont un cycle de vie comportant successivement : des spores isolées donnant naissance à des amibes isolées, un agrégat d'amibes, puis un corps multicellulaire complexe (plasmodium) présentant une organisation topologique et fonctionnelle (organe locomoteur notamment) et donnant naissance à des spores.

    On cherche à représenter la phase d'agrégation de ces organismes. Le mécanisme met en oeuvre une molécule (" cyclic AMP " ou cAMP). Lorsque les amibes entrent dans la phase d'agrégation, elles émettent cette molécule dans leur environnement lors de leurs déplacements (a priori aléatoires). Elles sont par ailleurs attirées par la même substance. Ces molécules, de plus, diffusent dans l'environnement et s'évaporent.

    a) Implémentez les comportements correspondants en StarLogo (en partant de " slime0.slogo "). La quantité de substance déposée dans l'environnement et le taux d'évaporation seront paramétrables. Qu'observe-t-on ?

    b) L'agrégation ne survient en fait que lorsque les amibes ne trouvent plus de nutriments dans le milieu. Modifiez le comportement des agents en conséquence. Quels sont les problèmes en termes de sélection d'action ? On étudiera 1° un environnement dans lequel existe un gradient de nutriments ; 2° un environnement comportant une quantité aléatoire de nutriments par patch.