CÁC VẤN ĐỀ<br />
<br />
Java Agent Development<br />
Framework<br />
<br />
Khái niệm về Jade<br />
Cấu trúc của Jade platform<br />
Chuẩn FIPA<br />
Một số lớp quan trọng trong thư viện Jade<br />
Các hướng phát triển mới được Jade hỗ trợ<br />
<br />
1.<br />
what it is and what it is next ?<br />
site: http://jade.cselt.it<br />
<br />
2.<br />
3.<br />
4.<br />
5.<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
2<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
1. Các khái niệm về Jade<br />
<br />
1. Các khái niệm về Jade (tiếp)<br />
<br />
Jade là phần mềm dạng middle-ware phục vụ<br />
cho việc phát triển MAS.<br />
<br />
Jade được xây dựng hoàn toàn trên ngôn ngữ<br />
Java<br />
Đòi hỏi môt trường JDK 1.2 trở lên<br />
Có thể hoạt động phân tán trên nhiều máy(Không<br />
nhất thiết cùng hệ điều hành)<br />
<br />
Hỗ trợ việc xây dựng từng Agent trong hệ MAS.<br />
Cung cấp các dịch vụ cho hoạt động của Agent:<br />
• life-cycle, white-page, yellow-page, message<br />
transport, message encoding<br />
<br />
Jade là một hệ mở và mã nguồn mở<br />
<br />
Cung cấp các tools phục vụ cho việc debug:<br />
• remote monitoring agent, sniffer agent,…<br />
<br />
Yêu cầu xây dựng Agent dựa trên chuẩn FIPA.<br />
(c) SE/FIT/HUT 200x<br />
<br />
3<br />
<br />
4<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
Cấu trúc phân tán của Jade platform<br />
<br />
•<br />
•<br />
<br />
Jade main-container: mỗi platform chỉ có một<br />
main-container.<br />
Jade Agent-container: một platform có thể có nhiều<br />
Agent-container.<br />
(c) SE/FIT/HUT 200x<br />
<br />
Application Agent<br />
<br />
Application Agent<br />
<br />
host3.us<br />
Application Agent<br />
<br />
Application Agent<br />
<br />
Application Agent<br />
<br />
host2.jp<br />
Application Agent<br />
<br />
Platform Jade là môi trường hỗ trợ Agent hoạt<br />
động, trao đổi thông tin<br />
Platform Jade chứa nhiều container, các container<br />
khác có thể hoạt động độc lập trên các host khác<br />
nhau.<br />
Có hai loại container:<br />
<br />
Application Agent<br />
<br />
Cấu trúc phân tán của Jade platform<br />
<br />
Application Agent<br />
<br />
2.1<br />
<br />
host1.it<br />
<br />
Application Agent<br />
<br />
2. Cấu trúc của Jade platform<br />
<br />
Jade distributed Agent Platform<br />
Jade Main-container<br />
JRE 1.2<br />
<br />
Jade Agent Container<br />
JRE 1.2<br />
<br />
Jade Agent Container<br />
JRE 1.2<br />
<br />
Network protocol stack<br />
5<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
6<br />
<br />
1<br />
<br />
2.1 Cấu trúc phân tán của Jade platform(tiếp)<br />
a.<br />
<br />
2.1 Cấu trúc phân tán của Jade platform(tiếp)<br />
<br />
Tìm hiểu về Jade main-container<br />
<br />
Tìm hiểu về Jade Agent-Container<br />
<br />
Container này được khởI tạo cùng vớI Jade<br />
platform, và chỉ bị huỷ bỏ khi huỷ platform.<br />
Chứa một số Agent quan trọng của Jade platform:<br />
•<br />
<br />
Chứa các Agent của ngườI sử dụng<br />
Commad line:<br />
java jade.Boot –container<br />
<br />
RMA(Remote Management Agent): hoạt động như một<br />
màn hình điểu khiển, phục vụ cho việc qlý platform.<br />
<br />
Các container có thể nằm trên các host khác<br />
nhau, nếu có opption : -host trong commad line.<br />
<br />
command line: java Jade.Boot –platform –gui<br />
<br />
•<br />
•<br />
<br />
•<br />
<br />
2.2<br />
<br />
java jade.Boot –host [host’s Name/ IP]<br />
<br />
DF(Directory Facilitator): là một Agent cung cấp dịch<br />
vụ yellow-page trong platform.<br />
AMS(Agent Managemrnt System): là Agent theo dõi<br />
và quản lý sự truy cập và sử dụng Agent Platform.<br />
Cung cấp dịch vụ white-page.<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
7<br />
<br />
2.3 Hoạt động của Jade Platform<br />
<br />
Cấu trúc run-time của Jade<br />
Agent<br />
Management<br />
System<br />
<br />
Cấu trúc chuẩn của Agent platform (FIPA)<br />
<br />
Directory<br />
Facilitator<br />
<br />
White page<br />
service<br />
<br />
Yellow page<br />
service<br />
<br />
Agent Communication Channel<br />
Intra-Container<br />
Message Transport<br />
(Java events)<br />
<br />
Inter-Containers<br />
Message Transport<br />
(Java RMI)<br />
<br />
cache of<br />
agent addresses<br />
Inter-Platforms<br />
Message Transport<br />
(IIOP, HTTP, …)<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
9<br />
<br />
2.3.1 Các dịch vụ cần cho hoạt động của Jade platform<br />
a.<br />
White-page service<br />
Quản lý việc đăng ký của Agent<br />
Quản lý AID của các Agent đã đăng ký<br />
Quản lý vòng đờI của Agent<br />
<br />
Yellow-page service<br />
Quản lý việc giao tiếp giữa các Agent<br />
Điều phốI luồng thông tin trao đổI<br />
<br />
c.<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
10<br />
<br />
2.3.1 Các dịch vụ cần cho hoạt động của Jade<br />
(tiếp)<br />
<br />
2.3 Hoạt động của Jade Platform (tiếp)<br />
<br />
b.<br />
<br />
8<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
Message Transport System<br />
<br />
c.<br />
<br />
Message Transport System (tiếp)<br />
Còn được gọI là ACC (Agent communication<br />
channel)<br />
Là một thành phần thực hiện việc truyển và<br />
nhận các message giữa các Agent, thuộc cùng<br />
platform hay các platform ở xa.<br />
Các message được lưu trữ trong queue cho đến<br />
khi Agent nhận gọi phương thức receive();<br />
<br />
Là hệ thống phục vụ việc giao tiếp giữa các Agent<br />
(c) SE/FIT/HUT 200x<br />
<br />
11<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
12<br />
<br />
2<br />
<br />
3. Chuẩn FIPA<br />
<br />
3. Chuẩn FIPA (tiếp)<br />
<br />
Foundation for Intelligent Physical Agents<br />
http://www.fipa.org/<br />
Do một tổ chức phát triển lên (1996, Thụy<br />
Sỹ), hiện nay có khoảng 65 công ty thành<br />
viên.<br />
Việc phát triển ứng dụng dựa trên chuẩn FIPA<br />
giúp ta có thể tái sử dụng các thành phần một<br />
cách dễ dàng.<br />
13<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
Agent Platform<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
14<br />
<br />
Package jade.core<br />
<br />
provides<br />
<br />
Service<br />
<br />
Quy định cấu trúc và hoạt động của Jade<br />
Platform.<br />
Định nghĩa ngôn ngữ giao tiếp giữa các Agent,<br />
ngôn ngữ ACL.<br />
Cung cấp các dịch vụ của platform.<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
Định nghĩa Agent Platform (FIPA)<br />
<br />
Normative services<br />
<br />
Chuẩn FIPA vớI công nghệ Agent:<br />
<br />
Implements the kernel of the system<br />
Includes Agent class must be extend by AP<br />
Contains jade.core.behaviour sub-package<br />
implement the task of Agent<br />
<br />
Optional services<br />
<br />
Life cycle Management<br />
Agent-Software Integration<br />
White page service<br />
Ontology Service<br />
Yellow page service<br />
Human Agent Interaction<br />
Message Transport service<br />
(c) SE/FIT/HUT 200x<br />
<br />
15<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade<br />
<br />
16<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
Package jade.lang.acl<br />
<br />
Package jade.domain<br />
<br />
Process Agent Communication Language<br />
according to FIPA standard specification<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
Represent Agent management entities defined<br />
by FIPA standard<br />
Provide some services: life-cycle, yellow page,<br />
white page ….<br />
<br />
17<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
18<br />
<br />
3<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
Package jade.wrapper<br />
Provides wrapper of the JADE higher-level<br />
functionalities<br />
Allow the usage of Jade as a library whether<br />
external Java app launch JADE agents and agent<br />
containers<br />
<br />
Others<br />
Package jade.content<br />
Package jade.mtp<br />
Package jade.gui<br />
Package jade.proto<br />
Package jade.tools<br />
<br />
19<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
20<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
4.1. Lớp jade.core.Agent<br />
Cung cấp phương thức đăng ký vớI platform.<br />
Cung cấp các phương thức xác định trạng thái<br />
của Agent, quản lý trạng thái.<br />
Cung cấp các phương thức hoạt động khác của<br />
Agent<br />
<br />
21<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
22<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
Methods<br />
<br />
Họat động của Agent<br />
<br />
doStart(): initiate<br />
doMove(): active<br />
doClone(): active<br />
doWake(): waiting<br />
doActive(): suspended<br />
…<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
active<br />
transit<br />
copy<br />
active<br />
active, waiting<br />
<br />
Đặt tên<br />
<br />
AMS<br />
<br />
active<br />
<br />
setup<br />
<br />
destroy<br />
<br />
23<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
24<br />
<br />
4<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
Package jade.core.behaviour<br />
Bao gồm các lớp cho phép tạo ra các hoạt động<br />
của Agent từ đơn giản đến phức tạp<br />
Ta có thể tạo ra hành động cho Agent bằng việc<br />
kế thừa các lớp này<br />
•<br />
<br />
Cài đặt phương thức Action()<br />
<br />
Agent.addBehaviour(Behaviour)<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
25<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
26<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
Class ACLMessage<br />
Biểu diễn thông điệp ACL trao đổi giữa các<br />
Agent<br />
Các thuôc tính trong ACL message obj có thể<br />
truy cập thông qua các pt get/set<br />
Hỗ trợ khả năng reply<br />
….<br />
<br />
SequentialBehaviour<br />
ParallelBehaviour<br />
FSMBehaviour<br />
SenderBehaviour<br />
ReceiverBehaviour<br />
WakerBehaviour<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
Gồm một số lớp chính sau<br />
Behaviour<br />
SimpleBehaviour<br />
OneShotBehaviour<br />
CyclicBehaviour<br />
CompositeBehaviour<br />
<br />
27<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
28<br />
<br />
4. Một số lớp quan trọng trong thư viện Jade.<br />
<br />
Cách tạo Agent<br />
<br />
Cách tạo behaviour<br />
<br />
public class MyAgent extends Agent<br />
{<br />
// some attributes<br />
public void setup()<br />
{<br />
// registry with AMS..<br />
// other activities<br />
addBehaviour(myBehaviour)<br />
}<br />
// other methods<br />
}<br />
<br />
public class MyBehaviour extends Behaviour<br />
{<br />
// some attributes<br />
public MyBehaviour(Agent agent){super(agent)}<br />
public void action()<br />
{<br />
// agent action<br />
}<br />
// other methods<br />
}<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
29<br />
<br />
(c) SE/FIT/HUT 200x<br />
<br />
30<br />
<br />
5<br />
<br />