jade dimax

133
Outils de Développement de Systèmes Multi-Agents (SMA) Zahia Guessoum [email protected] www-desir.lip6.fr/~guessoum/

Upload: clover-acacia

Post on 20-Jul-2015

108 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Jade dimax

Outils de Développement de Systèmes Multi-Agents (SMA)

Zahia Guessoum

[email protected]

www-desir.lip6.fr/~guessoum/

Page 2: Jade dimax

2Systèmes multi-agents

• Objectif 1 : Analyse théorique et expérimentale des mécanismes d ’auto-organisation– modéliser, expliquer et simuler des phénomènes naturels,

et susciter des modèles d ’auto-organisation

• Objectif 2 : Réalisation d ’artefacts distribués capables d ’accomplir des tâches complexes par interaction – réaliser des systèmes informatiques complexes à partir de

concepts d ’agent, de communication, de coopération et de coordination d ’actions.

Page 3: Jade dimax

AOSEAgent Oriented Software

Engineering

Page 4: Jade dimax

4

Génie logiciel multi-agents (AOSE)

• Des méthodes multi-agents et des méta-modèles multi-agents

• Des outils de développements

Page 5: Jade dimax

5

Génie logiciel multi-agents (AOSE)

• Premier méta-modèle : AALAADIN ou AGR

Page 6: Jade dimax

6

Génie logiciel multi-agents (AOSE)

• Méta-modèle plus riche : MOISE+ propose trois spécifications– Une spécification structurelle

– Une spécification fonctionnelle

– Une spécification déontique (normative)

Page 7: Jade dimax

7

Génie logiciel multi-agents (AOSE)

• Plusieurs méthodes– TROPOS

– INGENIAS

– ADELEF

– PASSI

– GAIA

Page 8: Jade dimax

8

Génie logiciel multi-agents (AOSE)

• Plusieurs méta-modèles– TROPOS

– INGENIAS

– ADELEF

– PASSI

– GAIA

– MOISE+

Page 9: Jade dimax

9

Génie logiciel multi-agents (AOSE)

• Plusieurs méta-modèles : Une tentative d’unification– ADELFE + PASSI + INGENIAS

– Porblème : un méta-modèle trop complexe et inutilisable

• Nouvelle approche : des fragments et des «MAS Method Fragment Repository »

Page 10: Jade dimax

Netlogo

Page 11: Jade dimax

11

Netlogo

• Environnement de développement multi-agents réactifs, pour l'étude de systèmes complexes

• On peut gérer des centaines (voire des milliers) d'agents qui opère en même temps dans un environnement

• Ecrit en Java • Très facile à utiliser

– Interface conviviale..

– Tourne sur toutes les machines (Windows, Mac OS,Linux)

– Des tutoriaux complets et très faciles à lire

Page 12: Jade dimax

12

Netlogo

• Un système dans Netlogo est composé de deux types d’agents :– Patches : constitue des "zones", des portions de

l'environnement

– Tortues : créatures qui peuvent se déplacer et agir dans cet environnement

Page 13: Jade dimax

13

Netlogo

• Initialisation de l’environnement et interface graphique

• Commandes• Comportements

• Trois bons tutoriaux (à voir en TD/TP)

Page 14: Jade dimax

14

Netlogo : le langage

Les procédures :

to setup clear-all

create-turtles 100

ask turtles [ setxy random-xcor random-ycor ]

end

Page 15: Jade dimax

15

Netlogo : le langage

Ants

to septup

patches-own [

chemical ;; amount of chemical on this patch

food ;; amount of food on this patch (0, 1, or 2)

nest? ;; true on nest patches, false elsewhere

nest-scent ;; number that is higher closer to the nest

food-source-number ;; number (1, 2, or 3) to identify the food sources

]

Page 16: Jade dimax

16

Netlogo : le langage

Ants

to setup

set-default-shape turtles "bug"

crt population

[ set size 2

set color red ] ;; red = not carrying food

setup-patches

do-plotting

end

Page 17: Jade dimax

17

Netlogo : le langage

Ants

to setup-patches

ask patches

[ setup-nest

setup-food

recolor-patch ]

End

Page 18: Jade dimax

18

Netlogo : le langage

to go ;; forever button

ask turtles [ if who >= ticks [ stop ] ;; delay initial departure

ifelse color = red

[ look-for-food ] [ return-to-nest nest

wiggle

fd 1 ]

diffuse chemical (diffusion-rate / 100)

ask patches

[ set chemical chemical * (100 - evaporation-rate) / 100

recolor-patch ]

tick

do-plotting

end

Page 19: Jade dimax

19

Netlogo : les procédures/fonctions

To draw-polygon [ num-sides size ]

pen-down

repeat num-sides [fd size rt (360 / num-sides) ]

end

Fonctions (retournent une valeur)

to-report absolute-value [ number ]

ifelse number >= 0 [ report number ]

[ report 0 - number ]

end

Page 20: Jade dimax

20

Netlogo : quelques primitives

• Définition de variables globales – globals [ max-energy ]

• Définition de variables locales (tortues/patches– turtles-own [energy speed]!

• Set : Affectation de variables – set energy 34

– set color-of turtle 5 red

Page 21: Jade dimax

21

Netlogo : quelques primitives

• Ask : Demande à un ensemble de faire quelque choseask turtles [

set color white

setxy random-xcor random-ycor ]

ask patch 2 3 [ set pcolor green ]

]

• Create-turtle : Crée un ensemble n de tortues Create-turtle n [

set color white

set size 1.5 ;; easier to see!

set energy random (2 * max-energy)

setxy random-xcor random-ycor

]

Page 22: Jade dimax

22

Netlogo : quelques primitives

• Un sous ensemble d'entités (patches ou tortues)– turtles with [color = red ]

– patches with [pxcor > 0]

– turtles in-radius 3

• aux éléments duquel on peut demander quelque chose– ask turtles with [color = red] [bouge 30]

Page 23: Jade dimax

23

Netlogo : structures de contrôle

• If : Deux formes: if et ifelseif <condition> [<instructions>]

ifelse <condition>[<instructions-then>]

[<instructions-else>]

• Repeat : Pour répéter une instructionrepeat <nombre> [<instructions>]

Page 24: Jade dimax

24

Netlogo : Un peu de géométrie

• On peut dessiner des figures à partir du comportements des tortues– Pour avancer: fd <n>

– Pour se diriger vers la droite (gauche):• rt <n> (ou lt <n>) ;; tourne d'un angle de n (en degrés)

vers la droite (ou la gauche)

Page 25: Jade dimax

25

Netlogo : Un peu de géométrie

• On peut dessiner des figures à partir du comportements des tortues– Pour avancer: fd <n>

– Pour se diriger vers la droite (gauche):• rt <n> (ou lt <n>) ;; tourne d'un angle de n (en degrés)

vers la droite (ou la gauche)

Page 26: Jade dimax

26

Netlogo : Un peu de géométrie

• Exemples de Figures

To carre [n] repeat 4 [fd n rt 90]

End

To cercle-carres [n]

repeat 9 [carre n rt 30]

end

Page 27: Jade dimax

DIMAX

Page 28: Jade dimax

28

Des objets aux agents

• Objets actifs • Malgré leur apparence de sujets communiquant, les

objets actifs ne savent pas réfléchir sur leur comportement, sur les liens qu'ils entretiennent avec d'autres objets...(Ferber 89).

• Des objets actifs aux entités proactives– Un agent a un but

– Et son comportement est dirigé vers ce but

Page 29: Jade dimax

29

Des objets aux agents

Proactive Componentpublic void startUp() {

this.proactivityInitialize();

this.proactivityLoop();

this.proactivityTerminate();

}

public void proactivityLoop() {

while(this.isActive()) && (this.isAlive())

{ this.preActivity();

this.step();

this.postActivity();

}}

Page 30: Jade dimax

30

Des objets aux agents

Deux principales méthodes abstraites :

• public abstract void step();

• public abstract Boulean isActive();

Page 31: Jade dimax

31

Des objets aux agents

ProactiveComponent

engine : ProactiveComponentEngine

step( )isAlive( )startUp( )proactivityLoop()

ProactiveComponentEngine

proactivity : ProactiveComponent

run()

ThreadedProactiveComponentEngine

thread : Thread

Runnable

Page 32: Jade dimax

32

Des objets aux agents

• Le framework des proactive components est le noyau de la plate-forme DIMAX

• DIMAX fournit plusieurs bibliothèques et frameworks pour faciliter le développement des agents et SMA

• Mais si vous avez compris les ProactiveComponent, le reste est très simple

Page 33: Jade dimax

33

Des objets aux agents

• Exemple simple : des agents sur le cercle

• Exemples moins simples : – les proies/prédateurs

– Le jeu de taquin

– …

• Un benchmark classique :– Factorielle

– Question : une solution multi-agents pour montrer l’intérêt d’utiliser les SMA

Page 34: Jade dimax

34

Les agents DIMAX

• Des ProactiveComponents+ capacité de communication

+ utilisation de différents paradigmes pour représenter le comportement des agents (ATN, règles, apprentissage ….)

Page 35: Jade dimax

35

Les agents DIMAX

AgentName

id : String

0..*

PrpoactiveComponentManager

proactiveComponents : Vector

startAll( )startAllWithThrreads( )

ProactiveComponent

step( )isAlive( )activate( )isActive( )

0..*

ReactiveCommunicatingAgent

acquaintances : HashMapvmailBox : MailBowcom : AgentAddress

getId( )setId( )readMailBox( )receiveMessage( )sendMessage( )sendAll( )

AgentAddress

behavior : ProactiveComponent

receiveMessage( )

BasicReactiveAgent

idAgentIdentifier

Page 36: Jade dimax

36

Les agents DIMAX

ReactiveCommunicatingAgent

acquaintances : HashMapvmailBox : MailBowcom : AgentAddress

getId( )setId( )readMailBox( )receiveMessage( )sendMessage( )sendAll( )

ATNBasedCommunicatingAgent RulesListBasedReactiveCommunicatingAgent CBRBasedReactiveAgent

Page 37: Jade dimax

37

Les agents DIMAX

• Pour implémenter des agents– Créer la classe après avoir sélectionner la classe DIMAX la

mieux appropriée

– Décrire la structure des agents– Des attributs

– Ecrire le comportement des agents• Des méthodes qui utilisent les primitives de base :

sendMessage, readMailBox …

– Instancier la classe

– Active l’agent• Instance.activate()

Page 38: Jade dimax

38

Les agents DIMAX

• Exercice 1 : explorer la hiérarchie de la cette classe– Écrire des agents qui naissent,

– Qui affichent leur âge à chaque étape (un an)

– Qui disparaissent quand ils ont atteint 15 ans.

Page 39: Jade dimax

39

Les agents DIMAX

• Pour communiquer, les agents peuvent utiliser l’envoi de message.

• Quelques primitives :– sendMessage

– readMailBox

– …

• Question : un agent doit connaître les agents avec lesquels il communique– un agent doit avoir un identifiant

– On doit retrouver un agent avec son identifiant : service de nommage (pages blanches)

Page 40: Jade dimax

40

Les middelwares de DIMAX

• FIPA– Initialiser le AMS

– Activer les agents with FIPA• anAgent.activateWithFIPA()

Page 41: Jade dimax

41

Les middelwares de DIMAX

• DARX– Initialiser le NameServer

• NameServerImpl

– Activer un serveur DARX sur chaque hôte

– Activer les agents with DMARX• anAgent.activateWithDARX()

Page 42: Jade dimax

42

Les agents DIMAX

• Exercice 2 : reprendre la classe d’agents précédente et l’enrichir– Écrire des agents qui naissent,

– Qui affiche leur âge à chaque étape (un an)

– Qui communiquent leur âge à tous les agents tous les 5 ans

– Qui disparaissent quand ils ont atteint 15 ans.

Page 43: Jade dimax

43

Les agents DIMAX

• Exercice 3 : Des vendeurs et des acheteurs

– Un vendeur qui a un produit à vendre

– des acheteurs qui veulent acheter le produit

– Le vendeur envoie un message : appel à proposition pour acheter un produit

– Les acheteurs font une proposition au vendeur

– Le vendeur sélectionne la meilleure offre et envoie un acceptation à l’acheteur sélectionné et un refus aux autres

Page 44: Jade dimax

JADE

Page 45: Jade dimax

45

Plan

• FIPA-OS

• FIPA ACL• Agents Jade

Page 46: Jade dimax

46

FIPA

Répertoire de services

Services

communiquer, négocier, déléguer …

conn

exio

n

requête

représenter les services

déclarer les servicesdisponibles

Page 47: Jade dimax

47

FIPA

• Résoudre les problèmes technologiques de base des plates-formes agentsenvoi de messages, mobilité, identification, adressage

• Standardisation au niveau connaissance• Standards de fait ou de droit

créer un standard a priori ou standardiser une technologie largement acceptée ?

Page 48: Jade dimax

48

FIPA

• ARPA KSE (Knowledge Sharing Effort)– KQML - Langage de communication entre agents

• Devenu FIPAACL

– KIF - Formalisme de représentation de connaissances

– Ontolingua - Outil de définition d’ontologies

• OMG– MASIF

Page 49: Jade dimax

49

FIPA

• Agent Management

• Agent Communication Language• Agent / Software Integration• Applications descriptions

Personal Travel Assistance, Personal Assistant, Audio/Video Entertainment & Broadcasting, Network Management & provisioning

Page 50: Jade dimax

50

FIPA Platform

DirectoryFacilitator

AgentCommunication

Channel

AgentManagement

System

Internal Platform Message Transport

Agent

AgentPlatform

Software

Page 51: Jade dimax

51

FIPA Platform

Page 52: Jade dimax

52

FIPA ACL

• Communication par messages entre agents développés indépendamment par– un format de message standard

– une sémantique

– des structures de conversations communes pour simplifier l’implémentation

• Pas de liaison avec l’implémentation

• Support pour les tâches courantes

Page 53: Jade dimax

53

FIPA ACL

• Un message ACL– Acte communicatif

– Paramètres - couples attribut/valeur

• Spécification formelle de la sémantique de l’acte relativement à– émetteur, receveur

– CA, contenu

Page 54: Jade dimax

54

FIPA ACL

(inform

:sender agent1

:receiver hpl-auction-server

:content

(price (bid good02) 150)

:in-reply-to round-4

:language sl

:ontology hpl-auction

)

Page 55: Jade dimax

55

FIPA ACL

Page 56: Jade dimax

56(request :sender peter@iiop://agentland.com:50/acc :receiver df@iiop://fipa.org:50/acc :ontology fipa-agent-management :language SL1 :protocol fipa-request :content (action df@iiop://fipa.org:50/acc (register (:df-description (:agent-name peter@iiop://agentland.com:50/acc (:services (:service-description (:service-type video-on-demand)

(:service-ontology itut-vod)

(:service-name vod-1)

(:fixed-properties (genre sport))

(:interaction-protocols (fipa-request))

(:ontology fipa-agent-management)

(:address iiop://fipa.org/acc)

(:ownership peter)

(df-state active)))))

Page 57: Jade dimax

Agents JADE

Page 58: Jade dimax

58JADE : Java Agent DEvelopment framework

• But : développement et exécution de SMA conformes– aux normes FIPA

– service de nommage

– service de pages jaunes– transport de messages– bibliothèque des protocoles d'interaction de FIPA

• Les agents sont des coquilles auxquelles il faut ajouter des comportements implémentant des services/fonctionnalités

• Les communications utilisent le standard ACL• Possibilité de communications entre plateformes JADE

Portail du projet : http://jade.tilab.com

Page 59: Jade dimax

59JADE : Java Agent DEvelopment framework

• Projet Open Source, licence LGPL• Distribution possible sur différents serveurs• Modifiable en cours d’exécution (mobilité des agents)• Contrôlée par Telecom Italia Lab, qui reste propriétaire du

projet • Résultat des efforts conjoints de différents acteurs réunis au

sein du JADE Board (fondé en 2003) dont les missions sont la promotion, la gouvernance et l’implémentation des évolutions de JADE

Page 60: Jade dimax

60

60

Architecture de JADE

Page 61: Jade dimax

61

61

Une application JADE est une plateforme déployée sur une ou plusieurs machines

La plateforme héberge un ensemble d’agents, identifiés de manière unique, pouvant communiquer de manière bidirectionnelle avec les autres agents

Chaque agent s’exécute dans un conteneur (container) qui lui fournit son environnement d’exécution; il peut migrer à l’intérieur de la plateforme

Toute plateforme doit avoir un conteneur principal qui enregistre les autres conteneurs

Une plateforme est un ensemble de conteneurs actifs

Architecture de JADE

Page 62: Jade dimax

62

62

• Chaque instance de JADE est un Conteneur (Container)• Plateforme = ensemble de Conteneurs

• Obligation d'avoir un Conteneur Principal (Main Container) actif

• d'autres conteneurs peuvent s'y enregistrer

• Le conteneur principal possède 2 agents spéciaux• AMS (Agent Management System) : Système de gestion d'agents

- Service de Pages Blanches: référence automatiquement les agents suivant leur nom dès leur entrée dans le système.

• DF (Directory Facilitator): Service de pages jaunes

- Service de Pages Jaunes: référence à leur demande les agents suivant leur(s) service(s).

Architecture de JADE

Page 63: Jade dimax

63

63

Chaque conteneur d'agents: environnement multi-threads composé d’un thread

d'exécution pour chaque agent gère localement un ensemble d'agents règle le cycle de vie des agents (création, attente et

destruction) assure le traitement des communications:

répartition des messages ACL reçus routage des messages dépôt des messages dans les boîtes privées de chaque agent gestion des messages vers l'extérieur

Architecture de JADE

Page 64: Jade dimax

64

64

Exemple d'architecture

Architecture de JADE

Page 65: Jade dimax

Agents JADE

Page 66: Jade dimax

66

66

coquille à laquelle il faut ajouter des comportements implémentant des services/fonctionnalités

Suit son cycle de vie

Agents de JADE

Page 67: Jade dimax

67

67

• Hérite de la classe Agent jade.core.Agent• 1 Thread par agent• Possibilité de s’inscrire/rechercher un service

Action enregistrée et dispensée par la plateforme Comportement d'un ou de plusieurs agents répondant à une demande Gérés par Pages Jaunes Proche de la notion de Web Services

• Méthode setup() invoquée dès la création de l’agent

• Méthode takedown() invoquée avant qu’un agent ne quitte la plateforme (soit détruit)

Agents de JADE

Page 68: Jade dimax

68

68

• Implémenter la méthode setup() [obligatoire] Invoquée au lancement de l’agent, Utilisée pour :

ajouter des comportements à l’agent addBehaviour() l’inscrire auprès du DF DFService.register() déclarer les ontologies utilisées, le langage de contenu… traiter les paramètres passés en arguments getArguments() ...

• Implémenter la méthode takeDown() [optionnel] Invoquée lors de la fin d’exécution de l’agent, Inclue des opérations de finalisation :

Demander au DF de supprimer les services qui ont été inscrits par l’agent,

Finir de traiter les messages reçus…

Agents de JADE

Page 69: Jade dimax

69

69

Agents de JADE

Page 70: Jade dimax

70

70

• hérite de la classe Behaviour ou d’une de ses sous-classes.• possède deux méthodes

Méthode action() définit les actions à exécuter par l’agent. Méthode done() retourne un booléen spécifiant si le comportement doit être

retiré de la file des comportements de l’agent.

• possibilité d’ajouter/retirer des comportements à un agent en cours d’exécution.

• un agent "dort" s’il n’a pas de comportement à exécuter.

Comportement des agents JADE

Page 71: Jade dimax

71

71

La gestion des comportements d'un agent utilise ce cycle de vie

Comportement des agents JADE

Page 72: Jade dimax

72

Les agents JADE

• Exercice 1 :– Écrire des agents qui naissent,

– Qui affichent leur âge

– Qui disparaissent ensuite.

• Exercice 2 :– Écrire des agents qui naissent,

– Qui affiche leur âge à chaque étape (un an)

– Qui disparaissent quand ils ont atteint 15 ans.

Page 73: Jade dimax

73

73

Cycle de vie INITIATED : l’agent est lancé mais non enregistré auprès de l’AMS, aucun

nom, aucune adresse ACTIVE : l’agent est répertorié auprès de l’AMS et peut accéder aux

services. SUSPENDED : tous les behaviours de l’agent sont suspendus. TRANSIT : l’agent migre vers une autre plateforme. WAITING : tous les behaviours de l’agent sont temporairement interrompus. DELETED : l’exécution de l’agent est terminée et n’est plus répertorié au sein

de l’AMS

⇒ JADE permet de contrôler le passage d’un agent d’un état à l’autre avec les

méthodes doXXX

Comportement des agents JADE

Page 74: Jade dimax

74

74

Cycle de vie

Comportement des agents JADE

Page 75: Jade dimax

75

75

Eléments de programmation• Un comportement peut être bloqué par block()

– prend effet dès la fin de action()

– jusqu’à

• l’arrivée d’un message ACL,

N.B. dans un agent, tous les comportements bloqués sont reprogrammés

dans la file dès qu’un message est reçu

• la date limite de blocage préfixée auparavant,

• le lancement de la méthode restart(),

• onStart() est lancé à l’initialisation du comportement• onEnd() est lancé à la fin du comportement et après son retrait de la

file des comportements

Comportement des agents JADE

Page 76: Jade dimax

76

76

Comportement classique• Le comportement se termine lorsque la méthode done() retourne

vrai

public class MonComportementATroisEtape extends Behaviour {

private int step = 0;

public void action() {

switch (step) {

case 0 : tache1(); step++; break ;

case 1 : tache2(); step++; break ;

case 2 : tache3(); step++; break ;

}

}

public boolean done() { return ( step == 3); }

}

Comportement des agents JADE

Page 77: Jade dimax

77

77

Comportement éphémère• Le comportement "One-shoot" se termine immédiatement,

action() est exécutée une seule fois.• La classe jade.core.behaviours.OneShotBehaviour implémente la

méthode done() qui retourne true.

public class MonComportementUneFois extends OneShotBehaviour

{

public void action() { /* effectue les taches */ }

}

Comportement des agents JADE

Page 78: Jade dimax

78

78

Comportement cyclique• Le comportement "Cyclic" ne se termine jamais, action() est

exécutée à chaque appel du comportement.• La classe jade.core.behaviours.CyclicBehaviour implémente la

méthode done() qui retourne false.

public class MonComportementCyclique extends CyclicBehaviour

{

public void action() { /* effectue les taches */ }

}

Comportement des agents JADE

Page 79: Jade dimax

79

79

Autres comportements• comportements incluant de sous-comportements :SequentialBehavior : enchainement de comportements

ParallelBehavior : exécution de comportements en concurrence

FSMBehavior : exécution de comportement selon une Machine d’Etats Finis (Finished State Machine) définie par le programmeur

• comportements prédéfinis :SenderBehavior : comportement one-shoot qui effectue l’envoie d’un message

ReceiverBehavior : effectue la réception d’un message.

WakerBehavior : effectue une tâche après un délai

TickerBehavior : effectue une tâche cycliquement en effectuant des pauses.

Comportement des agents JADE

Page 80: Jade dimax

JADECommunication entre agents

Page 81: Jade dimax

81

81

• Communication asynchrone par protocole ACL (Agent communication Language)

• Chaque agent : possède une "boite aux lettres" (agent messages queue) est averti dès qu’un nouveau message est arrivé dans sa boite

Communication entre des agents JADE

Page 82: Jade dimax

82

82

Structure d’un message FIPA-ACL

Emetteur (sender) Destinataires (receivers) Performatifs (REQUEST, INFORM, QUERY_IF, CFP (Call For Proposal), PROPOSE,

ACCEPT_PROPOSAL, REJECT_PROPOSAL, . . .) Contenu (content) Langage (langage) : syntaxe Ontologie (ontology) : vocabulaire Gestion concurrence : conversation-id, reply-with, in-reply-to, reply-by...

Communication entre des agents JADE

Page 83: Jade dimax

83

83

Envoi d’un message : Utilisation de la méthode send()// Message transmettant une demande d’offre

ACLMessage cfp = new ACLMessage(ACLMessage.CFP) ;

cfp.addReceiver (new AID( "vendeur " ,AID.ISLOCALNAME) ) ;

cfp.setContent("La_proie") ;

myAgent.send(cfp) ;

Lecture d’un message : Utilisation de la méthode receive()

Méthode non bloquante, retourne le premier message de la

boite, null si elle est vide

// prendre un message de la file

ACLMessage msg = receive() ;

if (msg!= null) {/* traitement du message*/}

Communication entre des agents JADE

JADE

Page 84: Jade dimax

84

Les agents JADE

• Exercice 3 :– Utiliser des agents communiquant pour implémenter la

factorielle

Page 85: Jade dimax

JADEProtocoles de communication

Page 86: Jade dimax

86

86

BUT : fournir un cadre à l’échange de messages dans un but précis

AchieveRE (Achieve Rational Effect) : un Initiateur envoie un message, le receveur peut répondre par not-understood, refuse ou agree. Suite à l'accord (agree), le receveur retourne un message de type inform (réponse) ou failure.

FIPA-Contract NET : Un initiateur sollicite d’autres agents par un CFP, les receveurs peuvent répondre par une proposition (PROPOSE), ou un message de type REFUSE ou NOT-UNDERSTOOD. L’émetteur choisit parmi toutes les propositions reçues et envoie un message de type ACCEPT_PROPOSAL au candidat retenu. Ce dernier retourne un message de type INFORM (accord), FAILURE ou CANCEL (annulation de l’offre)

Protocole de Communication JADE

Page 87: Jade dimax

87

87

FIPA - Propose : un Initiateur envoie un message à un Participant lui indiquant qu’il effectuera une action si le Participant est d’accord (agree). Le Participant répond par un refus ou un accord. Lorsque l’accord est reçu, l’Initiateur doit effectuer l’action et retourner un résultat.

FIPA - Subscribe : un Initiateur envoie un message à un Participant lui demande s’il souhaite souscrire (subscribe). Le participant répond par un accord (agree) ou un refus (refuse). En cas d’accord, le Participant envoie les informations répondant à la souscription jusqu’à ce que l’Initiateur annule la souscription ou que le Participant émette un message de type failure.

Protocole de Communication JADE

Page 88: Jade dimax

88

88

Achat de livres par CFPL’initiateur est l’acheteur, les participants (répondeurs) sont les vendeurs.

Protocole de Communication JADE

Page 89: Jade dimax

89

89

Exemple

• Suppose that we want two agents that talk back and forth to each other– Have one be the initiator and start the conversation

• Could imagine other ways of doing this – first one to start becomes the initiator

– To simplify things, we have one agent and use it twice• So, we do a condition to see if it is the initiator or not• The code is nearly identical and thus creating another whole agent

program seems like a waste

• Example2 provides the code– See next slide for an illustration of how it works

Page 90: Jade dimax

90

Exemple : Messages échangés• Me (initiator)

– Send message– Wake up:

• If message, remember that you have seen it

• If no message and seen a message, send a reply

– Go back to sleep for 5 seconds

• Message traffic– 0 - Send– 0 - Sleep 5– 5 - Sleep 5– 10 - Sleep 5– 10 – Receive– 10 – Sleep 5– 15 – Send– 15 – Sleep 5– …

• You– Not initiator, so don’t send– Wake up:

• If message, remember that you have seen it

• If no message and seen a message, send a reply

– Go back to sleep for 10 seconds

• Message traffic– 0 - Receive– 0 - Sleep 10– 5 –– 10 - Send msg– 10 – Sleep 10– 10 –– 15 – Receive– 15 – Sleep 10– …

Page 91: Jade dimax

Outils JADE

Page 92: Jade dimax

92

92

JADE propose quelques outils de gestion dont : JADE RMA (Remote Agent Management) : gestion des agents d’une

plateforme

Outils de JADE

Page 93: Jade dimax

93

93

JADE propose quelques outils de gestion dont : JADE RMA (Remote Agent Management) : gestion des agents d'une plateforme JADE Dummy Agent : permet d'envoyer des messages aux agents

Outils de JADE

Page 94: Jade dimax

94

94

JADE propose quelques outils de gestion dont : JADE RMA (Remote Agent Management) : gestion des agents d'une plateforme JADE Dummy Agent : permet d'envoyer des messages aux agents JADE Sniffer : analyse des messages échangés entre agents

Outils de JADE

Page 95: Jade dimax

95

95

JADE propose quelques outils de gestion dont : JADE RMA (Remote Agent Management) : gestion des agents d'une

plateforme JADE Dummy Agent : permet d'envoyer des messages aux agents JADE Sniffer : analyse des messages échanges entre agents JADE Introspector : affiche le détail du cycle de vie d'un agent

Outils de JADE

Page 96: Jade dimax

96

Les agents JADE

• Exercice 3 :– Étudier import jade.tools.testagent.TestAgent

– Et les autres classes du même package

Page 97: Jade dimax

JADECas d’étude

Page 98: Jade dimax

98

98

Enoncé du cas d’étude (inspiré de la documentation Jade)

• Dans cet exemple, des agents vendent des livres et d'autres achètent des livres...• Chaque agent acheteur reçoit le titre du livre à acheter (le livre cible) en argument et

invite périodiquement tous les agents vendeur connus à fournir une offre.• Dès qu’une offre est reçue, l’agent acheteur l’accepte et publie un ordre d’achat.

• Si plus d’un agent vendeur fournit une offre, l’agent acheteur accepte la meilleure

(le plus bas prix).• L’agent acheteur stoppe après avoir acheté le livre cible.• Chaque agent vendeur a une GUI minimale permettant à l’utilisateur d’insérer de

nouveaux titres (et les prix associés) dans le catalogue local des livres à vendre.• Les agents vendeur attendent sans interruption des demandes des agents acheteur.

• Lorsque les agents vendeur sont invités à fournir une offre pour un livre, ils vérifient si le livre demandé est dans leur catalogue et répondent avec le prix. Autrement ils refusent.

• Quand ils reçoivent un ordre d’achat, ils l’exécutent et enlèvent le livre demandé de leur catalogue.

Cas d’étude : achat de livres

Page 99: Jade dimax

99

99

Définition d’un agent acheteur I (Cas d’étude - Solution sans protocole)

Page 100: Jade dimax

100

100

Définition d’un agent acheteur II(Cas d’étude - Solution sans protocole)

Page 101: Jade dimax

101

101

Définition d’un agent vendeur I(Cas d’étude - Solution sans protocole)

Page 102: Jade dimax

102

102

Définition d’un agent vendeur II(Cas d’étude - Solution sans protocole)

Page 103: Jade dimax

103

103

Définition d’un agent vendeur III(Cas d’étude - Solution sans protocole)

Page 104: Jade dimax

104

104

Comportement et messages échangés , point de vue

acheteur• Le comportement d’un acheteur consiste à rechercher la liste des

agents inscrits en tant que vendeurs, puis :1. à envoyer à tous les vendeurs une demande de proposition de prix,

2. à réceptionner toutes les propositions,

3. à choisir la meilleure offre et à envoyer un message d’acceptation de la proposition au vendeur retenu,

4. à attendre la confirmation de la vente.

• le comportement prend fin après la 4ème étape

Cas d’étude - Comportement d’un acheteur(Cas d’étude - Solution sans protocole)

Page 105: Jade dimax

105

105

Cas d’étude - Comportement d’un acheteur I(Cas d’étude - Solution sans protocole)

Page 106: Jade dimax

106

106

Cas d’étude - Comportement d’un acheteur II(Cas d’étude - Solution sans protocole)

Page 107: Jade dimax

107

107

Cas d’étude - Comportement d’un acheteur III(Cas d’étude - Solution sans protocole)

Page 108: Jade dimax

108

108

Cas d’étude - Comportement d’un acheteur IV(Cas d’étude - Solution sans protocole)

Page 109: Jade dimax

109

109

Cas d’étude - Comportement d’un acheteur V(Cas d’étude - Solution sans protocole)

Page 110: Jade dimax

110

110

Cas d’étude - Comportement d’un acheteur VI(Cas d’étude - Solution sans protocole)

Page 111: Jade dimax

111

111

Cas d’étude - Comportement d’un acheteur VII(Cas d’étude - Solution sans protocole)

Page 112: Jade dimax

112

112

Comportement et messages échangés , point de vue

Vendeur• Un vendeur possède deux comportement cyclique :

attente et traitement d’une demande de proposition de vente attente et traitement d’une confirmation d’achat

• Ces deux traitements fonctionnent "simultanément" car il peut exister plusieurs acheteurs et donc plusieurs actes de vente

Cas d’étude - Comportements d’un vendeur(Cas d’étude - Solution sans protocole)

Page 113: Jade dimax

113

113

Cas d’étude – Comportements d’un vendeur 1/2 I(Cas d’étude - Solution sans protocole)

Page 114: Jade dimax

114

114

Cas d’étude - Comportements d’un vendeur 1/2 II(Cas d’étude - Solution sans protocole)

Page 115: Jade dimax

115

115

Cas d’étude - Comportement d’un vendeur 2/2 I(Cas d’étude - Solution sans protocole)

Page 116: Jade dimax

116

116

Cas d’étude - Comportement d’un vendeur 2/2 II(Cas d’étude - Solution sans protocole)

Page 117: Jade dimax

117

117

Protocole FIPA-ContractNet• Le protocole FIPA-ContractNet est composé de deux

comportements pour la gestion des communications dans le cadre d’un appel à propositions :

ContractNetInitiator : Initiant la demande et traitant les différents types de réponses. L’utilisation de ce comportement nécessite l’implémentation de fonctions déclenchées en fonction du type de message reçu.

ContractNetResponder : permettant la gestion des demandes d’offres et des réponses associées. L’utilisation de ce comportement nécessite l’implémentation de fonctions déclenchées en fonction du type de message reçu.

Solution avec Protocole FIPA-ContractNet(Cas d’étude - Solution avec protocole)

Page 118: Jade dimax

118

118

Méthodes principales d’un ContractNetInitiator

void HandleAllResponses(Vector réponses, Vector acceptations)

méthode appelée à la réception de toutes les réponses au cfp, ou après le délai imparti. acceptations est la liste des messages d’acceptations/rejets à retourner, automatiquement si réponses est différent de ‘null’.

void HandleAllResultNotications(Vector resultNotications) méthode appelée quand tous les messages de notification de l’acceptation ont été reçus

void HandleFailure(ACLMessage failure) pour chaque message de type 'FAILURE‘ reçu

void HandleInform(ACLMessage inform) pour chaque message de type 'INFORM' reçu

void HandleNotUnderstood(ACLMessage notUnderstood) pour chaque message de type

'NOT UNDERSTOOD' reçu

Initiateur d’un ContractNet(Cas d’étude - Solution avec protocole)

Page 119: Jade dimax

119

119

Méthodes principales d’un ContractNetInitiator

void HandleOutOfSequence(ACLMessage msg) pour chaque message tardif reçu

void HandlePropose(ACLMessage proposition, Vector acceptations) méthode appelée à chaque proposition reçue. acceptations est la liste des messages d’acceptations/rejets à retourner.

void HandleRefuse(ACLMessage refuse) pour chaque message de refus, 'REFUSE' reçu

Initiateur d’un ContractNet(Cas d’étude - Solution avec protocole)

Page 120: Jade dimax

120

120

Méthodes principales d’un ContractNetResponder• handleCfp ACLMessage handleCfp(ACLMessage cfp) : méthode appelée à la

réception du premier message dans le cadre d’un CFP. Retourne le message de réponse à l’initiateur (un message de type autre que INFORM termine le protocole).

• handleAcceptProposal ACLMessage handleAcceptProposal(ACLMessage cfp, ACLMessage proposition, ACLMessage acceptation)] : méthode appelée à la réception d'un message d’acceptation. retourne le message de

confirmation/infirmation à l’initiateur

Participant à un ContractNet(Cas d’étude - Solution avec protocole)

Page 121: Jade dimax

121

121

Cas d’étude• Les classes définissants l’agent acheteur et l’agent vendeur sont

légèrement modifiées : L’agent acheteur reçoit alors périodiquement le comportement

ContractNetAchat L’agent vendeur reçoit alors le comportement ContractNetVente

et se déclare en tant que membre du service "vente_livre"

Solution avec Protocole FIPA-ContractNet(Cas d’étude - Solution avec protocole)

Page 122: Jade dimax

122

122

Cas d’étude – protocole initiateur de l’acheteur I(Cas d’étude - Solution avec protocole)

Page 123: Jade dimax

123

123

Cas d’étude – protocole initiateur de l’acheteur II(Cas d’étude - Solution avec protocole)

Page 124: Jade dimax

124

124

Cas d’étude – protocole initiateur de l’acheteur III(Cas d’étude - Solution avec protocole)

Page 125: Jade dimax

125

125

Cas d’étude – protocole initiateur de l’acheteur IV(Cas d’étude - Solution avec protocole)

Page 126: Jade dimax

126

126

Cas d’étude – protocole initiateur de l’acheteur V(Cas d’étude - Solution avec protocole)

Page 127: Jade dimax

127

127

Cas d’étude – protocole initiateur de l’acheteur VI(Cas d’étude - Solution avec protocole)

Page 128: Jade dimax

128

128

Cas d’étude – protocole initiateur de l’acheteur VII(Cas d’étude - Solution avec protocole)

Page 129: Jade dimax

129

129

Cas d’étude – protocole répondeur du vendeur I(Cas d’étude - Solution avec protocole)

Page 130: Jade dimax

130

130

Cas d’étude – protocole répondeur du vendeur II(Cas d’étude - Solution avec protocole)

Page 131: Jade dimax

131

131

Cas d’étude – protocole répondeur du vendeur III(Cas d’étude - Solution avec protocole)

Page 132: Jade dimax

132

132

Cas d’étude – protocole répondeur du vendeur VI(Cas d’étude - Solution avec protocole)

Page 133: Jade dimax

133

133

Cas d’étude – protocole répondeur du vendeur V(Cas d’étude - Solution avec protocole)