http://jade.tilab.com/



Similar documents
Multi-Agent Systems. Mehdi Dastani

JADE: Java Agent Development Framework What is it? How can I use it?

J A D E T U TO R I A L

Java Agent DEvelopment Framework (JADE)

JADE PROGRAMMER S GUIDE

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version

Agent Based Expert System for Online Assessment in Distributed Database Environment: Prototype Design and Implementation

STORM. Simulation TOol for Real-time Multiprocessor scheduling. Designer Guide V3.3.1 September 2009

Sample copy. Introduction To WebLogic Server Property of Web 10.3 Age Solutions Inc.

FIPA agent based network distributed control system

Capabilities of a Java Test Execution Framework by Erick Griffin

FioranoMQ 9. High Availability Guide

Generating Automated Test Scripts for AltioLive using QF Test

Log Analyzer Reference

Open-Source, Cross-Platform Java Tools Working Together on a Dialogue System

WebSphere Server Administration Course

OPERATING SYSTEM SERVICES

ODROID Multithreading in Android

Migrating to vcloud Automation Center 6.1

User's Guide - Beta 1 Draft

IBM Tivoli Workload Scheduler Integration Workbench V8.6.: How to customize your automation environment by creating a custom Job Type plug-in

NetBeans IDE Field Guide

Chapter 1 - Web Server Management and Cluster Topology

IBM WebSphere Server Administration

CLC Server Command Line Tools USER MANUAL

The SkySQL Administration Console

Firewall Builder Architecture Overview

WebSphere Business Monitor V7.0 Configuring a remote CEI server

Monitoring Oracle Enterprise Performance Management System Release Deployments from Oracle Enterprise Manager 12c

DEPLOYMENT GUIDE DEPLOYING F5 AUTOMATED NETWORK PROVISIONING FOR VMWARE INFRASTRUCTURE

Using RADIUS Agent for Transparent User Identification

Java the UML Way: Integrating Object-Oriented Design and Programming

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

Java Application Developer Certificate Program Competencies

TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

Oracle WebLogic Server 11g Administration

Deploying Microsoft Operations Manager with the BIG-IP system and icontrol

Towards Rule-based System for the Assembly of 3D Bricks

Online Trading System Project Specifications Distributed Objects CSPP 51024

How To Install Netbackup Access Control (Netbackup) On A Netbackups (Net Backup) On Unix And Non Ha (Net Backup) (Net Backups) (Unix) (Non Ha) (Windows) (

Configuring Nex-Gen Web Load Balancer

Tutorial: Load Testing with CLIF

1. Stem. Configuration and Use of Stem

Scalability and Performance of JADE Message Transport System

Fundamentals of Java Programming

Java Application Development using Eclipse. Jezz Kelway Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom

Listeners. Formats. Free Form. Formatted

Exchange Migration Guide

MANAGING AGENT PLATFORMS WITH THE SIMPLE NETWORK MANAGEMENT PROTOCOL

FIPA Agent Management Specification

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules

BEAWebLogic. Server. Configuring and Managing WebLogic Server

No.1 IT Online training institute from Hyderabad URL: sriramtechnologies.com

Dove User Guide Copyright Virgil Trasca

Design Pattern for the Adaptive Scheduling of Real-Time Tasks with Multiple Versions in RTSJ

DIPLOMADO DE JAVA - OCA

Web Service Caching Using Command Cache

SAIP 2012 Performance Engineering

socketio Documentation

Microsoft Windows PowerShell v2 For Administrators

Creating a Windows Service using SAS 9 and VB.NET David Bosak, COMSYS, Kalamazoo, MI

Tutorial 5: Developing Java applications

There are numerous ways to access monitors:

DIABLO VALLEY COLLEGE CATALOG

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

WebSphere Business Monitor V7.0 Installation and stand-alone server profile creation

NetIQ Identity Manager

Asta Powerproject Enterprise

CA Performance Center

NGASI AppServer Manager SaaS/ASP Hosting Automation for Cloud Computing Administrator and User Guide

Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java

COMMANDS 1 Overview... 1 Default Commands... 2 Creating a Script from a Command Document Revision History... 10

White Paper March 1, Integrating AR System with Single Sign-On (SSO) authentication systems

Installing and Using the vnios Trial

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources. Recap: TinyOS. Recap: J2ME Framework

Oracle EXAM - 1Z Oracle Weblogic Server 11g: System Administration I. Buy Full Product.

Interoperability of open-source VoIP and multi-agent systems

Scheduling in SAS 9.3

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

RSA Authentication Manager 8.1 Virtual Appliance Getting Started

WEBLOGIC ADMINISTRATION

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

CA Nimsoft Monitor. Probe Guide for Java Virtual Machine Monitoring. jvm_monitor v1.4 series

IGEL Universal Management. Installation Guide

User's Guide - Beta 1 Draft

Deploying Load balancing for Novell Border Manager Proxy using Session Failover feature of NBM and L4 Switch

Introduction to Java

Top Weblogic Tasks You can Automate Now

An Android-based Instant Message Application

Chapter 2: Processes, Threads, and Agents

Tool - 1: Health Center

Buffalo Technology: Migrating your data to Windows Storage Server 2012 R2

CONNECTING TO DEPARTMENT OF COMPUTER SCIENCE SERVERS BOTH FROM ON AND OFF CAMPUS USING TUNNELING, PuTTY, AND VNC Client Utilities

PATROL Console Server and RTserver Getting Started

Understanding the WebLogic Scripting Tool c (12.1.3)

Integrating CoroSoft Datacenter Automation Suite with F5 Networks BIG-IP

Transcription:

http://jade.tilab.com/

JADE A framework for developing multi-agent systems FIPA-compliant Written in JAVA, consists of an API with several packages Agent platform: 2

AMS and DF Agent Management System (AMS) Supervises access and usage of the agent platform Maintains a directory of agent identifiers (AID) and agent state Each agent registers in the AMS to get a valid AID In a JADE platform, there is only one AMS Directory Facilitator (DF) Yellow page service When a JADE platform is launched, both the AMS and the DF are automatically created 3

Containers Containers A platform may have several containers, where agents live Containers are not necessarily in the same machine 1 JVM per machine, 1 thread per agent There is a special container in each platform: main container, which includes the AMS and the DF Communication Receiver in the same container: event-notification Receiver in the same platform, but in a different container: RMI Receiver in a different platform: IIOP 4

Mobility and Cloning Supports intra-platform mobility and cloning JADE plataform may be distributed among several machines (each one having its own container) Agents may migrate between containers domove(location) beforemove() / aftermove() Agents may be cloned doclone(location, String) beforeclone() / afterclone() 5

JADE Execution Change the CLASSPATH to include: %JADE%\lib\jade.jar; %JADE%\lib\commons-codec\commons-codec-1.3.jar; Execute the command: java jade.boot [options] [agentlist] launches a main container, including AMS and DF [options] -container -host HostName (default is localhost) -port PortNumber (default is 1099) -gui (Remote Monitoring Agent)... [agentlist] semicolon (;) separated agent identifiers identifier = name:class_name(comma_sep_arguments) NOTE: it is also possible to launch JADE from Java code! 6

Launching Agents Launching JADE agents i. Using the RMA (Remote Monitoring Agent) select a container and choose Start New Agent ii. From the command line, when starting JADE or launching a new container java jade.boot name:class_name(arguments) java jade.boot ping0:examples.pingagent.pingagent iii. Programmatically, using the ContainerController class acceptnewagent(name, agent) createnewagent(name, class, arguments) 7

Launching Containers Multiple containers In the same machine Start JADE java jade.boot Add a new container with an agent java jade.boot container a:classea In different machines Start JADE in machine PCAna java jade.boot Add new container in the machine PCJohn with an agent java jade.boot host PCAna container a:classea agent a lives in the machine PCJohn, but belongs to the platform running in the machine PCAna; its GUID (Globally Unique ID) is a@pcana:1099/jade 8

JADE Tools Tools that simplify platform administration and application development Remote Monitoring Agent Dummy Agent Sniffer Agent Introspector Agent Directory Facilitator GUI 9

RMA Remote Monitoring Agent (RMA) Graphical console to monitor the agent platform activity Visualization of container and agent states There can be more than one RMA in the same platform Launching RMA: As a regular agent java jade.boot myconsole:jade.tools.rma.rma Using the gui option java jade.boot gui 10

RMA 11

Dummy Agent Useful tool for debugging Allows interaction with other agents by sending, receiving and viewing ACL messages How to launch: From the command line java jade.boot da:jade.tools.dummyagent.dummyagent From the RMA GUI choose Tools Start DummyAgent or choose Start New Agent and provide jade.tools.dummyagent.dummyagent as the class name 12

Dummy Agent 13

Sniffer Agent When you sniff an agent (or a group), any messages sent to/by the agent are visualized in a kind of UML sequence diagram When an agent or a container is created or destroyed, the Sniffer Agent is informed by the AMS How to launch: From the command line java jade.boot snif:jade.tools.sniffer.sniffer From the RMA GUI choose Tools Start Sniffer or choose Start New Agent and provide jade.tools.sniffer.sniffer as the class name 14

Sniffer Agent 15

Directory Facilitator GUI DF is a yellow page service: agents can register their services or search the DF In each platform, there is at least one DF How to launch the GUI: From the RMA GUI choose Tools Show the DF GUI 16

Introspector Agent Monitors the life cycle of an agent: messages sent/received, behaviour queue How to launch: From the RMA GUI choose Tools Start IntrospectorAgent 17

JADE Agents Class Agent base class to build agents Agent execution 1. Constructor is executed 2. Agent is given an identifier and is registered in the AMS, and is put in the ACTIVE state identifier=localname+ @ +platformmachine:port+ /JADE 3. The setup() method is executed used to: (optionally) modify the data registered with the AMS (optionally) attribute services to the agent, and register with one or more domains (DFs) add behaviours (tasks) which will be scheduled as soon as the setup() method returns 18

JADE Agents Stop agent execution Agent.doDelete() stops the agent execution Agent.takeDown() method to be overridden for any cleanup (e.g. unregister from DF) before the agent is destroyed Communication Asynchronous message passing Usage of objects of the ACLMessage class Agent.send(msg) sends a message Agent.receive() gets a message from the message queue another version with MessageTemplate Agent.blockingReceive() gets a message from the queue but suspends all agent activity until a message is actually received other versions with MessageTemplate, timeout 19

Behaviours Implementing behaviours Agent tasks are implemented as Behaviour objects Agent.addBehaviour(Behaviour) Agent.removeBehaviour(Behaviour) The API includes several Behaviour subclasses There is a behaviour queue; scheduling follows a roundrobin policy Pick the first behaviour Execute its action() method Invoke its Boolean done() method to check if the behaviour is finished if yes, the behaviour is removed from the queue if no, the behaviour goes back to the end of the queue Pick the next behaviour in the queue 20

21

Example import jade.core.*; import jade.core.behaviours.*; import jade.lang.acl.aclmessage; import jade.domain.fipaagentmanagement.servicedescription; import jade.domain.fipaagentmanagement.dfagentdescription; import jade.domain.dfservice; import jade.domain.fipaexception; // classe do agente public class PingPong extends Agent { // classe do behaviour class PingPongBehaviour extends SimpleBehaviour { private int n = 0; // construtor do behaviour public PingPongBehaviour(Agent a) { super(a); } 22

Example // método action public void action() { ACLMessage msg = blockingreceive(); if(msg.getperformative() == ACLMessage.INFORM) { System.out.println(++n + " " + getlocalname() + ": recebi " + msg.getcontent()); // cria resposta ACLMessage reply = msg.createreply(); // preenche conteúdo da mensagem if(msg.getcontent().equals("ping")) reply.setcontent("pong"); else reply.setcontent("ping"); // envia mensagem send(reply); } } // método done public boolean done() { return n==10; } } // fim da classe PingPongBehaviour 23

Example // método setup protected void setup() { String tipo = ""; // obtém argumentos Object[] args = getarguments(); if(args!= null && args.length > 0) { tipo = (String) args[0]; } else { System.out.println("Não especificou o tipo"); } // regista agente no DF DFAgentDescription dfd = new DFAgentDescription(); dfd.setname(getaid()); ServiceDescription sd = new ServiceDescription(); sd.setname(getname()); sd.settype("agente " + tipo); dfd.addservices(sd); try { DFService.register(this, dfd); } catch(fipaexception e) { e.printstacktrace(); } 24

Example // cria behaviour PingPongBehaviour b = new PingPongBehaviour(this); addbehaviour(b); // toma a iniciativa se for agente "pong" if(tipo.equals("pong")) { // pesquisa DF por agentes "ping" DFAgentDescription template = new DFAgentDescription(); ServiceDescription sd1 = new ServiceDescription(); sd1.settype("agente ping"); template.addservices(sd1); try { DFAgentDescription[] result = DFService.search(this, template); // envia mensagem "pong" inicial a todos os agentes "ping" ACLMessage msg = new ACLMessage(ACLMessage.INFORM); for(int i=0; i<result.length; ++i) msg.addreceiver(result[i].getname()); msg.setcontent("pong"); send(msg); } catch(fipaexception e) { e.printstacktrace(); } } } // fim do metodo setup 25

// método takedown protected void takedown() { // retira registo no DF try { DFService.deregister(this); } catch(fipaexception e) { e.printstacktrace(); } } } // fim da classe PingPong Example 26

Jess the Rule Engine for the Java Platform http://www.jessrules.com/

JESS Java Expert System Shell A rule engine that very efficiently applies rules to data. Developed at Sandia National Laboratories in late 1990s, created by Dr. Ernest J. Friedman-Hill. Inspired by the AI production rule language CLIPS. Fully developed Java API for creating rule-based expert systems. How does Jess work? Jess matches facts in the fact base to rules in the rule base. The rules contain function calls that manipulate the fact base and/or other Java code. Jess uses the Rete algorithm to match patterns. 28

Jess Architecture Diagram WORKING MEMORY RULE BASE INFERENCE ENGINE PATTERN MATCHER AGENDA EXECUTION ENGINE 29

The Jess Language Architecturally inspired by CLIPS LISP-like syntax. Basic data structure is the list. Can be used to script Java API. JAVA --> JESS Can be used to access JavaBeans. JESS --> JAVA you can create any Java object and access its methods from within Jess! Easy to learn and use. 30

RULE BASE WORKING MEMORY JESS and JADE example Jess rules to respond to ACM messages use a Jess engine within na agent behaviour AGENT ACLMessage AGENT BEHAVIOUR reply ACLMessage send Userfunction ACLMessages Message handling rules Other rules and functions 31

JESS and JADE integration JESS may be used to implement a reasoning module of a JADE agent in one of the several agent behaviours Further information: http://jade.tilab.com/doc/tutorials/jade-jess/jade_jess.html 32