ai mas 3 12 2004 n.
Skip this Video
Loading SlideShow in 5 Seconds..
AI-MAS 3.12.2004 PowerPoint Presentation
Download Presentation
AI-MAS 3.12.2004

Loading in 2 Seconds...

play fullscreen
1 / 35

AI-MAS 3.12.2004 - PowerPoint PPT Presentation

  • Uploaded on

AI-MAS 3.12.2004. JADE. An agent platform that implements the basic services and infrastructure of a distributed multi-agent application: agent life-cycle and agent mobility white & yellow-page services peer-to-peer message transport & parsing ; also multi-party communication

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'AI-MAS 3.12.2004' - skyler

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
  • An agent platform that implements the basic services and infrastructure of a distributed multi-agent application:
    • agent life-cycle and agent mobility
    • white & yellow-page services
    • peer-to-peer message transport & parsing; also multi-party communication
    • agent security
    • scheduling of multiple agent tasks
    • set of graphical tools to support monitoring, logging, and debugging
    • encourages the development of pro-active applications
  • Some relevant features:
    • is extremely light-weight, ported to J2ME-CLDC-MIDP 1.0; mobile terminals
    • enables interoperability through FIPA compliance
    • is an open source project originated by TILAB and currently governed by an International Board
    • is used by several R&D projects
the architectural model
The architectural model
  • A JADE-based application is composed of a collection of active components called Agents
  • Each agent has a unique name
  • Each agent is a peer since he can communicate in a bidirectional way with all other agents
  • Each agent lives in a container (that provides its run time) and can migrate within the platform
  • One container plays the role of main (where AMS, DF live)
  • The main-container can be replicated via replication service
agent class and names
Agent class and names
  • A type of agent is created by extending the jade.core.Agent class and redefining the setup() method.
  • Each Agent instance is identified by an AID (jade.core.AID),composed of a unique name plus some addresses; the getAID() method of the Agent class
  • Agent names are of the form <local-name>@<platform-name>
  • The complete name of an agent must be globally unique.
  • The default platform name is <main-host>:<main-port>/JADE
  • The platform name can be set using the –name option
  • Within a single JADE platform agents are referred through their names only.
  • Given the name of an agent its AID can be created as
    • AID id = new AID(localname, AID.ISLOCALNAME);
    • AID id = new AID(name, AID.ISGUID);
  • It is possible to pass arguments to an agent; the getArguments() method
  • An agent terminates when its doDelete() method is called.
  • On termination the agent’s takeDown() method is invoked (intended to include clean-up operations).
the behaviour class
The Behaviour class
  • The actual job that an agent does is typically carried out within “behaviours”
  • Behaviours are created by extending the jade.core.behaviours.Behaviour class
  • To make an agent execute a task it is sufficient to create an instance of the corresponding Behaviour subclass and call the addBehaviour() method of the Agent class.
  • Each Behaviour subclass must implement
    • public void action(): what the behaviour actually does
    • public boolean done(): Whether the behaviour is finished
  • An agent can execute several behaviours in parallel, however, behaviour scheduling is not preemptive, but cooperative and everything occurs within a single Java Thread
  • Behaviour switch occurs only when the action() method of the currently scheduled behaviour returns.
behaviour types
Behaviour types
  • “One shot” behaviours.
  • “Cyclic” behaviours.
  • “Complex” behaviours.
  • WakerBehaviour
    • The action() and done() method are already implemented so that the onWake() method (to be implemented by subclasses) is executed after a given timeout
    • After that execution the behaviour completes.
  • TickerBehaviour
    • The action() and done() method are already implemented so that the onTick() (to be implemented by subclasses) method is executed periodically with a given period
    • The behaviour runs forever unless its stop() method is executed
more about behaviours
More about behaviours
  • The onStart() method of the Behaviour class is invoked only once before the first execution of the action() method.
  • The onEnd() method of the Behaviour class is invoked only once after the done() method returns true.
  • Each behaviour has a pointer to the agent executing it: the protected member variable myAgent
  • The removeBehaviour() method of the Agent class can be used to remove a behaviour from the agent pool of behaviours. The onEnd() method is not called.
  • When the pool of active behaviours of an agent is empty the agent enters the IDLE state and its thread goes to sleep
  • Based on asynchronous message passing
  • Message format defined by the ACL language (FIPA)
  • Messages exchanged by agents are instances of the jade.lang.acl.ACLMessage
  • Sending a message = creating an ACLMessage object and calling the send() method of the Agent class
  • Reading messages from the private message queue is accomplished through the receive() method
  • Provide accessor methods to get and set all the fields defined by the ACL language : get/setPerformative(), get/setSender(), add/getAllReceiver(), get/setLanguage(), get/setOntology(), get/setContent()
blocking or selecting
Blocking or selecting
  • The block() method of the Behaviour class removes a behaviour from the agent pool and puts it in a blocked state (not a blocking call!!). Each time a message is received all blocked behaviours are inserted back in the agent pool and have a chance to read and process the message.
  • To avoid this it is possible to read only messages with certain characteristics specifying a jade.lang.acl.MessageTemplate parameter in the receive() method.
  • The Agent class also provides the blockingReceive() method; there are overloaded versions that accept a MessageTemplate and/or a timeout.
fipa acl message elements
FIPA ACL Message Elements
  • p e r f o r m a t i v e What action the message performs
  • s e n d e r Initiator of the message
  • r e c e i v e r Recipient of the message
  • r e p l y - t o Recipient of the message reply
  • c o n t e n t Content of the message
  • l a n g u a g e Language used to express content
  • e n c o d i n g Encoding used for content
  • o n t o l o g y Ontology context for content
  • p r o t o c o l Protocol message belongs to
  • c o n v e r s a t i o n - i d Conversation message belongs to
  • r e p l y - w i t h Reply with this expression
  • i n - r e p l y - t o Action to which this is a reply
  • r e p l y - b y Time to receive reply by
acl message example
ACL Message Example


:sender (:name

:receiver (:name rexhotel@tcp://

:ontology personal-travel-assistant

:language FIPA-SL

:protocol fipa-request


(action movenpickhotel@tcp://

(book-hotel (:arrival 25/11/2000) (:departure 05/12/2000) ...


  • Any language can be used as a Content Language, e.g.:
    • KIF, Prolog, SQL, Serialized Objects, Binary Large Objects
communicative act library
Communicative Act Library
  • accept-proposal: accept a previously submitted proposal
  • agree: agree to perform some action, possibly in the future
  • cancel: cancel some previously requested action
  • cfp: make a cal for proposals to perform a given action
  • confirm: inform a receiver that a given proposition is true
  • disconfirm: inform a receiver that a given proposition is false
  • failure: inform another agent that an action was attempted but failed
  • inform: inform a receiver that a given proposition is true
  • not-understood: informs a receiver that sender did not understand
  • query-if: ask another agent whether a given proposition is true
  • request: requests a receiver to perform some action
communicative act library1
Communicative Act Library
  • propose: submit a proposal to perform a certain action
  • query-ref: ask another agent for the object referred to by a referential expression
  • refuse: refuse to perform a given action
  • reject-proposal: reject a proposal during a negotiation
  • request-when: request a receiver to perform some action when some given proposition becomes true
  • request-whenever: request a receiver to perform some action as soon as some proposition is true and thereafter each time the proposition becomes true again
  • subscribe: a persistent intention to notify the sender of a value, and to notify again whenever the value changes
  • propagate: the receiver treats the embedded message as sent directly to it, and must identify the agents denoted by the given descriptor and send the received propagate message to them
  • proxy: the receiver must select target agents denoted by a given description and to send an embedded message to them
interaction protocols
Interaction protocols
  • Jade automatically handles the flow of messagesand the timeouts
  • callback methods that should be redefined to take the necessary actions
  • jade.proto package contains behaviours for both the initiator and responder role (FIPA-Request, FIPA-Contract-Net, FIPA-Subscribe)
  • Other FIPA IPs : FIPA-Query, FIPA-Request-When, FIPA-AIterated-Contract-Net, FIPA-Auction-English, FIPA-Auction-Dutch, FIPA-Brokering, FIPA-Recruiting, FIPA-Propose

Predefined sequences of messages exchanged by agents during a conversation

handling content expressions
Handling content expressions
  • Creating the Ontology (domain specific)
    • Defining the schemas ontology elements
    • Defining the corresponding Java classes
  • Handling content expressions as Java objects
  • Using the ContentManager to fill and parse message contents
  • Ontologies can be created with Protégé (with the beangenerator plugin)
interacting with the df agent
Interacting with the DF Agent
  • The DF is an agent, it communicates using ACL
  • The ontology and language that the DF “understands” are specified by FIPA
  • The jade.domain.DFService class provides static utility methods that facilitate the interactions with the DF
    • register();
    • modify();
    • deregister();
    • search();
  • The JADE DF also supports a subscription mechanism
dfdescription format
DFDescription format
  • When an agent registers with the DF it must provide a description
    • The agent AID
    • A collection of service descriptions (class ServiceDescription):
      • The service type (e.g. “Weather forecast”)
      • The service name (e.g. “Meteo-1”)
      • The languages, ontologies and interaction protocols that must be known to exploit the service
      • A collection of service-specific properties in the form key-value pair
  • When an agent searches/subscribes to the DF it must specify another DFAgentDescription that is used as a template
agent management system
Agent Management System
  • The authority in a JADE platform; all platform management actions (creating/killing agents, killing containers...)
  • Other agents can request the AMS to perform these actions by using
    • The fipa-request interaction protocol
    • The SL language
    • The JADE-Management ontology and related actions
  • getAMS() => the AID of the AMS
  • “Hard mobility”
    • Status: an agent can
      • stop its execution on the local container
      • move to a remote container (likely on a different host)
      • restart its execution there from the exact point where it was interrupted.
    • Code: If the code of the moving agent is not available on the destination container it is automatically retrieved on demand.
  • An agent must be Serializable in order to be able to move
  • Mobility can be
    • self-initiated through doMove() of the Agent class
    • forced by the AMS (following a request from another agent)
  • Agent cloning is also available - method doClone()
  • Add-on that prevents the threats (malicious kill or shutdown, sniffing or tampering the messages) by providing support for:
    • Authentication and authorization
    • End-to-end message integrity and confidentiality
  • All security related API are embedded into the SecurityHelper
  • Signing, encryption
  • Policy files per user: Platform, Container, AMS, Agent, Message
  • ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
  • ......
  • SecurityHelper myHelper = (SecurityHelper)
  • getHelper("");
  • myHelper.setUseSignature(msg);
  • send(msg);
advanced features
Advanced features
  • Using JADE (i.e. creating a container and starting agents) from an external Java program (servlets, applets, JSP..)
  • Executing a normal JADE behavior in a dedicated thread
  • Saving and reloading agent state on relational DB (persistence based on; add-on
  • Integration with JESS (Java Expert System Shell)
    • it allows reasoning about messages in JESS
    • it allows a JESS program to control sending/receiving messages and/or creating/destroying JADE behaviours
  • Distributed security, fault tolerance, support for replicated agents and services
  • Protégé, XML, RDF and OWL
  • Application-specific persistent delivery filters & JADE kernel-level services
  • The LEAP add-on
  • JADE agents on PDA and mobile phones
  • JADE-LEAP (J2SE, PJava, MIDP): different internal implementation, same APIs for agents
  • JADE-LEAP for MIDP is itself a MIDlet; the main class is jade.MicroBoot
  • A MIDlet must be packaged as a single JAR file => mix library & app. Classes
  • MIDP configuration parameters are specified in the JAD/manifest of the MIDlet
  • Minimize target (ant) + obfuscator : 450 k -> 30-150 k
  • Logging - uniform way (jade.util.Logger class)
    • J2SE : JAVA Logging
    • PJava : System.out.println()
    • MIDP : RecordStore
the main graphical tools of jade
The main graphical tools of JADE
  • Management, control, monitoring, and debugging of a multi-agent platform
    • RMA (Remote Monitoring Agent)
    • Dummy Agent
    • Sniffer Agent
    • Introspector Agent
    • Log Manager Agent
    • DF (Directory Facilitator) GUI
  • No need to implement the Agent Platform
    • AMS, DF executed at start-up
  • No need to implement agent-management ontology and functionalities
    • An agent is registered with the Agent Platform within its constructor, it is given a name and an address
    • The DFService class provides a simplified interface to access the services of the DF (registration, searching, lease-renewal, …)
  • No need to implement Message Transport and Parsing
    • Automatically (and possibly efficiently) done by the framework when sending/receiving messages
  • Interaction Protocols must only be extended via handle methods
  • Standard FIPA !