Bài giảng Tác tử - Bài 9: Thư viện lập trình

pdf 15 trang huongle 2540
Bạn đang xem tài liệu "Bài giảng Tác tử - Bài 9: Thư viện lập trình", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_tac_tu_bai_9_thu_vien_lap_trinh.pdf

Nội dung text: Bài giảng Tác tử - Bài 9: Thư viện lập trình

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