Kĩ thuật lập trình - Bài 9: Thư viện lập trình 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

pdf15 trang | Chia sẻ: huyhoang44 | Lượt xem: 690 | Lượt tải: 0download
Bạn đang xem 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, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 này thông báo cho Message Receiver của Agent B để nhận message và xử lý Cơ cấu truyền nhận transport- message (tiếp) Agent A MS MR Agent Master System Listener A Listener B Message queue TM Agent B MS MR TM (c) SE/FIT/HUT 2002 Các Use Case điển hình „ Use Case 0 : khởi tạo hệ thống „ Use Case 1 : khởi tạo Agent A „ Use Case 2 : khởi tạo Agent B, Agent B gửi message đến Agent A „ Use Case 3 : Agent A và Agent B giao tiếp với nhau * Phần này sẽ không đi sâu vào phần code của thư viện JAS (c) SE/FIT/HUT 2002 Use Case 0 : Khởi tạo hệ thống „ Tạo ra một instance của lớp Service Root „ Các lớp và giao diện liên quan: Booter, DefaultBooter, AgentServiceRoot „ Khởi tạo AgentNamingService, AgentDirectoryService, MessageTransportService 7(c) SE/FIT/HUT 2002 Kết quả Use Case 0 ServiceRoot acquired ... [ri.service.DefaultServiceRoot@b819f] AgentNamingService acquired ... [ri.service.naming.rmi.RMIAgentNamingServiceProxy@6b017e] MessageTransportService acquired ... [ri.service.transport.rmi.RMIMessageTransportService@6b13c7] AgentDirectoryService acquired ... [ri.service.directory.rmi.RMIAgentDirectoryServiceProxy@2c2f9c] (c) SE/FIT/HUT 2002 Use Case 1 : Agent A khởi tạo, đăng kí và chờ nhận message „ Truyền tham số Service Root vào hàm khởi tạo Agent „ Tham chiếu đến AgentNamingService, thiết lập AgentName AgentNamingService.getAgentName() „ Tham chiếu đến MessageTransportService TransportSystem.getMessageTransportService() „ thiết lập LocalLocator MessageTransportService.newLocalLocator() „ thiết lập MessageReceiver MTS.newMessageReceiver() „ thiết lập MessageListener MessageReceiver.addMessageListener() và bind vào 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 JAS Use Case I : Agent 'A' starts, registers and waits for messages =============================================== 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] Kết quả Use Case 1 (c) SE/FIT/HUT 2002 Agent Locator bound to MessageTransportService ... [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/11d1def534ea1be0:712c4e:f89fdf7166:-7fed] ] (c) SE/FIT/HUT 2002 AgentDirectoryService acquired ... [ri.service.directory.rmi.RMIAgentDirectoryServiceProxy@2c2f9c] 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] ] (c) SE/FIT/HUT 2002 [property: [fqn: javax.agent.locator.host] [string: 127.0.0.1] ] ] [type: rmi] [address: rmi://127.0.0.1:55555/11d1def534ea1be0: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. Agent A waiting for incoming messages ... 8(c) SE/FIT/HUT 2002 Use Case 2 : Agent B khởi tạo và gửi message cho Agent A „ Khởi tạo agent B như Use Case 1 „ Agent B tìm kiếm Agent A „ Xây dựng AgentDescription phù hợp với các thông tin Agent B biết về A ví dụ Agent B tìm kiếm Agent A theo tiêu chuẩn agent-display-name = Agent A „ 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 A „ Thiết lập các lớp AcrElementUtility, AcrElementBuilder, AcrElementHelper, AcrAgentName, AcrAclMessage „ Thiết lập các thuộc tính : SenderName, ReceiverName, SenderLocator, ReceiverLocator „ Tạo payload và envelope „ Gửi transport-message (c) SE/FIT/HUT 2002 Kết quả Use Case 2 JAS Use Case II : Agent 'B' starts and sends message to Agent 'A' ============================================ == AgentName acquired from AgentNamingService ... [agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fe2] javax.agent.agent-display-name Agent B AgentDescription registered with AgentDirectoryService. Agent B ready! Created search query for Agent 'A' ... class ri.service.directory.BasicAgentDescription javax.agent.agent-display-name Agent A Submitted search query ... (c) SE/FIT/HUT 2002 First matching result : class ri.service.directory.BasicAgentDescription Name: [agentname: 11d1def534ea1be0:712c4e:f89fdf7166:-7fee] Locators: [locator: [properties: [property: [fqn: javax.agent.locator.host] [string: 127.0.0.1] ] [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.port] [number: 55555] ] ] [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 Sending message ... [transportmessage: [envelope: [receiver: [locator: [properties: [property: [fqn: javax.agent.locator.host] [string: 127.0.0.1] ] [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.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.

Các file đính kèm theo tài liệu này:

  • pdfl09_agent_sys_dev_8495_6463.pdf