Benodigdheden JADE – environment 3.0 JADE API (jade\doc\api) JADE docs (jade\doc): programming...

77

Transcript of Benodigdheden JADE – environment 3.0 JADE API (jade\doc\api) JADE docs (jade\doc): programming...

Page 1: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.
Page 2: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

BenodigdhedenBenodigdheden JADE – environment 3.0JADE – environment 3.0 JADE API (jade\doc\api)JADE API (jade\doc\api) JADE docs (jade\doc): programming JADE docs (jade\doc): programming

tutorial for beginners (JPT), tutorial for beginners (JPT), administrators guide (JAG), …administrators guide (JAG), …

JADE primer: JADE primer: http://www.iro.umontreal.ca/~vaucher/Aghttp://www.iro.umontreal.ca/~vaucher/Agents/Jade/JadePrimer.htmlents/Jade/JadePrimer.html (PRI) (PRI)

Basic aspects: Basic aspects: http://www.cs.bath.ac.uk/~occ/agents_ecohttp://www.cs.bath.ac.uk/~occ/agents_ecommerce/jade/mmerce/jade/ (BAS) (BAS)

Page 3: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

VerwijzingenVerwijzingen API: API: jade\doc\apijade\doc\api JPT:JPT: JADE Programming Tutorial for JADE Programming Tutorial for

BeginnersBeginners JAG:JAG: JADE Administrator’s Guide JADE Administrator’s Guide JPG:JPG: JADE Programmer’s Guide JADE Programmer’s Guide CL&O:CL&O: JADE Application-defined JADE Application-defined

Content Languages and Ontologies Content Languages and Ontologies TutorialTutorial

PRI:PRI: JADE primer JADE primer BAS:BAS: Basic aspects (Bath) Basic aspects (Bath)

Page 4: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Deel 1Deel 1

JADE basisprincipes, JADE basisprincipes, graphical tools, Agents en graphical tools, Agents en

BehavioursBehaviours

Page 5: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE overview (JPT1)JADE overview (JPT1)

Java Agent DEvelopment frameworkJava Agent DEvelopment framework

JADE is a middleware that facilitates the development of multi-agent systems. It includes

A runtime environment where JADE agents can “live” and that must be active on a given host before one or more agents can be executed on that host.

A library of classes that programmers have to/can use (directly or by specializing them) to develop their agents.

A suite of graphical tools that allows administrating and monitoring the activity of running agents.

Page 6: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Containers, platforms, AMS Containers, platforms, AMS en DF (JPT1)en DF (JPT1)

Remote platform

Remote container

Page 7: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Running JADE Running JADE (JAG2.3/JPT3.2)(JAG2.3/JPT3.2)

Classpath set_CLASSPATH=.;c:\jade\lib\jade.jar;c:\jade\lib\

jadeTools.jar;c:\jade\lib\Base64.jar;c:\jade\lib\iiop.jar;

Agent compileren (PingAgent.java)Agent compileren (PingAgent.java) BekijkBekijk_C:\jade\PingAgent.java en C:\jade\PingAgent.java en

Logger.javaLogger.java javac *.javajavac *.java

Page 8: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

PingAgent.javaPingAgent.java

/**/** This agent implements a simple Ping Agent for the AgentCities project.This agent implements a simple Ping Agent for the AgentCities project. First of all the agent registers itself with the DF of the platform and First of all the agent registers itself with the DF of the platform and then waits for ACLMessages.then waits for ACLMessages. If a QUERY_REF message arrives that contains the string "ping" If a QUERY_REF message arrives that contains the string "ping"

within the content within the content then it replies with an INFORM message whose content will be the then it replies with an INFORM message whose content will be the

string "alive". string "alive". If it receives a NOT_UNDERSTOOD message no reply is sent. If it receives a NOT_UNDERSTOOD message no reply is sent. For any other message received it replies with a NOT_UNDERSTOOD For any other message received it replies with a NOT_UNDERSTOOD

message.message. The exchanged message are written in a log file whose name is the The exchanged message are written in a log file whose name is the

local name of the agent.local name of the agent.

@author Tiziana Trucco - CSELT S.p.A.@author Tiziana Trucco - CSELT S.p.A. @version $Date: 2002/08/02 08:10:01 $ $Revision: 1.5 $ @version $Date: 2002/08/02 08:10:01 $ $Revision: 1.5 $ */*/

Page 9: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Running JADE Running JADE (JAG2.3/JPT3.2)(JAG2.3/JPT3.2)

Agentenplatform starten met RMAAgentenplatform starten met RMA java jade.Boot -guijava jade.Boot -gui

Agentenplatform + RMA starten met Agentenplatform + RMA starten met PingAgent (nickname fonske) in PingAgent (nickname fonske) in main containermain container java jade.Boot –gui fonske:PingAgentjava jade.Boot –gui fonske:PingAgent

Een nieuwe container inpluggenEen nieuwe container inpluggen java jade.Boot –container –host dezePC marcel:PingAgentjava jade.Boot –container –host dezePC marcel:PingAgent

Page 10: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Remote Monitoring Agent Remote Monitoring Agent (JAG4.1)(JAG4.1)

Page 11: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Dummy Agent (JAG 4.2)Dummy Agent (JAG 4.2)

Page 12: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DF GUI (JAG4.3)DF GUI (JAG4.3)

Page 13: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Sniffer Agent (JAG4.4)Sniffer Agent (JAG4.4)

Page 14: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Agent class (JPT3)Agent class (JPT3)

We programmeren agents door We programmeren agents door overerving van klasse jade.core.Agentovererving van klasse jade.core.Agent

Override void setup(), void takeDown()Override void setup(), void takeDown() Agent methods: AID getAID(), Location Agent methods: AID getAID(), Location

here(), Object[] getArguments(), void here(), Object[] getArguments(), void doDelete(), …doDelete(), …

Voorbeeld JPT3: BookBuyerAgent (nog Voorbeeld JPT3: BookBuyerAgent (nog geen eigenlijke activiteit)geen eigenlijke activiteit)

Page 15: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.
Page 16: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Agent life cycle Agent life cycle (JPG3.2.1)(JPG3.2.1)

doDelete()

doActivate()

doStart()

doSuspend()doWait()

doWake()

doMove(*,*)

Page 17: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Behaviour class (JPT4.1)Behaviour class (JPT4.1) Eigenlijke activiteitEigenlijke activiteit We programmeren behaviours door We programmeren behaviours door

overerving van subklasse van klasse overerving van subklasse van klasse jade.core.behaviours.Behaviourjade.core.behaviours.Behaviour

Behaviour starten in Agent class m.b.v. Behaviour starten in Agent class m.b.v. addBehaviour() method (vaak in setup())addBehaviour() method (vaak in setup())

““Behaviours are scheduled in an Behaviours are scheduled in an execution pool”execution pool”

Override void action() en boolean done()Override void action() en boolean done()

Page 18: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

1 T

HR

EA

D P

ER

AG

EN

T!!

!

Page 19: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

B1.action() B2.action() B1.action() B2.action() B1.action()

B8.action() B9.action()

B9.action()

B9.action()

B9.action()

tijd

Agent 1

Agent 2

Agent 3 B1.action() B6.action()

B7.action()

B1.action() B6.action()

B7.action()

Page 20: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Behaviour classBehaviour class

Implementeer als inner class van uw Implementeer als inner class van uw agent (soms praktischer) of als aparte agent (soms praktischer) of als aparte klasse (mooier).klasse (mooier).

action() atomische eenheid die steeds action() atomische eenheid die steeds wordt uitgevoerdwordt uitgevoerd

Wanneer done() true wordt, wordt Wanneer done() true wordt, wordt behaviour uit execution pool verwijderdbehaviour uit execution pool verwijderd

Override eventueel int onEnd() en void Override eventueel int onEnd() en void onStart()onStart()

Datamember Agent myAgentDatamember Agent myAgent

Page 21: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Voorbeeld SimpleBehaviour Voorbeeld SimpleBehaviour (PRI2)(PRI2)

import jade.core.Agent; import jade.core.behaviours.*; public class myAgent extends Agent { protected void setup() { addBehaviour( new myBehaviour( this ) ); } class myBehaviour extends SimpleBehaviour { public myBehaviour(Agent a) { super(a); } public void action() { //...this is where the real programming goes !! } private boolean finished = false; public boolean done() { return finished; } } // ----------- End myBehaviour }//end class myAgent

Page 22: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Behaviour classBehaviour class

Method block(): roep enkel op op het einde van Method block(): roep enkel op op het einde van action()!action()!

De behaviour wordt pas gerescheduled alsDe behaviour wordt pas gerescheduled als A time of millis milliseconds has passed since the call to A time of millis milliseconds has passed since the call to

block(). block(). An ACL message is received by the agent this behaviour An ACL message is received by the agent this behaviour

belongs to. belongs to. Method restart() is called explicitly on this behaviour object.Method restart() is called explicitly on this behaviour object.

Hou er rekening mee dat hij desondanks eens Hou er rekening mee dat hij desondanks eens kan unblocken!kan unblocken!

““block() blokt niet maar stelt gewoon een delay block() blokt niet maar stelt gewoon een delay in die ingaat NA de action() method”in die ingaat NA de action() method”

Page 23: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Voorbeeld PRI3Voorbeeld PRI3 class BlockTwice extends SimpleBehaviourclass BlockTwice extends SimpleBehaviour { { static long t0 = static long t0 =

System.currentTimeMillis();System.currentTimeMillis(); public void action() public void action() {{ System.out.println( "Start: " System.out.println( "Start: " + (System.currentTimeMillis()-+ (System.currentTimeMillis()-

t0) );t0) ); block(250);block(250); System.out.println( " after block(250): " System.out.println( " after block(250): " + (System.currentTimeMillis()-+ (System.currentTimeMillis()-

t0) );t0) ); block(1000);block(1000); System.out.println( " after block(1000): System.out.println( " after block(1000):

" " + (System.currentTimeMillis()-+ (System.currentTimeMillis()-

t0) );t0) ); System.out.println();System.out.println(); }} private int n = 0;private int n = 0; public boolean done() { return ++n > public boolean done() { return ++n >

3; }3; } }}

Start: 1Start: 1 after block(250): 7after block(250): 7 after block(1000): 9after block(1000): 9 Start: 258Start: 258 after block(250): 261after block(250): 261 after block(1000): 263after block(1000): 263 Start: 512Start: 512 after block(250): 515after block(250): 515 after block(1000): 517after block(1000): 517 Start: 767Start: 767 after block(250): 769after block(250): 769 after block(1000): 771after block(1000): 771

Page 24: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Voorbeeld Agent3.java Voorbeeld Agent3.java (PRI3)(PRI3)

class TwoSteps extends SimpleBehaviourclass TwoSteps extends SimpleBehaviour { { int state = 1; int state = 1; public void action() public void action() {{ switch( state )switch( state ) { { case 1:case 1: block( 200 );block( 200 ); break; break; case 2:case 2: System.out.println( "--- Message 1 --- " );System.out.println( "--- Message 1 --- " ); block( 800 );block( 800 ); break; break; case 3:case 3: System.out.println( " -- message 2 --" );System.out.println( " -- message 2 --" ); finished = true;finished = true; doDelete(); // applies to the AgentdoDelete(); // applies to the Agent }} state++;state++; } } private boolean finished = false;private boolean finished = false; public boolean done() { return finished; }public boolean done() { return finished; } }}

FSM patroonFSM patroon Er wordt algemeen aangeraden om de Er wordt algemeen aangeraden om de

CPU tijd tijdens action() kort te CPU tijd tijdens action() kort te houden omwille van de preemptive houden omwille van de preemptive multitasking; de andere behaviours multitasking; de andere behaviours van dezelfde agent krijgen zo ook een van dezelfde agent krijgen zo ook een kans!!!!kans!!!!

andere SimpleBehaviour Looper andere SimpleBehaviour Looper unblockt om de 300 ms!!!!!!!!unblockt om de 300 ms!!!!!!!!

0: alice0: alice --- Message 1 --- --- Message 1 --- 340: alice340: alice 640: alice640: alice 950: alice950: alice -- message 2 ---- message 2 --

Page 25: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Nog meer behaviours Nog meer behaviours (JPT4.2/4.3)(JPT4.2/4.3)

Page 26: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

CompositeBehaviour CompositeBehaviour (BAS3)(BAS3)

Page 27: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

FSMBehaviour (API)FSMBehaviour (API)

Page 28: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

OefeningOefening Schrijf een agent metSchrijf een agent met

Een datamember int aantalBranden die het Een datamember int aantalBranden die het aantal branden in een dorp aangeeftaantal branden in een dorp aangeeft

Een behaviour Brandstichter die op random Een behaviour Brandstichter die op random (Math.random()) tijdstippen brand sticht (Math.random()) tijdstippen brand sticht (aantalBranden++).(aantalBranden++).

Een SimpleBehaviour Brandweer die zich in Een SimpleBehaviour Brandweer die zich in verschillende states kan bevindenverschillende states kan bevinden

State 1: om de 500ms wordt er gecheckt of er brand isState 1: om de 500ms wordt er gecheckt of er brand is State 2: de brandweer wordt bij elkaar geroepen (block State 2: de brandweer wordt bij elkaar geroepen (block

1 sec)1 sec) State 3: er wordt naar de brand gereden (block 1 sec)State 3: er wordt naar de brand gereden (block 1 sec) State 4: de brand wordt geblust (block 1 sec)State 4: de brand wordt geblust (block 1 sec) State 5: er wordt terug naar de kazerne gereden (block State 5: er wordt terug naar de kazerne gereden (block

1 sec) - (aantalBranden--).1 sec) - (aantalBranden--).

Page 29: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Deel 2Deel 2

Agent communication, Message Agent communication, Message Templates, Directory Facilitator, Templates, Directory Facilitator,

Interaction Protocols en Message Interaction Protocols en Message ContentContent

Page 30: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Agent Communication Agent Communication (JPT5)(JPT5)

Page 31: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Agent Communication Agent Communication (Helin)(Helin)

syntax (ACLcodec) + semantiek

commun. Act + ontologies

Page 32: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

ACLMessage fields ACLMessage fields (JPT5.1)(JPT5.1)

The The sendersender of the message of the message

The list of The list of receiversreceivers

The communicative intention (also called “The communicative intention (also called “performativeperformative”) ”) indicating what the sender intends to achieve by sending the indicating what the sender intends to achieve by sending the message. REQUEST, INFORM, CFP, …message. REQUEST, INFORM, CFP, …

The The contentcontent i.e. the actual information included in the message (i.e. i.e. the actual information included in the message (i.e. the action to be performed in a REQUEST message, the fact that the the action to be performed in a REQUEST message, the fact that the sender wants to disclose in an INFORM message …).sender wants to disclose in an INFORM message …).

The The content languagecontent language i.e. the syntax used to express the content (both the sender and the receiver i.e. the syntax used to express the content (both the sender and the receiver must be able to encode/parse expressions compliant to this syntax for the communication to be must be able to encode/parse expressions compliant to this syntax for the communication to be effective).effective).

The The ontologyontology i.e. the vocabulary of the symbols used in the content and their meaning (both the i.e. the vocabulary of the symbols used in the content and their meaning (both the sender and the receiver must ascribe the same meaning to symbols for the communication to be sender and the receiver must ascribe the same meaning to symbols for the communication to be effective).effective).

Some fields used to control several concurrent conversations and to specify timeouts for receiving a Some fields used to control several concurrent conversations and to specify timeouts for receiving a reply such as reply such as conversation-id, reply-with, in-reply-to, reply-by.conversation-id, reply-with, in-reply-to, reply-by.

Page 33: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Zenden en ontvangen Zenden en ontvangen (JPT5)(JPT5)

STERK AANBEVOLEN – PROBEER HET NIET

ANDERS!

Page 34: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Waarschuwing (JPT5.8)Waarschuwing (JPT5.8)

Er bestaat ook zoiets als Er bestaat ook zoiets als BlockingReceive()BlockingReceive()

Gebruik het beter niet: het blokkeert Gebruik het beter niet: het blokkeert de complete agent-thread tot de complete agent-thread tot wanneer er een message arriveert wanneer er een message arriveert ….….

Page 35: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Message Templates Message Templates (PRI4)(PRI4)

Behaviour met “selective reception”Behaviour met “selective reception”

Vermijd overlappende actieve Vermijd overlappende actieve templates!templates!

• MatchPerformative( performative )• MatchSender( AID ) • MatchConversationID( String ): this is really useful • and( Template1, Template2 ) • or ( Template1, Template2 ) • not( Template )

and to a lesser extent: • MatchOntology( String ) • MatchProtocol( String ) • MatchOntology( String )

Page 36: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Message Templates Message Templates (PRI4)(PRI4)

MessageTemplate mt = MessageTemplate mt = MessageTemplate.MessageTemplate.andand( MessageTemplate.Match( MessageTemplate.MatchPerformativPerformativee( ACLMessage.( ACLMessage.INFORMINFORM ), ), MessageTemplate.MatchMessageTemplate.MatchSenderSender( new AID( "( new AID( "a1a1", ", AID.ISLOCALNAME))) ; AID.ISLOCALNAME))) ;

ACLMessage msg = receive( mt ); ACLMessage msg = receive( mt ); if (msg != null) { if (msg != null) { // handle message// handle message } } block(); block();

Er zullen meer nutteloze unblocks Er zullen meer nutteloze unblocks voorkomenvoorkomen

Page 37: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Hoe bekom ik AID’s van Hoe bekom ik AID’s van collega-agenten? (PRI4)collega-agenten? (PRI4)

Nickname opnemen in de code: new Nickname opnemen in de code: new AID( "store", AID( "store", AID.ISLOCALNAMEAID.ISLOCALNAME))

Via gebruikersinterfaces, Via gebruikersinterfaces, bijvoorbeeld JADE GUIbijvoorbeeld JADE GUI

Via de DF (conventioneel)Via de DF (conventioneel) Via de AMS (inconventioneel)Via de AMS (inconventioneel)

Page 38: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Directory Facilitator Directory Facilitator (JPT6.1)(JPT6.1)

Page 39: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DFAgentDescription DFAgentDescription (PRI5)(PRI5)

DFAgentDescription Name: AID // Required for registration Protocols: set of Strings Ontologies: set of Strings Languages: set of Strings Services: set of { { Name: String // Required for each service specified Type: String // Required ... Owner: String Protocols: set of Strings Ontologies: set of Strings Languages: set of Strings Properties: set of { Name: String Value: String } }

Page 40: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DF Registratie (PRI5)DF Registratie (PRI5) DFAgentDescription dfd = new DFAgentDescription(); dfd.setName( getAID() ); ServiceDescription sd = new ServiceDescription(); sd.setType( "buyer" ); sd.setName( getLocalName() ); dfd.addServices(sd); try { DFService.register(this, dfd ); } catch (FIPAException fe) { fe.printStackTrace(); }

Registratie doorgaans in setup()Registratie doorgaans in setup() Probeer dit eens te sniffen!Probeer dit eens te sniffen! Slechts 1 registratie per agentSlechts 1 registratie per agent

Page 41: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DF Deregistratie (PRI5)DF Deregistratie (PRI5) protected void takeDown() { try { DFService.deregister(this); } catch (Exception e) {} }

Deregistratie doorgaans in takeDown()Deregistratie doorgaans in takeDown() Probeer dit eens te sniffen!Probeer dit eens te sniffen!

Page 42: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DF Search (PRI5)DF Search (PRI5) DFAgentDescription dfd = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType( "buyer" ); dfd.addServices(sd); DFAgentDescription[] result = DFService.search(this, dfd); System.out.println(result.length + " results" ); if (result.length>0) System.out.println(" " + result[0].getName() );

Ook vaak in setup()Ook vaak in setup() Met search, deregistratie en registratie is het mogelijk om Met search, deregistratie en registratie is het mogelijk om

je eigen description dynamisch bij te werkenje eigen description dynamisch bij te werken

Page 43: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DF Subscription Service DF Subscription Service (PRI5)(PRI5)

DFAgentDescription dfd = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType(....); dfd.addServices(sd); SearchConstraints sc = new SearchConstraints(); sc.setMaxResults(new Long(1)); send(DFService.createSubscriptionMessage(this, getDefaultDF(), dfd, sc));

Launch een ontvangende behaviour Launch een ontvangende behaviour (template?) met (template?) met DFAgentDescription dfds DFAgentDescription dfds =DFService.decodeNotification(msg.getContent()); =DFService.decodeNotification(msg.getContent());

Page 44: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

DF Subscription Service DF Subscription Service (PRI5)(PRI5)

All in one:All in one: DFAgentDescription template = // fill the template

addBehaviour( new SubscriptionInitiator( this, DFService.createSubscriptionMessage( this, getDefaultDF(), template, null)) { protected void handleInform(ACLMessage inform) { try { DFAgentDescription[] dfds = DFService.decodeNotification(inform.getContent()); // do something with dfds } catch (FIPAException fe) {fe.printStackTrace(); } } });

Page 45: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Interaction ProtocolsInteraction Protocols Communicative act = performative = Communicative act = performative =

“message type”“message type” Foundation for Intelligent and Physical Foundation for Intelligent and Physical

Agents (FIPA) definieert bibliotheek van Agents (FIPA) definieert bibliotheek van formele modellen: formele modellen: http://www.fipa.org/specs/fipa00037/http://www.fipa.org/specs/fipa00037/

Performatives in JADE: zie API (fields Performatives in JADE: zie API (fields van klasse ACLMessage)van klasse ACLMessage)

FIPA beschrijft protocollen bijv. FIPA FIPA beschrijft protocollen bijv. FIPA Request Request (/fipa00026/)(/fipa00026/) en FIPA Query en FIPA Query (/fipa00027/)(/fipa00027/)

Page 46: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

SL formalisme

i: zenderj: ontvangerΦ: propositionFP: feasible preconditionRE: rational effect

operatorenB: beliefs that … is trueU: is uncertain about … but thinks that it is more likely to be true than to be falseC: desires that … currently holds

BifjΦ = BjΦ v Bj┐Φ

UifjΦ = UjΦ v Uj┐Φ

Page 47: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

SL formalisme

operatorenI: intends that …Done(a): a has just taken placeAgent (j, a): j is the only agent that (will) perform(s) action a…

Page 48: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.
Page 49: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Interaction Protocols Interaction Protocols (BAS5)(BAS5)

Er bestaat een hele reeks gelijkaardige Er bestaat een hele reeks gelijkaardige protocols protocols (FIPA-Request, FIPA-query, FIPA-(FIPA-Request, FIPA-query, FIPA-propose, FIPA-Request-When, FIPA-recruiting, FIPA-propose, FIPA-Request-When, FIPA-recruiting, FIPA-brokering, FIPA-subscribe, …)brokering, FIPA-subscribe, …)

““Rational Effect” behaviours in JADE: Rational Effect” behaviours in JADE: SimpleAchieveREInitiatorSimpleAchieveREInitiator en en SimpleAchieveREResponder SimpleAchieveREResponder voor 1-to-1 communicatievoor 1-to-1 communicatie

““Werd het rationeel effect van het verzenden van een Werd het rationeel effect van het verzenden van een eenvoudige communicative act bereikt?”eenvoudige communicative act bereikt?”

Voorbeeld BAS5: MarriageProposer en Voorbeeld BAS5: MarriageProposer en MarriageResponderMarriageResponder

Page 50: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

MarriageProposer MarriageProposer (BAS5)(BAS5)

class MarriageProposer extends SimpleAchieveREInitiator{

protected MarriageProposer(Agent agent,ACLMessage msg){super(agent,msg);

} protected void handleAgree(ACLMessage msg) {

System.out.println(myAgent.getLocalName() + ": OOH! " + msg.getSender().getLocalName() +" Has agreed to marry me, I'm so excited!");

}

protected void handleRefuse(ACLMessage msg) { // ...

ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);AID to = new AID(); to.setLocalName("bob"); msg.setSender(getAID()); msg.addReceiver(to);msg.setContent("Marry Me!"); msg.setProtocol(InteractionProtocol.FIPA_REQUEST); addBehaviour(new MarriageProposer(this,msg));

Page 51: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

MarriageResponder MarriageResponder (BAS5)(BAS5)

class MarriageResponder extends SimpleAchieveREResponder{ public MarriageResponder(Agent agent){

super(agent,createMessageTemplate(InteractionProtocol.FIPA_REQUEST));}

protected ACLMessage prepareResponse(ACLMessage msg) {

ACLMessage response = msg.createReply();//afhankelijk van de voorwaarden . . . response.setPerformative(ACLMessage.AGREE); return response;

} protected ACLMessage prepareResultNotification(ACLMessage inmsg, ACLMessage outmsg) {

ACLMessage msg = inmsg.createReply();msg.setContent("I Do!");return msg;

}

Page 52: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Overzicht Interaction Overzicht Interaction ProtocolsProtocols

““Rational Effect” behaviours in JADE: Rational Effect” behaviours in JADE: SimpleAchieveREInitiatorSimpleAchieveREInitiator en en SimpleAchieveREResponder SimpleAchieveREResponder voor voor

1-to-1 conversatie1-to-1 conversatie AchieveREInitiatorAchieveREInitiator en en AchieveREResponder AchieveREResponder voor 1-to-n voor 1-to-n

conversatie (zie JPG3.5.1)conversatie (zie JPG3.5.1) Experimenteel:Experimenteel: FIPA-subscribe (/fipa00035/): FIPA-subscribe (/fipa00035/):

SubscriptionInitiatorSubscriptionInitiator en en SubscriptionResponderSubscriptionResponder voor 1-to-n voor 1-to-n conversatie (in JPG beschrijft men iets analoogs voor FIPA-conversatie (in JPG beschrijft men iets analoogs voor FIPA-propose) propose)

FIPA-contract-net protocol (zie volgende)FIPA-contract-net protocol (zie volgende) Zelf IP’s schrijven? Zelf IP’s schrijven?

JPG3.5.5: “Generic states of interaction protocols”JPG3.5.5: “Generic states of interaction protocols”Bijvoorbeeld

Dutch Auction (/fipa00032/)

of English Auction

(/fipa00031/)

Page 53: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Contract Net Protocol Contract Net Protocol (/fipa00029/)(/fipa00029/)

Page 54: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Contract Net Protocol Contract Net Protocol (/fipa00029/)(/fipa00029/)

Zie JPG3.5.2/API: ContractNetInitiator (handleAllResponses,

handleAllResultNotifications) en ContractNetResponder

(prepareResonse, prepareResultNotification)

Page 55: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

ACL Message Content ACL Message Content (PRI7)(PRI7)

Content type Getting content Setting content

Strings getContent() SetContent()

Java Objects getContentObject() SetContentObject()

Ontology Objects extractContent() fillContent()

Tot nu toe…

Handig maar geen FIPA; serialiseer!

Content language + ontologie; methods via ContentManager

Page 56: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

OefeningOefening

1.1. Schrijf een agent dieSchrijf een agent die Tijdens setup bij DF op zoek gaat naar Tijdens setup bij DF op zoek gaat naar

geregistreerde PingAgenten ()geregistreerde PingAgenten () Zich ook subscribet bij de DF om weet te hebben Zich ook subscribet bij de DF om weet te hebben

van nieuwe PingAgenten – gebruik hiervoor de van nieuwe PingAgenten – gebruik hiervoor de SubscriptionInitiator (FIPA-Subscribe)SubscriptionInitiator (FIPA-Subscribe)

Zelfstandige behaviours bezit die elk op zich één Zelfstandige behaviours bezit die elk op zich één van de aanwezige PingAgenten pingen om de 5 van de aanwezige PingAgenten pingen om de 5 secondenseconden

2.2. Pas de PingAgent aan zodat pingen gebeurt Pas de PingAgent aan zodat pingen gebeurt over het FIPA-Request Interaction Protocolover het FIPA-Request Interaction Protocol

3.3. Wat gebeurt er als we een PingAgent Wat gebeurt er als we een PingAgent verwijderen? Los het probleem op.verwijderen? Los het probleem op.

( )

Page 57: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Deel 3Deel 3

Content Language en Content Language en Ontologie, JADE Ontologie, JADE

uitbreidingenuitbreidingen

Page 58: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

ACL Message Content ACL Message Content (PRI7)(PRI7)

Content type Getting content Setting content

Strings getContent() SetContent()

Java Objects getContentObject() SetContentObject()

Ontology Objects extractContent() fillContent()

Tot nu toe…

Handig maar geen FIPA; serialiseer!

Content language + ontologie; methods via ContentManager

Page 59: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Content Language en Content Language en ontologie (BAS6)ontologie (BAS6)

CL (= codec): hoe wordt de boodschap CL (= codec): hoe wordt de boodschap geëncodeerd? 3 talen worden in JADE ondersteund:geëncodeerd? 3 talen worden in JADE ondersteund:1.1. FIPA-SL familie (Semantic Language, human-FIPA-SL familie (Semantic Language, human-

readable, ~ LISP)readable, ~ LISP) 2.2. LEAP encoding: lightweight binary encoding LEAP encoding: lightweight binary encoding 3.3. The Java Codec: which is designed for effficient message The Java Codec: which is designed for effficient message

exchange between agents on the same platform. exchange between agents on the same platform. Talen hebben verschillende semantiek en zijn niet Talen hebben verschillende semantiek en zijn niet

echt compatibel. SL is de rijkste taal.echt compatibel. SL is de rijkste taal. De ontologie beschrijft de structuur en de semantiek De ontologie beschrijft de structuur en de semantiek

van de berichtinhoud, zoals eigenschappen van van de berichtinhoud, zoals eigenschappen van bepaalde elementen en de relaties ertussen. In JADE bepaalde elementen en de relaties ertussen. In JADE dienen ontologieën beschreven te worden in JAVA dienen ontologieën beschreven te worden in JAVA klassen, manueel of met tools zoals Protégéklassen, manueel of met tools zoals Protégé

Page 60: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O

Page 61: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O Predicates (expressie, false of true)Predicates (expressie, false of true)

(Works-for (Person :name John) (Company :name TILAB))

Terms (verwijzen naar bestaande Terms (verwijzen naar bestaande entiteiten)entiteiten) ConceptsConcepts

(Person :name John :age 33) Agent actions (verbonden aan performative)Agent actions (verbonden aan performative)

(Sell (Book :title “The Lord of the rings”) (Person :name John))

AggregatesAggregates (sequence (Person :name John) (Person :name Bill))

Identifying Referential cIdentifying Referential c (all ?x (Works-for ?x (Company :name TILAB)) = alle elementen x waarvoor geldt dat …= alle elementen x waarvoor geldt dat …

Variables and primitives

Page 62: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O

Music Shop exampleMusic Shop example Concepts: Item, CD, Track and Book Concepts: Item, CD, Track and Book

(and AID)(and AID) Predicate: OwnsPredicate: Owns Action: SellAction: Sell

Page 63: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&Opublic class MusicShopOntology extends Ontology {

public static final String ONTOLOGY_NAME = "Music-shop-ontology";

public static final String ITEM = "Item";public static final String ITEM_SERIAL = "serial-number";public static final String CD = "CD";public static final String CD_NAME = "name";public static final String CD_TRACKS = "tracks";public static final String TRACK = "Track";public static final String TRACK_TITLE = "title";public static final String TRACK_DURATION = "duration";public static final String BOOK = "Book";public static final String BOOK_TITLE = "title";public static final String OWNS = "Owns";public static final String OWNS_OWNER = "owner";public static final String OWNS_ITEM = "item";public static final String SELL = "Sell";public static final String SELL_BUYER = "buyer";public static final String SELL_ITEM = "item";

Page 64: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O// The singleton instance of this ontologyprivate static Ontology theInstance = new MusicShopOntology();

public static Ontology getInstance() {return theInstance;}

private MusicShopOntology() {

super(ONTOLOGY_NAME, BasicOntology.getInstance())try {

add(new ConceptSchema(ITEM), Item.class);add(new ConceptSchema(CD), CD.class);add(new ConceptSchema(TRACK), Track.class);add(new ConceptSchema(BOOK), Book.class);add(new PredicateSchema(OWNS), Owns.class);add(new AgentActionSchema(SELL), Sell.class);

Page 65: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&OConceptSchema cs = (ConceptSchema) getSchema(ITEM);cs.add(ITEM_SERIAL, (PrimitiveSchema)

getSchema(BasicOntology.INTEGER), ObjectSchema.OPTIONAL);

cs = (ConceptSchema) getSchema(CD);cs.addSuperSchema((ConceptSchema) getSchema(ITEM));cs.add(CD_NAME, (PrimitiveSchema)

getSchema(BasicOntology.STRING));cs.add(CD_TRACKS, (ConceptSchema) getSchema(TRACK), 1,

ObjectSchema.UNLIMITED);// . . .

PredicateSchema ps = (PredicateSchema) getSchema(OWNS);ps.add(OWNS_OWNER, (ConceptSchema)

getSchema(BasicOntology.AID));ps.add(OWNS_ITEM, (ConceptSchema) getSchema(ITEM));

AgentActionSchema as = (AgentActionSchema) getSchema(SELL);as.add(SELL_ITEM, (ConceptSchema) getSchema(ITEM));as.add(SELL_BUYER, (ConceptSchema)getSchema(BasicOntology.AID));

Page 66: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O

Bouw Concepts, Predicates en Bouw Concepts, Predicates en AgentActions volledig analoog opAgentActions volledig analoog op Overerving juiste interfaceOvererving juiste interface Overerving indien super-schemaOvererving indien super-schema Juiste datamembers (STRING vertaalt Juiste datamembers (STRING vertaalt

zich in String enzovoort …). Indien zich in String enzovoort …). Indien cardinaliteit >1 wordt het een Listcardinaliteit >1 wordt het een List

Page 67: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&Opackage musicShopOntology;

import jade.util.leap.List;

public class CD extends Item {

private String name;private List tracks;

public String getName() {return name;}

public void setName(String n) {name = n;}

public List getTracks() {return tracks;}

public void setTracks(List l) {tracks = l;}}

package musicShopOntology;

import jade.content.Predicate;import jade.core.AID;

public class Owns implements Predicate{

private AID owner;private Item item;

public AID getOwner() {return owner;}

public void setOwner(AID id) {owner = id;}

public Item getItem() {return item;}

public void setItem(Item i) {item = i;}}

Page 68: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O

Content LanguageContent Language Formaat SLFormaat SL

(ACTION(agent-identifier :name John)(Sell

(Book :title “The Lord of the rings”)(agent-identifier :name Peter)

))

Page 69: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O

RegistratieRegistratie

public class SellerAgent extends Agent {private Codec codec = new SLCodec();private Ontology ontology = MusicShopOntology.getInstance();…protected void setup() {

…getContentManager().registerLanguage(codec);getContentManager().registerOntology(ontology)…

}…}

Page 70: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE-tutorial CL&OJADE-tutorial CL&O

GebruikGebruikACLMessage msg = new ACLMessage(ACLMessage.QUERY_IF);msg.addReceiver(sellerAID);msg.setLanguage(codec.getName());msg.setOntology(ontology.getName());

// bouw owns object op

getContentManager().fillContent(msg, owns);send(msg);

MessageTemplate mt = MessageTemplate.and( MessageTemplate.MatchLanguage(codec.getName()), MessageTemplate.MatchOntology(ontology.getName()) );

ce = getContentManager().extractContent(msg);if (ce instanceof Owns) { Owns owns = (Owns) ce; Item it = owns.getItem();}

Page 71: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Niet aan bod gekomenNiet aan bod gekomen

GUI programmingGUI programming JADE vanuit externe applicatiesJADE vanuit externe applicaties MTP’s (Message Transport MTP’s (Message Transport

Protocols)Protocols) Mobiliteit en Cloning (+ ontologie Mobiliteit en Cloning (+ ontologie

voor mobiliteit)voor mobiliteit)

Page 72: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

JADE uitbreidingenJADE uitbreidingen Meer informatie: Meer informatie: http://jade.cselt.it/http://jade.cselt.it/ LEAP:LEAP: JADE voor mobiele toestellen (J2SE, J2ME JADE voor mobiele toestellen (J2SE, J2ME

en Personal Java)en Personal Java) MTP’s:MTP’s: Orbacus, HTTP, JMS Orbacus, HTTP, JMS Codecs:Codecs: XML- en RDF-varianten, bit-efficient XML- en RDF-varianten, bit-efficient JADE-SJADE-S (in ontwikkeling): ondersteuning voor (in ontwikkeling): ondersteuning voor

securitysecurity Ondersteuning voor Ondersteuning voor appletsapplets en en JSPJSP JADEX:JADEX: JADE-agents in BDI-formaat - JADE-agents in BDI-formaat - httphttp

://vsis-www.informatik.uni-hamburg.de/projects/j://vsis-www.informatik.uni-hamburg.de/projects/jadex/adex/

Page 73: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

OefeningOefening

1.1. Bestudeer het PeopleOntology – Bestudeer het PeopleOntology – voorbeeld (zie website). Werk de voorbeeld (zie website). Werk de AgentAction “marry” en eventueel AgentAction “marry” en eventueel ontbrekende predicaten uit.ontbrekende predicaten uit.

2.2. Pas het voorbeeld uit BAS5 aan:Pas het voorbeeld uit BAS5 aan: De agenten gebruiken de PeopleOntologyDe agenten gebruiken de PeopleOntology Beide agenten bouwen tijdens setup hun Beide agenten bouwen tijdens setup hun

stamboom opstamboom op

Page 74: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Deel 4Deel 4

Agents en het Prisoners’ Agents en het Prisoners’ dilemmadilemma

Page 75: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Prisoners’ dilemmaPrisoners’ dilemma http://www.gametheory.net/Dictionary/Games/PrisonersDilemma.http://www.gametheory.net/Dictionary/Games/PrisonersDilemma.

htmlhtml

AA

BBDenyDeny ConfessConfess

DenyDeny 22

2233

00

ConfessConfess 00

3311

11

Page 76: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Prisoners’ dilemmaPrisoners’ dilemma

1 wedstrijd = 200 iteraties tegen 1 en 1 wedstrijd = 200 iteraties tegen 1 en dezelfde tegenstreverdezelfde tegenstrever

Enkel gedurende cyclus van 200 iteraties Enkel gedurende cyclus van 200 iteraties (= 1 wedstrijd) geheugenopbouw(= 1 wedstrijd) geheugenopbouw

Tornooi tussen N agenten: elke agent doet Tornooi tussen N agenten: elke agent doet (N-1) x 5 wedstrijden(N-1) x 5 wedstrijden

Page 77: Benodigdheden  JADE – environment 3.0  JADE API (jade\doc\api)  JADE docs (jade\doc): programming tutorial for beginners (JPT), administrators guide.

Prisoners’ dilemmaPrisoners’ dilemma Ontwikkelen van spelomgevingOntwikkelen van spelomgeving

Welke agenten? Autoriteit? Gevangenen?Welke agenten? Autoriteit? Gevangenen? Interactie DF?Interactie DF? Hoe organiseert de autoriteit?Hoe organiseert de autoriteit? Communicatie tussen autoriteit en gevangenen en Communicatie tussen autoriteit en gevangenen en

tussen gevangenen onderling: interaction protocol, tussen gevangenen onderling: interaction protocol, content language en ontologie?content language en ontologie?

Hoe zullen we vermijden dat buiten 1 wedstrijd Hoe zullen we vermijden dat buiten 1 wedstrijd geheugen wordt opgebouwd? Herstarten geheugen wordt opgebouwd? Herstarten agent/behaviour?agent/behaviour?

Registratie van de punten?Registratie van de punten? Ontwerp autoriteit + ev. Ontwerp interface voor Ontwerp autoriteit + ev. Ontwerp interface voor

gevangenegevangene