Simulation d’agents mobiles avec davis

Introduction

On va travailler sur ce TP sur la simulation d’agents mobiles avec le simulateur davis. Le but sera de travailler sur les algorithmes vus en cours. davis est un environnement de visualisation d’algorithmes distribués pour le simulateur JBotSim développé au LIS.

Prérequis

Pour que cette séance se passe bien, nous vous conseillons d’installer les logiciels suivant :

Installation davis

Afin de vous faciliter le travail, nous avons créer un projet déjà configuré.

Adresse du projet : https://gitlab.lis-lab.fr/davis/basic-example.git

Lancer IntelliJ, puis commencez un nouveau projet depuis un dépot git en

Dans les deux cas, renseignez l’adresse du dépôt git donnée au dessus.

Compilation et exécution

Avec gradle en ligne de commande

Vous pouvez sauvegarder toutes les configurations dans le fichier scénario.

  1. Écrivez vos algorithmes dans le répertoire src : MyAlgo.java
  2. Ouvrez le fichier scr/scenario et ajoutez une ligne ayant les 5 paramètres suivants : <ScenarioName> <networkGeneratorFile> <scheme> <size> <algoFile : MyAlgo.java>
  3. Utilisez la ligne de commande ./gradlew runScenarioName

Avec Intellij et gradle

  1. Écrivez vos algorithmes dans le répertoire src : MyAlgo.java
  2. Ouvrez le fichier scr/scenario et ajoutez une ligne ayant les 5 paramètres suivants : <scenarioName> <networkGeneratorFile> <scheme> <size> <algoFile : MyAlgo.java>
  3. Rafraichissez le panneau gradle (onglet à droite d’IntelliJ).
  4. Dans Tasks/application du panneau gradle, votre test devrait apparaître.
  5. Cliquez dessus pour l’exécuter.

Interface graphique

Fonctionnement des agents mobiles dans davis

Les agents mobiles disposent des primitives suivantes :

Rendez-vous dans l’anneau

Pour cet exercice, nous allons considérer des agents avec identifiants dans un anneau anonyme. On va considérer un anneau de taille 18 avec 2 agents disposés de manière symétrique et comme premier algorithme une marche aléatoire (une chance sur deux à chaque étape d’aller dans une direction).

On va utiliser pour cette partie le générateur de topologie RingAnon2AgentsSym.java et l’algorithme RandomWalkRing.java. On utilisera donc le scénario suivant (déjà présent dans le projet) :

RandomWalkRing RingAnon2AgentsSym.java Anonymous 18 RandomWalkRing.java

Questions

Rendez-vous dans le chemin

Pour cet exercice, nous allons considérer des agents avec identifiants dans un chemin anonyme. On va considérer un chemin de taille 18 avec 2 agents et comme premier algorithme une marche aléatoire (choix aléatoire uniforme parmi la ou les directions possibles).

On va utiliser pour cette partie le générateur de topologie RectangularTwoAgents.java et l’algorithme RandomWalkPath.java. Le générateur de topologie est écrit pour une grille mais il suffit de fixer la hauteur à un pour obtenir un chemin.

On utilisera donc le scénario suivant (déjà présent dans le projet) :

RandomWalkPath RectangularTwoAgents.java Anonymous 18*1 RandomWalkPath.java

Questions

Rendez-vous dans la grille

Pour cet exercice, on va garder le générateur de topologie RectangularTwoAgents.java mais cette fois on va considérer une grille de taille \(18\times 10\). Vous utiliserez au départ l’algorithme RandomWalkRectangular.java que vous allez devoir écrire.

On utilisera donc le scénario suivant (à ajouter dans le dossier src/scenario) :

RandomWalkRectangular RectangularTwoAgents.java Anonymous 18*10 RandomWalkRectangular.java

Questions

Questions supplémentaires