Kĩ thuật lập trình - Bài 9: Thư viện lập trình Agent

Distributed computing

„ Linking large numbers of different components to

perform joint tasks

„ Providing support services

„ To enable reuse of code

„ To abstract away from implementation level details

„ To provide uniform access to functions

„ Middleware defines (part of ) the environment.

„ Services available: communication, security, etc.

„ Agents live in a software environment – middleware

plays a large part

pdf 15 trang dienloan 6100
Bạn đang xem tài liệu "Kĩ thuật lập trình - Bài 9: Thư viện lập trình Agent", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Kĩ thuật lập trình - Bài 9: Thư viện lập trình Agent

Kĩ thuật lập trình - Bài 9: Thư viện lập trình Agent
1(c) SE/FIT/HUT 2002
Bài 9 Thư viện lập trình 
Agent
1. Sofware Agent
2. Midleware
(c) SE/FIT/HUT 2002
Middleware
„ Distributed computing 
„ Linking large numbers of different components to 
perform joint tasks
„ Providing support services
„ To enable reuse of code
„ To abstract away from implementation level details
„ To provide uniform access to functions
„ Middleware defines (part of) the environment.
„ Services available: communication, security, etc. 
„ Agents live in a software environment – middleware 
plays a large part
(c) SE/FIT/HUT 2002
Fat Client – Thin Middleware
„ Agents have many 
general purpose 
components
„ Little is left to the 
environment
„ Advantages
„ More control over 
behaviour
„ Good sense of the 
environment
„ Agent is more 
“independent”
„ Disadvantages
„ Little abstraction
„ Little interoperability 
(many different 
implementations)
„ (Potentially) Less 
efficient due to multiple 
specialisation. 
A
B
O
O
(c) SE/FIT/HUT 2002
Thin Client 
Fat Middleware
„ Agents are only 
behaviour code
„ Eveything else is a 
“service” in the 
middleware
„ Advantages
„ Reduction in code that 
needs to be written 
„ Greater code reuse
„ Stronger 
Interoperability (more 
predictable 
environment)
„ Lightweight agents
„ Disadvantages
„ Less control of
behaviour
„ No low level 
environment sensors
„ (Potentially) Less 
efficient due to 
generalisation 
Transport
SMTP
X.500
LDAP
HTTP
A
B
(c) SE/FIT/HUT 2002
Agent Middleware
„ Often quite “fat”
„ Using agents as an abstraction
„ Focus on high level behavioral details
„ Many systems are prototypes so:
• Efficiency is less of a concern
• The domain is restricted (less worried about general 
survival)
„ Often Incorporate
„ Naming services
„ Message Transport
„ Communication mechanisms and sometimes even 
coordination mechanisms such as auction interfaces
„ Agent architectures including reasoning systems
(c) SE/FIT/HUT 2002
Standards in Middleware
„ Corba
„ Interoperability - objects access each other
„ Services in the environment – Naming service, lookup 
services etc.
„ POA Interfaces – plug and play middleware interfaces
„ Networking standards
„ Routers exchange messages
„ Creates a distributed environment
„ Clients programmed at a level above the TCP/IP stack
„ “Hardware” middleware
„ E.g. mobile phone networks 
2(c) SE/FIT/HUT 2002
1.Agent Standards
„ FIPA
„ Foundation for Intelligent Physical Agents
„ Massif
„ OMG effort to standardize mobile agents – middleware 
services and internal middleware interfaces
„ De Facto standards
„ Jini: Sun distributed object layer including directory 
services, messaging etc. (DARPA GRID is a Jini based 
agent network)
„ Aglets: IBM mobile agent system. 
(c) SE/FIT/HUT 2002
2. FIPA Overview
„ Foundation for Intelligent Physical Agents
„ International standards body 
„ 60 member companies with heavy involvement from 
telecommunications companies in particular.
„ First standard in 1997 – “FIPA 97”
„ Since then – FIPA98 and FIPA2000
„ Standards in the following main areas
„ Agent communication (language, content language, 
interaction protocols) 
„ Message transport 
„ Directory services (DF)
„ Management and naming services (AMS), 
(c) SE/FIT/HUT 2002
Who is FIPA?
„ FIPA operates through the open international collaboration 
of member organisations, which are companies and 
universities active in the agent field. 
„ Companies: Alcatel, Boeing, British Telecom, Deutsche 
Telekom, France Telecom, Fujitsu, Hitatchi, HP, IBM, 
Fujitsu, Hewlett Packard, IBM, Intel, Lucent, NEC, NHK, 
NTT, Nortel, Siemens, SUN, Telia, Toshiba, etc.
„ Universities and Research Institutes: GMD, EPFL, Imperial, 
IRST, etc.
„ Government Agencies: DARPA
(c) SE/FIT/HUT 2002
4. FIPA Encodings and 
package
„ Fipa supports three main types of 
syntax encoding:
„ Extensible Markup Language – XML
„ Proprietary Binary format
„ Lisp-like format
„ Separates between Envelopes and 
Messages
(c) SE/FIT/HUT 2002
5. FIPA Specifications 
„ For this course:
„ Agent Management 
• FIPA Agent Management XC00023
„ Agent communication
• FIPA ACL Message Structure XC00061
• FIPA Communicative Act XC00037
• FIPA Interaction Protocols XC00025
• FIPA SL Content Language XC00008
„ Specifications and more information 
„ 
(c) SE/FIT/HUT 2002
Thư viện Java Agent Service
Tài liệu tham khảo:
† JAS Specification
† FIPA Abstract Architecture Specification
† Others FIPA Documents Specification 
(www.fipa.org)
3(c) SE/FIT/HUT 2002
Mục đích
„ tổng quan kiến trúc của một hệ đa Agent 
động do FIPA (Foundation for Intelligent 
Physical Agent) xây dựng
„ Giới thiệu thư viện JAS (Java Agent Service) 
và một số Use Case để làm rõ flow và kiến 
trúc của FIPA và JAS và xây dựng một 
khung agent dựa trên các đặc tả của FIPA 
và thư viện JAS
„ nghiên cứu: các service và cơ chế gửi nhận 
message trong hệ đa Agent động
(c) SE/FIT/HUT 2002
Hệ đa Agent
„ Hệ thống Agent mà FIPA xây dựng là một hệ 
đa Agent động: gồm nhiều Agent tương tác với 
nhau
„ Hệ đa Agent tĩnh : hệ đa Agent có số lượng và 
chủng loại Agent cố định
„ Hệ đa Agent động : hệ đa Agent có số lượng, 
chủng loại Agent tham gia hệ thống có thể thay 
đổi
„ Trong hệ đa Agent động, các Agent giao tiếp 
gián tiếp với nhau thông qua một hệ thống chủ 
đóng vai trò môi trường
„ Các hành vi cần có trong một hệ đa Agent 
động :
„ Đăng kí và gỡ bỏ đăng kí
„ Tìm kiếm
„ Gửi và nhận message
Agent Master 
System
Agent Agent
(c) SE/FIT/HUT 2002
Mở rộng một hệ đa Agent
„ Đây là mở rộng của một hệ đa 
Agent động: gồm có nhiều mức 
Master System
„ Mỗi mức Master System có thể 
coi là một Agent khi xét ở mức 
Master System cha
„ Có duy nhất một mức Master 
System ở trên cùng
„ Các Agent ở cùng một mức 
không gửi message trực tiếp 
được cho nhau
„ Ví dụ : Mạng máy tính. Server 
đóng vai trò của Super Master 
System. PC đóng vai trò Master 
System
Agent 
Master 
System
Agent 
A
Agent 
Master 
System
Agent 
C
Agent 
B
Agent 
Super 
Master 
System
(c) SE/FIT/HUT 2002
Kiến trúc tổng quan của FIPA 
về một hệ thống chủ
„ Đây là đặc tả trừu tượng của 
FIPA về một hệ đa Agent 
động
„ 4 thành phần cơ bản của 
một hệ thống chủ
„ 4 thành phần này sẽ được 
khai báo trong các ngôn ngữ 
cụ thể như C++, Java, 
Cobra..
Concrete realization : Language elements
Abstract Architecture
Message 
Transport
Agent 
Directory
Service 
Directory
ACL
Concrete realization : Java Elements
Message 
Transport
Agent 
Directory
Service 
Directory
ACL
(c) SE/FIT/HUT 2002
Kiến trúc của thư viện JAS
„ 5 thành phần cơ bản trong hệ thống JAS
„ Tương ứng giữa đặc tả FIPA và JAS
„ Service Root ↔ Service Directory
„ Agent Naming Service & Agent Directory Service ↔ Agent 
Directory
„ Transport System ↔ Message Transport
„ ACL ↔ ACL
Service Root
Agent Naming 
Service
Transport 
System
Agent Directory 
Service
ACL
Abstract Architecture
Message 
Transport
Agent 
Directory
Service 
Directory
ACL
(c) SE/FIT/HUT 2002
Các thao tác chính trong một hệ đa 
Agent động
1. Khởi tạo hệ thống agent : khởi tạo các 
service cần thiết phục vụ cho việc giao 
tiếp giữa các agent
2. Khởi tạo agent, thiết lập thuộc tính và 
tham chiếu đến các service
3. Agent giao tiếp với các agent khác và với 
môi trường
4. Gỡ bỏ đăng kí agent và huỷ bỏ hệ thống
4(c) SE/FIT/HUT 2002
Các Service của một 
hệ thống đa Agent 
động
(c) SE/FIT/HUT 2002
1.Service Directory Service và 
Service root
„ Theo đặc tả FIPA : SDS bản chất là lối vào để Agent truy cập 
đến các service khác của hệ thống. Điều đó không có nghĩa 
là Agent bắt buộc phải truy cập đến các Service khác gián 
tiếp thông qua Service Directory Service mà có thể truy cập 
trực tiếp
„ Theo đặc tả JAS : Service Root là một tập hợp của 3 service 
là AgentNamingService, AgentDirectoryService và 
TransportSystem
„ Service này được khởi tạo khi hệ thống được khởi tạo, có 
một instance duy nhất. Instance này được truyền vào làm 
tham số cho quá trình khởi tạo một Agent
Service Root
Agent Naming 
Service
Agent Directory 
Service Transport System
Agent 
A
Agent 
B
(c) SE/FIT/HUT 2002
2.Agent Naming Service
„ Vai trò : cung cấp các phương thức để một Agent 
nhận về một định danh AgentName trên Master 
System
„ AgentName là một định danh duy nhất trong một hệ 
thống đa Agent được dùng để phân biệt các Agent 
với nhau
„ AgentName được dùng để đăng kí với hệ thống qua 
AgentDirectoryService và phục vụ cho việc giao tiếp 
giữa các Agent
„ Trong JAS, AgentName được sinh ra theo một công 
thức dựa vào địa chỉ của Agent, thời gian yêu cầu 
tạo AgentName và số lượng Agent tại thời điểm yêu 
cầu sau đó được mã hoá. Ví dụ AgentName do JAS 
tạo ra
[agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fee]
(c) SE/FIT/HUT 2002
3.Agent Directory Service
„ Vai trò : chứa các thông tin cần 
thiết về Agent để phục vụ việc tìm 
kiếm, thu thập thông tin, trao đổi 
message giữa các Agent
„ Mỗi Agent đăng kí vào Directory 
Service được lưu trữ thông tin trong 
một Agent Directory Entry gồm có ít 
nhất AgentName và AgentLocator
(c) SE/FIT/HUT 2002
Agent A
Agent Directory Service
agent-directory-entry “123”
agent-directory-entry “ABC”
agent-directory-entry “A”
register(), modify(), 
deregister(), search()
Các phương thức mà Service này cung cấp 
register(), modify(), deregister(), search()
(c) SE/FIT/HUT 2002
Một ví dụ về Agent Directory Entry
AgentDescription created ...
class ri.service.directory.BasicAgentDescription
Name: [agentname: 
11d1def534ea1be0:712c4e:f89fdf7166:-
7fee]
Locators:
[locator:
[properties:
[property:
[fqn: javax.agent.locator.port]
[number: 55555]
]
[property:
[fqn: javax.agent.locator.ip.rmi.id]
[string: 
11d1def534ea1be0:712c4e:f89fdf7166:-
7fed]
]
[property:
[fqn: javax.agent.locator.protocol]
[string: rmi]
]
[property:
[fqn: javax.agent.locator.host]
[string: 127.0.0.1]
]
]
[type: rmi]
[address: 
rmi://127.0.0.1:55555/11d1def5
34ea1be0:712c4e:f89fdf7166:-
7fed]
]
user.attribute3 more.stuff
user.attribute2 fee.fum
user.attribute1 foo.bar
javax.agent.agent-display-name
Agent A
AgentDescription registered with 
AgentDirectoryService.
5(c) SE/FIT/HUT 2002
4. Transport System
„ Vai trò : cung cấp các phương thức 
và đối tượng phục vụ việc gửi và 
nhận message
„ 2 thành phần cơ bản của Transport 
System : Message Structure, 
Message Transport Service
(c) SE/FIT/HUT 2002
4.1 Message Structure
‰ Là một cấu trúc gồm có ít 
nhất 3 thành phần là 
Sender, Receiver và nội 
dung message, ngoài ra 
còn có thể chứa thêm các 
thuộc tính khác do người 
dùng định nghĩa
‰ FIPA đưa ra 1 số thuộc 
tính chuẩn của message 
structure
Performative, Sender, 
Receiver, Reply-to, 
Content, Language, 
Encoding, Ontology, 
Protocol, Conversation-id, 
Reply-with, Inreply-
to,Reply-by
Message
Sender : Agent-Name
Receiver(s) : Agent-Name(s)
Nội dung message
(c) SE/FIT/HUT 2002
Khái niệm Transport-
message
„ Để message có thể gửi đi sử dụng các 
giao thức do Message Transport Service 
cung cấp, message phải được định dạng 
phù hợp với các giao thức này. Định 
dạng này gọi là transport-message
„ Transport-message gồm 2 thành phần
„ Payload : là kết quả mã hoá message từ 
dạng object sang dạng có thể truyền đi 
được. Thông tin chứa trong message và 
payload là tương đương nhau nhưng ở định 
dạng khác
„ Envelope : bao gói payload, chứa các thông 
tin chỉ ra cách thức mã hoá và giao thức 
truyền nhận transport-message
(c) SE/FIT/HUT 2002
„ Chú ý rằng các giá trị Sender và Receiver 
của Envelope là các transport-description 
chứa các thông tin về MTS còn các giá trị 
Sender và Receiver của Payload chứa các 
thông tin về các Agent như AgentName, 
chúng ta hãy xem xét ví dụ cụ thể 1 
transport message
Message
Sender: Agent Name
Receiver (s) : Agent 
name(s)
Nội dung message
Message
Sender : agent name
Receiver(s) : agent 
name(s)
Nội dung message
Transport-message
Envelope
Sender : transport-description
Receiver(s) : transport-description(s)
Các thuộc tính khác
Message
Sender : agent name
Receiver(s) : agent 
name(s)
Nội dung message
message-encoding
Addressing and add 
more attribute
payload
(c) SE/FIT/HUT 2002
Ví dụ Transport Message
Agent A waiting for incoming messages ...
Incoming transport message:
[transportmessage:
[envelope:
[receiver:
[locator:
[properties:
[property:
[fqn: javax.agent.locator.ip.rmi.id]
[string: 11d1def534ea1be0:712c4e:f89fdf7166:-7fed]
]
[property:
[fqn: javax.agent.locator.host]
[string: 127.0.0.1]
]
[property:
[fqn: javax.agent.locator.port]
[number: 55555]
]
[property:
[fqn: javax.agent.locator.protocol]
[string: rmi]
]
]
[type: rmi]
[address: rmi://127.0.0.1:55555/11d1def534ea1be0:712c4e:f89fdf7166:-7fed]
]
] (còn nữa)
(c) SE/FIT/HUT 2002
Ví dụ Transport Message (tiếp)
[sender:
[locator:
[properties:
[property:
[fqn: javax.agent.locator.host]
[string: 127.0.0.1]
]
[property:
[fqn: javax.agent.locator.ip.rmi.id]
[string: 11d1def534ea1be0:fabe9:f89fdf8a7b:-7ff6]
]
[property:
[fqn: javax.agent.locator.protocol]
[string: rmi]
]
[property:
[fqn: javax.agent.locator.port]
[number: 55555]
]
]
[type: rmi]
[address: rmi://127.0.0.1:55555/11d1def534ea1be0:fabe9:f89fdf8a7b:-7ff6]
]
]
] (hết envelope)
6(c) SE/FIT/HUT 2002
Ví dụ Transport Message (tiếp)
[payload:
[aclmessage:
[performative: org.fipa.acl.inform]
[sender:
[agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fe2]
]
[receiver:
[agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fee]
]
[content:
[string: Here I am!]
]
]
]
]
(c) SE/FIT/HUT 2002
4.2 Message Transport 
Service
„ Vai trò : Cung cấp các phương thức để chuyển đổi 
giữa message và transport-message, gửi và nhận 
các transport-message
„ Một transport system có thể có nhiều MTS khác 
nhau. Các Agent có thể sử dụng tuỳ ý các MTS mà 
nó được hỗ trợ
Agent A
Agent Master System
MTS A1
Agent Directory Entry A
Agent Directory Entry B
MTS A2
Agent B
MTS B1 MTS B2
(c) SE/FIT/HUT 2002
4.3 Cơ cấu truyền nhận 
transport-message
„ Một message transport service gồm 4 thành phần 
chính
„ Locator : chứa các thông tin về giao thức dùng để 
truyền tin và địa chỉ của Agent
„ Message Sender : cung cấp các phương thức chuyển 
message thành transport message và gửi đi
„ Message Receiver : cung cấp các phương thức nhận 
transport-message và chuyển thành message rồi xử lý
„ Message Listener : thông báo cho message receiver 
khi có một message được gửi cho Agent
Message 
Transport
Locator Message Sender Message Receiver
Message 
Listener
(c) SE/FIT/HUT 2002
„ Message Sender của Agent A gửi transport-message tới 
message queue của Master System, sau đó Master 
System phân loại và báo cho Message Listener của 
Agent B biết, Listener  ... erty:
[fqn: javax.agent.locator.ip.rmi.id]
[string: 11d1def534ea1be0:712c4e:f89fdf7166:-7fed]
]
[property:
[fqn: javax.agent.locator.protocol]
[string: rmi]
]
[property:
[fqn: javax.agent.locator.port]
[number: 55555]
]
]
[type: rmi]
[address: rmi://127.0.0.1:55555/11d1def534ea1be0:712c4e:f89fdf7166:-7fed]
]
]
(c) SE/FIT/HUT 2002
[sender:
[locator:
[properties:
[property:
[fqn: javax.agent.locator.port]
[number: 55555]
]
[property:
[fqn: javax.agent.locator.ip.rmi.id]
[string: 11d1def534ea1be0:fabe9:f89fdf8a7b:-7ff6]
]
[property:
[fqn: javax.agent.locator.protocol]
[string: rmi]
]
[property:
[fqn: javax.agent.locator.host]
[string: 127.0.0.1]
]
]
[type: rmi]
[address: rmi://127.0.0.1:55555/11d1def534ea1be0:fabe9:f89fdf8a7b:-7ff6]
]
]
]
(c) SE/FIT/HUT 2002
[payload:
[aclmessage:
[performative: org.fipa.acl.inform]
[sender:
[agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fe2]
]
[receiver:
[agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fee]
]
[content:
[string: Here I am!]
]
]
]
]
Message sent.
9(c) SE/FIT/HUT 2002
Use Case 3 : Agent A giao tiếp 
với Agent B
„ Agent A nhận message, xử lý và gửi message đáp trả Agent B
„ Quá trình tiếp tục đến khi 1 trong 2 Agent ngừng giao tiếp
„ Thuật toán cụ thể sử dụng để xây dựng UC 3
„ Khai báo một tập các message
protected static final String[] STATEMENT = { "Good morning !", 
"Good morning ! How are you today my friend ?", "Oh, i am fine, 
thank you and you", "So am I .. Let's work !" };
„ Sử dụng một thuộc tính có tên CONVERSATION_FLAG để xác định 
rằng khi nhận được message, Agent kia có phải trả lời hay không
„ Trong message thêm một thuộc tính conversion-id để xác định 
trạng thái hiện tại
„ Nội dung của message tương ứng với vị trí của conversion-id trong 
mảng STATEMENT
„ Ban đầu conversion-id được gán bằng 0, Agent B gửi message cho 
Agent A
„ Mỗi khi nhận được message, giá trị conversion-id được tăng lên 1
„ Lặp lại việc gửi nhận message đến khi conversion-id lớn hơn kích 
thước mảng STATEMENT
(c) SE/FIT/HUT 2002
Có FLAG ?
Kết thúc
Bắt đầu
No
Nhận message
Gửi message
Yes
ID > max ?
Yes
No
Gửi message
Tăng ID
(c) SE/FIT/HUT 2002
Kết quả Use Case 3 (đã lược 
bớt một số thông tin trùng lặp)
Sending message ... (B Æ A)
[transportmessage:
[envelope: ]
[payload:
[aclmessage:
[properties:
[property:
[fqn: org.fipa.acl.conversation-id]
[string: seuss]
]
]
[performative: org.fipa.acl.inform]
[sender:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fd0]
]
[receiver:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fee]
]
[content:
[string: Good morning !]
]
]
(c) SE/FIT/HUT 2002
Kết quả UC 3 (tiếp)
Incoming transport message: (A Æ B)
[transportmessage:
[envelope:]
[payload:
[aclmessage:
[properties:
[property:
[fqn: org.fipa.acl.conversation-id]
[string: seuss]
]
]
[performative: org.fipa.acl.inform]
[sender:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fee]
]
[receiver:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fd0]
]
[content:
[string: Good morning ! How are you today my friend ?]
]
(c) SE/FIT/HUT 2002
Kết quả UC 3 (tiếp)
Sending response message ... (B Æ A)
[transportmessage:
[envelope:]
[payload:
[aclmessage:
[properties:
[property:
[fqn: org.fipa.acl.conversation-id]
[string: seuss]
]
]
[performative: org.fipa.acl.inform]
[sender:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fd0]
]
[receiver:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fee]
]
[content:
[string: Oh, i am fine, thanks you and you]
]
]
(c) SE/FIT/HUT 2002
Kết quả UC 3 (tiếp)
Incoming transport message: (A Æ B)
[transportmessage:
[envelope:]
[payload:
[aclmessage:
[properties:
[property:
[fqn: org.fipa.acl.conversation-id]
[string: seuss]
]
]
[performative: org.fipa.acl.inform]
[sender:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fee]
]
[receiver:
[agentname: 11d1def534ea1be0:712c4e:f8b0eba2ec:-7fd0]
]
[content:
[string: So am I .. Let's work !]
]
Message sent. 
10
(c) SE/FIT/HUT 2002
JAS Installation Guide
„ Cài đặt thư viện JAS
„ Chạy các Use Case
„ Æ Xem tài liệu document đi kèm
(c) SE/FIT/HUT 2002
Một số câu hỏi và các 
vấn đề chưa giải quyết 
được
(c) SE/FIT/HUT 2002
Câu hỏi 1
„ Tại sao lại cần phải quản lý tập 
trung, tại sao cần có Service Root 
và định danh Agent ?
(c) SE/FIT/HUT 2002
Câu hỏi 2
„ Trong một mạng máy tính với các 
giao thức không hỗ trợ các đối 
tượng được truyền qua mạng. Vậy 
tham số Service Root là đối tượng 
để khởi tạo Agent được lấy ở đâu ?
(c) SE/FIT/HUT 2002
Câu hỏi 3
„ Một transport-message 
gồm có 2 thành phần là 
payload và envelope. 
Trong envelope đã xác 
định transport-description 
của cả sender và receiver. 
Như vậy MTS được sử dụng 
để gửi và nhận dữ liệu đã 
được xác định ngay từ đầu. 
Phải chăng điều đó là 
không linh hoạt ?
Transport-message
Envelope
Sender : transport-description
Receiver(s) : transport-
description(s)
Các thuộc tính khác
Message
Sender : agent name
Receiver(s) : agent 
name(s)
Nội dung message
(c) SE/FIT/HUT 2002
Câu hỏi 4
„ Một Agent Directory Service hỗ trợ các phương thức 
register, modify, deregister, search. Mỗi lời gọi đến 
phương thức này sẽ gửi các thông tin, yêu cầu đến 
Master System tức là phải thông qua Message 
Transport Service nào đó, tuy nhiên khi khởi tạo, 
agent có thể nhận về AgentName trước khi tham 
chiếu đến MTS
ServiceRoot acquired ...
[ri.service.DefaultServiceRoot@b819f]
AgentNamingService acquired ...
[ri.service.naming.rmi.RMIAgentNamingServiceProxy@6b017e]
AgentName acquired from AgentNamingService ...
[agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fee]
MessageTransportService acquired ...
[ri.service.transport.rmi.RMIMessageTransportService@6b13c7]
„ Tại sao lại thế ?
11
(c) SE/FIT/HUT 2002
Cảm ơn !
(c) SE/FIT/HUT 2002
1.Tại sao cần quản lý tập 
trung, Service Root và định 
danh Agent
„ Đây là một hệ đa Agent động, số lượng, kiểu 
Agent có thể thay đổi. Quản lý tập trung, 
Service Root sẽ giúp việc quản lý Agent dễ dàng 
hơn, tăng khả năng đáp ứng của hệ thống
„ Hãy tưởng tượng 1 hệ thống không có Service 
Root sẽ như thế này : việc tìm kiếm 1 Agent 
chẳng hạn sẽ phải thực hiện trên toàn bộ hệ 
thống và điều đó là không thể chấp nhận được 
Æ
Agent 
A
Agent 
C
Agent 
B
Agent 
D
Agent 
E Agent 
Master 
System
Agent 
A
Agent 
Master 
System
Agent 
C
Agent 
B
Agent 
Master 
System
Agent 
Master 
System
(c) SE/FIT/HUT 2002
Câu 1 (tiếp)
„ Do đó định danh của 1 Agent cần được quản lý 
tập trung
„ Trong sơ đồ mở rộng : khi một Agent đăng kí, 
nó cần được đăng kí ở mức hệ thống từ cao 
xuống thấp còn khi gỡ bỏ đăng kí thì theo chiều 
ngược lại từ thấp lên cao
Agent Master 
System
Agent A
Agent Master 
System
Agent C
Agent B
Agent Super 
Master 
System
Sơ đồ mở rộng
(c) SE/FIT/HUT 2002
2.Service Root được lấy ở 
đâu
„ Trước hết cần phải xem lại sơ đồ hệ đa Agent 
mở rộng
„ Trong câu hỏi này, 1 thành phần đã bị ẩn đi đó 
là PC, mỗi PC, hệ điều hành là một Sub-Master 
System.
„ Chú ý là trong trường hợp này không được khởi 
tạo như 1 agent bình thường
Agent Master 
System
Agent A
Agent Master 
System
Agent C
Agent B
Agent Super 
Master 
System
Sơ đồ mở rộng
(c) SE/FIT/HUT 2002
Open Agent Architecture
(c) SE/FIT/HUT 2002
Kiến trúc agent mở (OAA)
„ Tổng quan
„ Các khái niệm cơ bản
„ Các thành phần chính trong OAA
„ Lợi ích sử dụng OAA
„ So sánh OAA với công nghệ phân tán
12
(c) SE/FIT/HUT 2002
Các khái niệm cơ bản trong 
OAA
„Định nghĩa OAA :
- OAA (Kiến trúc Agent mở) là một framework trong 
đó một cộng đồng các agent phần mềm chạy trên các 
máy phân tán có thể làm việc với nhau theo các nhiệm 
vụ được con người hoặc không phải con người tham 
gia trong cộng đồng uỷ quyền.
- Sự đồng điều hành phân tán và truyền thông mức cao 
là hai ý tưởng trung tâm đối với nển tảng của OAA.
(c) SE/FIT/HUT 2002
Tổng quan
„ OAA :
- Là một Framework tích hợp việc truyền thông 
giữa các Software Agent trong môi trường phân 
tán, thông qua uỷ quyền, điều phối
- Mềm dẻo, thích nghi được với sự tương tác 
giữa các công cụ phân tán thông qua uỷ quyền 
các tác vụ, các yêu cầu dữ liệu và tự kích hoạt 
(trigger).
(c) SE/FIT/HUT 2002
Các đặc tính của OAA
Tính mở:
Các agent có thể được tạo ra từ nhiều ngôn ngữ và giao diện trong các hệ
thống đã có.
Tính mở rộng: 
Các agent có thể được thêm hoặc thay thế một cách linh hoạt
Tính phân tán: 
Agent được truyền qua rất nhiều máy tính
Tính song song:
Có thể thực hiện song song các tác vụ con
Kiến trúc mức cao ( high level):
Ẩn các phần mềm và phần cứng phụ thuộc
Tính đa hình:
Có thể kết hợp cùng nhau các cách thức: viết, nói, điệu bộ, vận động.
(c) SE/FIT/HUT 2002
Các khái niệm cơ bản
„Agent trong OAA:
- Trong OAA, một agent được định nghĩa như một 
phần mềm tuân theo các chuẩn chức năng và truyền 
thông đưa ra bởi OAA
- Các agent uỷ quyền và nhận nhiệm vụ thông qua một 
agent điều phối là Facilitator
- Các yêu cầu được diễn tả trong một ngôn ngữ chung 
cho mọi agent - ICL ( Interagent Communication 
Language )
(c) SE/FIT/HUT 2002
Tiến trình điều khiển trong 
OAA
„ requester có thể chọn để chỉ ra một cách từng phần làm thế 
nào để một mục đích được thực hiện bởi một cộng đồng 
trong một ngôn ngữ giàu tính trưc quan. 
„ Service providers, trong suốt quá trình đăng ký với một 
agent Facilitator, có thể chỉ ra mã điều kiện kiểm tra và ước 
lượng hiệu năng nó sẽ cho biết khi nào và dưới hoàn cảnh 
nào thì agent tiếp nhận công việc.
„ Facilitator agent sử dụng các chiến lược chọn đường độc lập 
miền đối với việc chia công việc cho cộng đồng các agent 
dựa trên một yêu cầu đến và các mô tả khả năng cung cấp 
dịch vụ.
„ Tập hợp các meta-agent (các chuyên gia miền) có thể cộng 
tác để cung cấp Facilitator với các tri thức xác định miền mà 
hướng dẫn làm thế nào các nhiệm vụ được thực hiện bời 
toàn cộng đồng. 
(c) SE/FIT/HUT 2002
Các thành phần trong OAA
13
(c) SE/FIT/HUT 2002
Các thành phần chính
„ Facilitator agent
„ Meta agent
„ Application agent
„ User Interface agent
„ NL to ICL agent
„ Trigger
„ Giao thức
„ Các agent hỗ trợ khác
(c) SE/FIT/HUT 2002
Facilitator agent
- Facilitator là một agent đặc biệt cung cấp khả 
năng phối hợp các agent 
- Một hệ thống có thể có một hay nhiều Facilitator 
agent
- Các Facilitator agent có thể phối hợp quản lí, 
trao đổI với nhau
(c) SE/FIT/HUT 2002
Facilitator agent
3 chức năng chính của Facilitator
1. Duy trì một đăng ký của dịch vụ agent và các khai 
báo dữ liệu lên blackboard.
2. Lập kế hoạch một chiến lược thực hiện cho một 
câu truy vấn.
3. Thực hiện một kế hoạch: phân chia các nhiệm vụ
thành các nhiệm vụ nhỏ hơn, liên kết các dịch vụ
nhỏ với các nhà cung cấp dịch vụ, chọn đường và
thu thập thông tin trong số các thành phần tham dự
phân tán
(c) SE/FIT/HUT 2002
Facilitator agent
Vấn đề :
Trong các mô hình đơn giản, tại đó chỉ có một 
Facilitator phục vụ một số các agent client, thì
Facilitator có thể bị tắc nghẽn trong truyền 
thông và một điểm đơn bị lỗi đối với toàn hệ
thống.
(c) SE/FIT/HUT 2002
Application agent
- Cung cấp một tập các dịch vụ của một nhu cầu cụ
thể. Các ứng dụng này có thể là các công nghệ độc lập 
miền
Ví dụ: nhận dạng tiếng nói, xử lý ngôn ngữ tự nhiên, 
email, data retrieval, data mining vv
Hoặc user-specific hay domain-specific 
Ví dụ: agent lập kế hoạch du lịch. 
Các ứng dụng agent có thể dựa trên các thư viện trong 
đó agent có thể được tạo thông qua các lời gọi hàm 
API.
(c) SE/FIT/HUT 2002
Meta agent
- Giúp đỡ Facilitator trong việc phối hợp hoạt 
động của các agent khác. 
- Trong khi facilitator dùng phối hợp độc lập 
miền, meta-agent sử dụng miền và các tri thức 
xác định ứng dụng hoặc các rules, thuật toán 
học, lập kế hoạch.
14
(c) SE/FIT/HUT 2002
User Interface agent
- Có thể bao gồm một tập các agent 
- Mỗi agent giám sát một kiểu đầu vào khác 
nhau và cộng tác để đưa ra một cách diễn giải 
tốt nhất cho các đầu vào hiện tại.
(c) SE/FIT/HUT 2002
Client agent
- Các Agent trong hệ thống OAA là một Facilitator 
Agent hoặc là một Client Agent
- Khi được gọi đến, một Client Agent tạo một kết nối 
tới một Facilitator, được biết như là Parent 
Facilitator của nó, và báo cho Facilitator các dịch vụ
nó cung cấp
- Các loại dịch vụ: đáp ứng các mục đích theo thủ tục, 
duy trì và truy vấn các kho lưu trữ dữ liệu, thiết lập 
và trả lời tới bộ kích hoạt của các loại chung
(c) SE/FIT/HUT 2002
Ngôn ngữ truyền thông ICL
-Tất cả các truyền thông liên agent đều sử dụng 
một ngôn ngữ xác định trong OAA, đó là ICL 
(Interagent Communication Language)
-Đặc điểm: phân tách câu hỏi What từ câu hỏi 
How . Các tham số điều khiển chỉ ra làm thế nào 
các nhiệm vụ có thể thực hiện, ai nên thực hiện 
nhiệm vụ, và đều phân tách từ các mô tả bản 
thân nhiệm vụ.
(c) SE/FIT/HUT 2002
Các thành phần trong ICL
- Khai báo các khả năng ( solvable )
- Các sự kiện
- Các yêu cầu dịch vụ
-Các phần tử dữ liệu
-Trigger
-Khai báo tham số
-Tên và địa chỉ agent
(c) SE/FIT/HUT 2002
Trigger
-OAA cung cấp một cơ chế giúp Agent có thể 
định rõ một hành động khi tập hợp các điều kiện 
của chúng được thoả mãn. Mỗi Agent có thể cài 
đặt các triggers một cách cục bộ (trong chính 
Agent đó) hoặc từ xa (trong Facilitator của nó) 
hoặc tại một Agent ngang hàng.
-Có 4 loại trigger : task, com, data, và time
(c) SE/FIT/HUT 2002
Trigger
„Các loại trigger:
Task: theo dõi các điều kiện gắn với agent, ví dụ 
như “Khi email đến, thông báo cho tôi.”.
Com(munication): tìm kiếm các sự kiện truyền 
thông agent mức thấp, ví dụ như “Khi nào một sự kiện 
agent ngắt kết nối, hãy ghi lại thời gian.”.
Data: nắm bắt sự thay đổi của thông tin, ví dụ
“Khi tình trạng điện thoại rảnh, hãy báo cho tôi.”.
Time: các sự kiện hướng thời gian, ví dụ như 
“Ngày thứ 5, lúc 14h gửi cho tôi một phiếu mời họp 
mặt.”
15
(c) SE/FIT/HUT 2002
Các agent hỗ trợ trong OAA
-Agent phân tích ngôn ngữ tự nhiên.
-Agent nhận dạng tiếng nói.
-Agent text-to-speech.
-Agent cơ sở dữ liệu.
-Agent điện thoại (cho phép mobile truy nhập 
vào nhận dạng tiếng nói từ các vị trí từ xa).
- .vv ( monitor, debug )
(c) SE/FIT/HUT 2002
Lợi ích sử dụng OAA
-Cung cấp các kỹ thuật đa năng trong liên kết 
(interoperation) và phối hợp hoạt động. 
-Giao diện sử dụng gần gũi với con người
-Các yêu cầu công nghệ phần mềm ( tái sử dụng, ứng 
dụng linh hoạt ..vvv)
-Kết hợp các hệ thống thương mại với các công nghệ trí
tuệ nhân tạo, ví dụ như lập kế hoạch, nhận dạng tiếng 
nói, ngôn ngữ tự nhiên,vv...
(c) SE/FIT/HUT 2002
Hướng phát triển
-Nhiều công nghệ được tích hợp vào OAA. Tăng số 
lượng các hệ thống được xây dựng để trình diễn khả 
năng của các công nghệ này. 
-Tuy nhiên, sự phát triển trong công nghệ sẽ tiếp tục 
trong nhiều năm nữa và hy vọng OAA sẽ tiếp tục là
một phần của sự phát triển.

File đính kèm:

  • pdfki_thuat_lap_trinh_bai_9_thu_vien_lap_trinh_agent.pdf