Giter Site home page Giter Site logo

damienlegros / dedale Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 29.68 MB

Projet FOSYMA master 1 ANDROIDE : 2020 - 2021 Projet d'introduction aux systèmes multi-agents codé en Java

Home Page: https://dedale.gitlab.io/

HTML 80.95% JavaScript 2.52% CSS 2.85% Java 13.68%
java jade graphstream multiagentssystems

dedale's Introduction

Projet Dedale

Projet FoSyMa 2020-2021

Projet en binôme : Damien Legros et Cédric Cornède

Projet d'introduction aux systèmes multi-agents effectué au cours du master 1 ANDROIDE de janvier à juin 2021 dans le cadre de l'UE FOSYMA.

Le projet consiste à développer des comportements pour des agents en Java à l'aide de la bibliothèque GraphStream et Jade. Le code se base du code du projet Dedale. Le but du projet est de créer des agents avec des comportements pour bloquer un agent ennemi sur le graphe en l'empêchant de se déplacer. Les agents n'ont pas de vision et trouve l'ennemi grâce à une trace orange autour de lui. Les agents se détectent entre eux en s'envoyant des signaux avec des distances limitées (sans destinataires précis, car les positions ne sont pas connues) et en mettant à jour leur carte et les positions connues des agents.

Les fichiers suivant ont été ajoutés/modifiés pour définir le comportement des agents :

  • MapRepresentation.java
  • FSMExploAgent.java
  • YellowSetup.java
  • ObservationBehaviour.java
  • SignalBehaviour.java

Dans le fichier MapRepresentation.java, des fonctions ont été faites pour travailler sur le graphe de la carte dans laquelle les agents se déplacent. Cela permet par exemple de détecter le type de graphe (cycle ou arbre) ou encore de récuperer des noeuds du graphe pour l'exploration.

Dans le fichier FSMExploAgent.java, les agents sont inscrits dans les pages jaunes de Jade grâce au comportement présent dans le fichier YellowSetup.java pour pouvoir par la suite être détectés par les autres agents. Une boucle s'enchaîne ensuite entre les comportements d'observation du graphe (présent dans le fichier ObservationBehaviour.java et de signaux aux autres agents SignalBehaviour.java.

Dans le fichier ObservationBehaviour.java, les agents récupèrent les informations des cases environnantes et mettent à jour leur carte. Ils choisissent ensuite leur futur déplacement en conséquence. Une fois l'exploration de la carte terminée, ils passent dans un mode de chasse à la recherche de l'ennemi en fonction de la position de la trace de l'ennemi connu et des informations données par les autres agents via les signaux. Il est possible de bloquer l'ennemi lors de l'exploration de la carte si sa trace est répérée.

Dans le fichier SignalBehaviour.java, les agents envoient des informations par rapport à leurs positions et aux informations qu'ils ont sur l'ennemi. Lors de l'exploration, les agents envoient aussi leur carte si des agents à proximité ont été détectés pour accélérer l'exploration entière de la carte par tous les agents. Ce comportement permet aussi de récupérer les informations des autres agents sur leurs positions et les informations qu'ils ont sur l'ennemi pour pouvoir par la suite choisir la prochaine case à explorer dans le comportement d'observation.

Voici des exemples de cartes essayées au cours du projet :

Arbre : 2 ennemis et 3 agents

Exemple sur Arbre

Cycle : 1 ennemi et 5 agents

Exemple sur Cycle

dedale's People

Contributors

damienlegros avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.