Planification et coordination multiagents sous incertitude



Documents pareils
JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Systèmes Multi-Agents

Master IAC Philippe Caillou DÉVELOPPEMENT DE SMA. Cours 1b

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Alfstore workflow framework Spécification technique

TP1 : Initiation à Java et Eclipse

Cours de Génie Logiciel

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Auto-évaluation Programmation en Java

Cours de Systèmes d Exploitation

Bases Java - Eclipse / Netbeans

Projet de Veille Technologique

Messagerie asynchrone et Services Web

Introduction à la Programmation Parallèle: MPI

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation (RMI)

Introduction à ElasticSearch

Utilisation d objets : String et ArrayList

Espace de travail collaboratif pour un environnement de grille pervasive

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

OpenPaaS Le réseau social d'entreprise

Architecture Orientée Service, JSON et API REST

Mise en œuvre des serveurs d application

OCL - Object Constraint Language

Introduction à la programmation concurrente

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Un ordonnanceur stupide

Géolocalisation. Remy Sharp

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Interfaces graphiques avec l API Swing

Chapitre VI- La validation de la composition.

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Lier Erlang avec d autres langages de programmation

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Introduction à Windows Script Host DescoDev

Premiers Pas en Programmation Objet : les Classes et les Objets

1 Mesure de la performance d un système temps réel : la gigue

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Calcul Parallèle. Cours 5 - JAVA RMI

INITIATION AU LANGAGE JAVA

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

Guide d utilisation pour W.access - Client

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java Licence Professionnelle CISII,

Initiation à JAVA et à la programmation objet.

Module d anonymisation

Solutions du chapitre 4

Plan du cours. Historique du langage Nouveautés de Java 7

Annexe : La Programmation Informatique

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

La base de données XML exist. A. Belaïd

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Créer et partager des fichiers

TP1 : Initiation à Java et Eclipse

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Conception et contrôle des SMA tolérants aux fautes

Programmer en JAVA. par Tama

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Corrigé des exercices sur les références

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Programmation par composants (1/3) Programmation par composants (2/3)

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Le prototype de la fonction main()

Dis papa, c est quoi un bus logiciel réparti?

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Cours 1 : La compilation

Projet de programmation (IK3) : TP n 1 Correction

as Architecture des Systèmes d Information

Java pour le Web. Cours Java - F. Michel

Java Naming and Directory Interface

F. Barthélemy. 17 mai 2005

Projet Active Object

Conditions générales d affaires (CGA) Portail clients SanitasNet

Education Delivery Intelligent Tool

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Projet gestion d'objets dupliqués

ACTIVITÉ DE PROGRAMMATION

Open Source Job Scheduler. Installation(s)

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Date: 22/10/12 Version: 3.2

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Génie Logiciel avec Ada. 4 février 2013

Exécutif temps réel Pierre-Yves Duval (cppm)

contact@nqicorp.com - Web :

Projet de développement

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Java DataBaseConnectivity

Transcription:

Planification et coordination multiagents sous incertitude Aurélie Beynier CoCoMa, Master 2 ANDROIDE 4 novembre 2014

Les plateformes agents Faciliter la mise en place d applications basées sur les systèmes à base d agents. Permettre le déploiement de ces applications sur différents systèmes, réseaux de communication... Assurer la gestion d opérations telles que la migration des agents ou la communication. Permettre l intégration des systèmes développés avec d autres technologies

: Présentation Plateforme pour le développement d applications à base d agents API Java Développée depuis 1998 par Telecom Italia (Open Source depuis 2000, licence LGPL) Basée sur les spécifications FIPA fournit des fonctionnalités, indépendantes d une application spécifique, afin de simplifier la réalisation d applications distribuées à base d agents (gestion des envois de messages entre agents, de la mobilité des agents, etc.)

Paradigmes Un agent est autonome et proactif : chaque agent s exécute sur un thread qui lui est propre. Il contrôle son cycle de vie et décide de manière autonome comment agir. Les agents peuvent communiquer : La communication est basée sur des envois de messages asynchrones. Il n y a pas de dépendances temporelles entre les agents. Les destinataires peuvent choisir de traiter certains messages et pas d autres. Il n y pas de blocage du côté de l expéditeur.

Paradigmes (2) Système pair à pair : Chaque agent est identifié par un nom unique (Agent Identifier, AID). Il peut entrer ou quitter la plateforme n importe quand. Il est possible de découvrir de nouveau agent grâce à un système de pages blanches (AMS) et de pages jaunes (DF). Chaque agent peut émettre ou recevoir des messages à n importe quel moment.

Architecture Une plateforme est composée de containers pouvant être distribués sur un réseau. Un container contient des agents et procure tous les services nécessaires à l exécution des agents. Plusieurs containers peuvent être créés sur une même machine. Chaque container correspond à un processus JAVA (une JVM). 1 agent correspond à un thread Java. Il est possible de faire communiquer des agents appartenant à des containers différents.

Architecture (2) Le main container est créé lors du lancement de la plateforme. Tous les autres containers sont lancés à partir de celui-ci. Il gère la table des containers (CT) à laquelle s enregistre chaque container lorsqu il est créé. Il gère la table des descripteurs des agents (GADT, Global Agent Descriptor Table) : enregistre chaque agent présent dans la plateforme, leur localisation et leur état. Il gère les pages blanches et les pages jaunes.

Architecture (3) AMS : Agent Management System Pages blanches Chaque agent doit s enregistrer auprès de l AMS afin d obtenir un AID valide (géré par la plateforme) DF : Directory Facilitator Pages jaunes Chaque agent peut enregistrer les services qu il propose auprès du DF. Un agent peut également demander à être informé lorsque certaines modifications sont réalisées (ajout ou suppression d un certain service par exemple). L AMS et le DF sont implémentés par des agents.

Création d agents Afin de créer un nouveau type d agents, il est nécessaire de définir une classe héritant de la classe Agent de. Cette classe doit implémenter la méthode setup() qui contient l initialisation de l agent. Il est possible de spécifier des arguments lors de la création de l agent. Ces arguments peuvent être obtenus dans la classe Agent à l aide de la méthode getarguments Les arguments doivent alors être spécifiés lors de la création de l agent En ligne de commande : séparés par des espaces et entourés de parenthèses Avec GUI : dans le textarea prévu à cet effet.

Création d agents (2) import jade.core.aid; import jade.core.agent; public class HelloWorldAgent extends Agent { } } public void setup(){ System.out.println("Hello, my name is "+ getlocalname()); Compiler la classe avec Java puis créer un agent dans avec cette classe.

Création d agents (3) propose différents agents prédéfinis : DUMMY AGENT : Permet l envoi de messages à des agents. Utile lors de la conception afin de vérifier la réaction d un agent à la réception d un message. SNIFFER AGENT : Permet de visualiser l enchaînement des messages entre les agents. Représentation graphique de l échange des messages. Les agents à sniffer peuvent être sélectionnés. INTROSPECTOR AGENT : Permet de débugger le comportement d un agent Permet de savoir quels comportements d un agent sont exécutés, dans quel ordre, quand?

Ajout de comportements Un agent peut avoir un ou plusieurs comportements. Un agent n exécute qu un seul comportement à la fois. C est au concepteur de gérer l alternance des comportements des agents. Pour ajouter un comportement à un agent : addbehaviour() Pour définir un comportement : Étendre une des classes de jade.core.behaviour : Behaviour OneShotBehaviour CyclicBehaviour

Ajout de comportements (2) Quelle que soit la classe dont on hérite, il faut implémenter les méthodes : public void action() public boolean done() Lorsque le comportement d un agent est exécuté, la méthode action() de son comportement est exécutée jusqu à ce qu elle se termine (elle ne s interrompt pas pour laisser l exécution à un autre comportement) attention aux boucles infinies dans la méthode action(). La méthode done() indique si le comportement s est exécuté complètement et peut être retiré de l ensemble des comportements que l agent exécute.

Ajout de comportements (3) Tout comportement hérite des méthodes onstart() et onend() de la classe Behaviour. La méthode onstart() est appelée avant l exécution de la méthode action(). La méthode onend() est appelée après la méthode done() lorsque celle-ci retourne true. Les classes WakerBehaviour et TickerBehaviour permettent d implémenter des comportements qui se produisent à certains moments (par exemple, 10 secondes après la création de l agent ou toutes les 10 secondes).

Ajout de comportements (4) Il est possible de composer des comportements : SequentialBehaviour : comportements fils exécutés dans l ordre de leur ajout FSMBehaviour : définition d une machine à états finis où les états sont des comportements, les transitions dépendents des valeurs de terminaison des comportements ParallelBehaviour : comportements fils exécutés en parallèle

Communication entre agents Messages FIPA-ACL : émetteur du message (AID) liste des destinataires {AID} performatif (REQUEST, INFORM, QUERY IF,...) contenu, langage, ontologie, éventuelles informations additionnelles (id de conversation, reply-with,...)

Communication entre agents (2) ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addreceiver(new AID("Peter", AID.ISLOCALNAME)); msg.setlanguage("francais"); msg.setontology("conversation"); msg.setcontent("bonjour, comment ca va?"); send(msg);

Communication entre agents (3) Les agents doivent gérer eux-mêmes leur boîte aux lettres Relever la boîte aux lettres avec receive() Gestion FIFO ACLMessage msg = receive(); if(msg!= NULL){ // Traiter le message }

Communication entre agents (4) Message bloquant : permet à un comportement d être suspendu jusqu à l arrive d un message public void action(){ ACLMessage msg = myagent.receive(); if(msg!= null){ // comportement à exécuter }else{ block(); } }

Lancer Depuis un terminal : java -cp jade.jar:. jade.boot -gui -host localhost -port 8888 Peter:HelloWorldAgent Depuis un programme Java : Création d un runtime Lancement de la plateforme Création des agents

Lancer /* Création du runtime*/ Runtime rt = Runtime.instance(); /*Lancement de la plateforme*/ Profile pmain = new ProfileImpl("localhost", 8888, null); AgentContainer mc = rt.createmaincontainer(pmain); /* Lancement d un agent */ AgentController ac = mc.createnewagent("peter", HelloWorld.class.getName(), null); ac.start();

Utilisation de Installation Installer Java Télécharger et décompresser la dernière version de (http://jade.tilab.com/) Modifier votre CLASSPATH Tutorial : http://jade.tilab.com/doc/tutorials/programming -Tutorial-for-beginners.pdf