Java Agent Development Environment (JADE)

Download Report

Transcript Java Agent Development Environment (JADE)

Java Agent Development
Environment (JADE)
• Jade is a platform for running agents; it
supports:
– An asynchronous agent programming model
– Communication between agents either on the
same or different platforms
– Mobility, security, and other utilities
Jade Architecture
• Distributed Architecture
– Multiple Hosts
– Multiple Processes
– Multiple “Agent Containers”
• Agent Containers
– One java process per container
– Transparent to agents
– Main container hosts platform services
– Linked together using Java RMI
JADE
Basic Concepts
• Container: a running instance of the JADE
running environment containing several
agents
– A single Main Container must always be
active in a platform and all other containers
register with it as soon as they start
– You do not have to know how the JADE
runtime environment works, but just need to
start it before executing your agents
Main Container
Holds two special agents
• Agent Management system (AMS) that
provides the naming service; name,
ensure uniqueness, create/destroy agents
• Directory Facilitator (DF) that provides a
Yellow Pages service by means of which
an agent can find other agents providing
the services he requires in order to
achieve his goals
Main Container Responsibilities
• Managing the container table (CT), which
is the registry of the object references and
transport addresses of all container nodes
composing the platform
• Managing the agent descriptor table
(GADT), which is the registry of all agents
present in the platform, including their
current status and location
• Hosting the AMS and the DF
JADE toolkit
• Platform Runtime
– Agent lifecycle
– Message transport
– Service agents
• Agent Support
– Internal scheduling
– Decoding and understanding communication
• Debugging
– Tracing Messages
– Examining Agent State
Platform Services
• Implemented as agents
• AMS: Agent Management Service
– “White Pages”
– Maintains set of agents on a platform
• DF: Directory Facilitator
–
–
–
–
“Yellow Pages”
Provides a service directory
Maps service descriptions to Agent Identifiers
Agents can add/modify/delete entries for themselves
Interacting with Directory Facility
By exchanging ACL messages using FIPAagent-management ontology.
• Publish and Subscribe
– Publish: create instance of DFAgentDescription
class and call the register( ) static method, then
use setup( ) method
• Search for services
Primer:
http://www.iro.umontreal.ca/~vaucher/Agent
s/Jade/JadePrimer.html
JADE main distribution
• jadeBIN.zip
• jadeDOC.zip
• jadeExamples.zip
• jadeSrc.zip
First set local Java CLASSPATH (pg 36 Tb)
GUI provided by Remote Monitoring Agent
JADE Packages
• jade.core
– jade.core.event; implements the distributed
event notification service
– jade.core.management; implements the
distributed agent life-cycle management
service
– jade.core.messaging; implements the
message distribution service
– jade.core.mobility; implements the mobilitity
and cloning service
– ……
JADE Packages
• jade.content and its sub-packages contain the
collection of classes that support creating and
manipulating expressions according to a given
content and ontology
• jade.domain contains the implementation of the
AMS and DF agents
• jade.language.acl
• jade.proto
• jade.tools
• …
Message Transport Service
(MTS)
• By default, JADE always starts HTTPbased MTP with the initialization of a main
container.
• Whenever an incoming connection is
established and a valid message received
over that connection , the MTP routes the
message to its final destination.
• Using command-line options, any number
of MTPs can be activated (see Table 3.2)
Internal Message Transport
Protocol (IMPT)
• Used exclusively for exchanging messages
between agents living in different containers of
the same platform
• The RMI-IMPT; when a non-main container
boots up it locates the RMI registry on the
specified main container host and looks up the
object reference of the main container. It the
invokes the remot method addNode ( ) of the
main container to join the platform and refisters
its own reference with the main container.
Admin and Debugging Tools
•
In jadeTools.jar
– Remote Monitoring Agent (RMA) is a system tool that implements a graphical
platform management console
– DummyAgent is useful for sending custom ACL messages to test the behavior of
an other agent
– Sniffer Agent is for debugging, or for documenting dialogs between agents
– Introspector Agent for debugging the behavior of a single agent
– Lo Manager Agent simplifies the dynamic and distributed management of the
logging facility by providing a graphical interface that allows the logginglevels of
each component of the Jade platform to be changed at run-time
– Event notification service manages the distributed notification of all the events
generated by each node of the platform
• Platform-type
• Message Transport Protocol type
• Message-passing type
• Agent-internal type
Creating Agents
Extend the class jade.core.Agent and
implement the setup( ) method; see page 6
of Jade Tutorial at
http://jade.tilab.com/doc/JADEProgrammingTutorial-for-beginners.pdf
• Identifiers
• Termination
• Passing arguments to an agent
Internal Agent Architecture
• Agent is a single-threaded Java program
• Has tasked-based programming model
–
–
–
–
–
Set of Behaviours
Scheduled by the Agent
Tasks operate in parallel
Allows explicit coordination between tasks
Single-threaded
• Send/Receive messages through API
– Decoding/Encoding message content
Behaviours
• Each agent has a set of active behaviours
• Each behaviour should achieve a single task or
sub-task
– “Send this message”
– “Buy X”
• Behaviors are Java objects
• A behaviour runs until it is finished
• Should behave fairly—yield control, not block
• All active behaviours get executed with equal
frequency
Agent’s Behaviour
A behavior represents a task that an agent can
carry out and is implemented as an object of a
class that extends:
jade.core.behaviours.Behaviour
• Each class extending Behaviour must implement
the action( ) method
• Scheduling of behaviours in an agent is
cooperative; when method is called, it runs until
it returns. Allows for single Java thread per
agent, and eliminates synchronization issues.
• Three types of behaviours: One-shot, cyclic,
conditional
Behaviour Scheduling
• Behaviours do work in steps
• Once behaviour is activated, it is run until it finishes (or
for ever)
• Agent Scheduling loop
– Next behaviour selected from all “active
behaviours” in agent
– Exectuted in round-robin fashion:
– All active behaviours get executed equally often
• Behaviours have to be fair
– Should yield control
– Should never block or wait inside behaviour logic
Simple Behaviours
• Scheduler calls action() method to do next step
of behaviour
• Scheduler calls done() method to determing if
behaviour has finished
• One shot behaviours do all work in a single
invocation of “action()”, done() then always
returns true.
• Reentrant behaviours do some work in each
invocation of “action()” then return
Complex Behaviour
• Complex Behaviour has child behaviours
which may be simple or complex
• When Complex behaviour is active:
• Behaviour decides which children are active.
• Agent Scheduler runs active children
• Simple behaviours actually implement tasks
• Complex behaviours decide which tasks are
necessary
Sequential and Parallel
• Child behaviours are activated in order added.
– First behaviour is run until completed, then
next and so on.
– Complex behaviour finishes when last child
does.
• All child behaviours are activated simultaneously
– Behaviour can exit:
– When first child completes
– When all children complete
Agent Communication
• It is asynchronous message passing
• Each agent has mailbox where messages sent by
other agent’s are posted
• Messages have a format specified by FIPA’s Agent
Communication Language (ACL)
– Fields: Sender, receiver, performatives, content, ontology,
control (conversation-id, reply-with,..)
• Message implemented as an object of the
jade.lang.acl.ACLMessage classthat provides get
and set methods for handling all fields of a message
Communication
• All communication is message based
• Platform routes messages between agents
• Agents construct and decode messages
internally
• No explicit link between initiation and
response
Jade Ontologies
• Ontology provides description of concepts in the world
and relationships between them
• Mapping between objects described by ontology and
Java objects
• Protege is an Ontology Editor that
– Allows you to design and query ontologies.
– You will use it to extend the ontology given with the
coursework.
– Beangenerator plugin generates java code for your
ontology
– Use these objects in your messages