TP1: Simulation d'Algorithmes d'Election : DAVIS

L'objectif de ce TP est d'étudier différents algorithmes d'élection à l'aide de davis, un environnement de visualisation d'algorithmes distribués pour le simulateur JBotSim.

  • Logiciels de Simulation et Visualisation
  • Exemple: Algorithme d'Election
  • Complexité
  • Algorithm LCR

Logiciels de Simulation et Visualisation

Installer le logiciel et lire la documentation

Installation simple

Téléchargez udavis.zip dans le répertoire courant. Dézipper udavis.zip

  $ unzip udavis.zip

Pour simplifier les commandes ensuite, ajouter ce chemin au PATH

  $ export PATH=$PATH:`pwd`/bin

Pour vérifier que tout fonctionne faire

  $ udavis
  µdavis (version)
    A micro viewer for JBotsim.
  
  Usage: udavis [-x] <network class> <id scheme> <size> <algo class>

Ces logiciels nécessitent Java 8 (ou supérieur). En cas de problème, vérifiez votre CLASSPATH.

Ces logiciels sont en version béta, n'hésitez-pas à emmanuel.godard.ANTISPAM@lif.univ-mrs.fr?subject=Bug%20Davis.

Exemple: Algorithme d'Election

Pour vous familiariser avec le logiciel, téléchargez le fichier suivant. Puis faire

  $ udavis UnidirRing RandomIds 25 QElection.java

Que constatez-vous ?

Components de l'algorithm

Familiariser vous avec les components différents du code écrit à "QElection.java"
  • Comment construire un anneau unidirectionnel? Pour les autres topologies possible voir ici
  • Comment faire pour l'attribution d'identifiants aux processus? Voir le doc

L’algorithme écrit dans le fichier "QElection.java" est pour l'election dans les anneaux unidirectionnels. Essayez avec des anneaux de taille différente.

Complexité

On étudie la complexité ie le nombre de messages transmis pendant l'exécution de l'algorithme.

Chaque message reçus apparait sur une ligne de la forme

  RECV   649	40 (terminated) -> 24 (passive): 40

où le deuxième champ correspond au numéro du message. Le nombre total de messages est donc le numéro du dernier message reçu.

Notez que vous pouvez lancer une exécution automatiquement (sans GUI) et rediriger les logs dans un fichier avec

  $ udavis -x UnidirRing RandomIds 25 QElection.java > QElection.log

Calculer la complexité moyenne en effectuant au moins 15 exécutions. Est-ce que les résultats correspondent avec l’analyse théorique vue pendant le cours ?

On pourra créer de nouveaux schémas d'attribution d'identifiants en s'inspirant de RandomIds.java

Algorithm LCR

Modifier le code dans "QElection.java" pour implementer l'algorithme de LCR