Chương 1. Tương tác trong hệ đa agent tiêu nào agent nên theo đuổi, tại thời điểm nào và bởi cái gì (lời gọi phương thức, hàm chức năng đều phải tuân theo một cú pháp định trước). Tương tác giữa các đối tượng chỉ đơn giản là việc gọi thực hiện phương thức công cộng của đối tượng cần giao tiếp. Giao tiếp của đối tượng với đối tượng là do người phát triển tự cài đặt dựa trên các công cụ của ngôn ngữ lập trình, hoàn toàn không có ngôn ngữ chung.
Tương tác giữa các agent có tính lan truyền: Agent có khả năng phản ứng lại tác động của môi trường, nhờ đó agent có khả năng tự phát động tương tác. Mặt khác, do chỉ được cung cấp khả năng có hạn, agent phải phát động tương tác tới agent khác để yêu cầu giúp đỡ, đến lượt agent được yêu cầu lại phát động tương tác đến các agent khác… Vậy nên, có thể nói tương tác đa agent có tính lan truyền. Ngược lại, các đối tượng chỉ thực hiện một hành vi nào đó khi nhận được lời gọi hành động từ các đối tượng khác. Vì vậy, tương tác trong hệ hướng đối tượng chỉ gói gọn trong hai đối tượng và không thể lan theo dây chuyền.
Tương tác trong hệ đa Agent rất khó đoán trước: Hệ đa agent là hệ mở, thay đổi liên tục. Vì vậy, quan hệ giữa các agent rất khó xác định trước trong pha thiết kế. Mặt khác, do đặc tính thông minh của âgent, việc xác định agent sẽ phản ứng ra sao, như thế nào trước tác động của môi trường là không khả thi. Ngược lại, trong hệ hướng đối tượng, chúng ta phải xác định được đối tượng nào tương tác với đối tượng nào và ra sao để cài đặt cách thức gọi phương thức thực hiện tương tác đó.
Do vậy, có thể nói tương tác giữa các đối tượng là hoàn toàn tĩnh. Tóm lại, tương tác giữa các agent được xem là ở mức trừu tượng cao hơn tương tác giữa các đối tượng theo nghĩa là đạt ở mức tri thức với khả năng tương tác linh hoạt để có thể coi là những đối tượng thông minh. Tương tác trong hệ đa agent 1. Mô hình tương tác hướng agent Có nhiều phương pháp khác nhau cho mô hình tương tác trong hệ đa agent.
Một số phương pháp như Message passing [37] xem tương tác đơn giản chỉ là sự trao đổi thông điệp giữa hai agent, phương pháp Linda [27] dựa chủ yếu trên mô hình cộng tác không cặp đôi và không gian dữ liệu chia sẻ. Nhìn chung, các phương pháp này mới chỉ dừng lại ở mức biến đổi các phương pháp tương tác trước đây bằng cách thêm vào một số khái niệm mới như “meeting point”, “event channel” hoặc “tuple space” cho phù hợp với agent mà chưa thực sự tính đến những đặc trưng của agent như tính xã hội, khả năng phản ứng và tự chủ. Một số nhà nghiên cứu khác thì tận dụng sự tương đồng giữa agent và đối tượng để đề xuất ra các phương pháp mô hình tương tác dựa trên UML như Tropos [33] và AUML [5]. Một số khác thì mô hình tương tác agent dưới dạng các dịch vụ (service) và nhiệm vụ (task) như Agentis hay mô hình hóa dựa trên mục tiêu tương tác (goal) như Hermes, hoặc mô hình dựa trên role như BRAIN…Sau đây, chúng ta sẽ tìm hiểu một số mô hình tương tác hướng agent tiêu biểu hiện nay.
Đặc tả tương tác bằng UML Trước đây, kỹ thuật hướng Agent vẫn chưa áp dụng được vào việc phát triển phần mềm công nghiệp vì kỹ thuật này vẫn chưa có được các công cụ hỗ trợ đầy đủ các pha trong vòng đời phát triển phần mềm. Vì vậy, người ta đã nghĩ đến sự kết hợp kỹ nghệ hướng Agent với các chuẩn phổ biến như phát triển phần mềm hướng đối tượng để tạo ra một công cụ hiệu quả hơn. Hai tổ chức FIPA và OMG đã phối hợp để đưa ra một mô hình kỹ nghệ hướng agent mới, gọi là AGENT UML [5]. Đây là sự mở rộng của ngôn ngữ UML, một chuẩn không chính thức cho phân tích và thiết kế hướng đối tượng.
Phần cơ bản của AGENT UML là giao thức tương tác đa agent AIP. Tương tác trong hệ đa agent AIP là một lớp các mẫu thiết kế phần mềm trong đó người ta mô tả các vấn đề thường xảy ra trong hệ đa agent và sau đó mô tả giải pháp để giải quyết những vấn đề đó. Định nghĩa một giao thức tương tác agent (AIP) bao gồm: Mô hình tương tác. Một trình tự các thông điệp gửi qua lại giữa các agent với các vai trò khác nhau.
Một ngữ nghĩa thống nhất với các hành động giao tiếp (CAs) trong một mô hình giao tiếp. Thông điệp phải thỏa mãn các hành động giao tiếp chuẩn, CA định nghĩa kiểu và nội dung thông điệp (ví dụ ngôn ngữ giao tiếp agent ACL FIPA hoặc KQML). Các giao thức ràng buộc các thông số của việc trao đổi thông điệp (ví dụ như thứ tự và kiểu trao đổi) tùy theo mối quan hệ giữa các agent hoặc ý định của việc giao tiếp. Kiểu lược đồ mới được giới thiệu trong AGENT UML là lược đồ giao thức (Protocol Diagram).
Do giao thức tương tác định nghĩa chính xác hành vi của một nhóm các Agent cộng tác nên chúng ta sẽ kết hợp các lược đồ chuỗi với ký hiệu lược đồ trạng thái để tạo nên đặc tả của giao thức tương tác. Mô hình tương tác dựa trên mục tiêu (goal) Tương tác được đặc tả dưới dạng các giao thức tương tác, như trong Petri nets [54], máy trạng thái hữu hạn [49] hay AGENT UML, đều không phù hợp với đặc tính tự chủ và chủ động của agent đồng thời không cho phép phục hồi tương tác sau khi bị lỗi. Một số nhà nghiên cứu của trường đại học RMIT, Úc đã đề xuất khái niệm tương tác hướng mục tiêu (goal) phù hợp hơn với bản chất của kỹ thuật agent, gọi là phương pháp Hermes [18]. Tương tác hướng mục tiêu được định nghĩa dưới dạng các mục tiêu tương tác (Interaction Goal - IG) và các ràng buộc thời gian.
Các agent tham gia tương tác sẽ quyết định cách thức để đạt được IG và bị giới hạn bởi các ràng buộc thời gian thiết lập trên các IG đó. Tương tác giữa các agent xảy ra vì z 16 Chương 1. Tương tác trong hệ đa agent các agent đều có mục tiêu phải đạt được và tương tác là một cách để đạt được mục tiêu của chúng. Trong các thiết kế giao thức truyền thống, thiết kế tương tác chỉ là xác định một số chuỗi thông điệp hợp lệ dưới dạng các thông điệp và các dạng kết hợp như vòng lặp, phân nhánh, chuỗi…Phương pháp thiết kế Hermes sẽ thực hiện khác hẳn.
Người thiết kế tương tác sẽ không phải định nghĩa các chuỗi thông điệp mà thay vào đó thông điệp sẽ được mô tả dưới dạng các mục tiêu tương tác, các hành động sẵn có và các ràng buộc. Sau đó, agent sẽ quyết định chuỗi thông điệp (dựa trên ràng buộc tương tác) được sử dụng cho tương tác đó. Điều đó có nghĩa là các chuỗi thông điệp sẽ được sinh ra từ tương tác chứ không phải tương tác được sinh ra từ chuỗi thông điệp. Chính điểm này sẽ tạo ra tính linh động và bền vững của tương tác.
Quá trình thiết kế Hermes (Hình 1.3) có thể được coi là mô hình thác nước mini gia tăng trong đó mỗi bước được thừa hưởng kết quả từ bước trước. Quá trình này được áp dụng lặp đi lặp lại, mỗi lần phát triển thiết kế lại nảy sinh những thay đổi cho các phần đã phát triển trước. Hai bước quan trọng nhất trong thiết kế hướng mục tiêu là xác định role, IG và tổ chức cây phân cấp IG. Xác định các role và mục tiêu tương tác: Các role được định nghĩa dưới dạng các đối tượng tham gia tương tác.
Các mục tiêu tương tác có thể là các mục tiêu ở mức cao cần đạt được để thực hiện tương tác được coi là thành công. Khi xác định mục tiêu tương tác, tốt nhất là phải nghĩ rộng và nắm bắt được các mục tiêu mức cao. Cần chú ý rằng mục tiêu tương tác ở đây là mục tiêu của tương tác chứ không phải mục tiêu của một Agent cụ thể tham gia tương tác. Tương tác trong hệ đa agent 1.
Xác định mục tiêu tương tác và role 2. Cấu trúc phân cấp mục tiêu tương tác 3. Xác định hành động 4. Chuỗi hành động 5.
Xác định Kết quả thiết kế cuối thông điệp Kết quả trung gian 6. Định nghĩa Phản hồi thông điệp Kiểm tra lẫn nhau Hình 1. Lược đồ tổng quan của phương pháp Hermes. Xây dựng cây phân cấp mục tiêu tương tác IG: Nếu có thể, các mục tiêu sẽ được chia thành các mục tiêu nhỏ hơn (Sub-IGs) và được tổ chức theo cấu trúc phân cấp như trong Hình 1.4…Cấu trúc cây này có một IG duy nhất là đỉnh, thể hiện mục tiêu tương tác tổng quát của hệ thống.
Ví dụ, trong giao thức thương mại điện tử, mục tiêu tổng quát của tương tác giao dịch thương mại, Trade. Trade IG có thể được chia nhỏ hơn thành hai IG cụ thể hơn là Agree và Exchange. Hai IG này có thể được chia nhỏ nữa… Trong hình 1.4, hình tròn biểu diễn mục tiêu tương tác và đường thẳng liền kí hiệu sự phân rã (tức là mối quan hệ mục tiêu con. Một khi các mục tiêu tương tác được phân rã thành các mục tiêu nhỏ hơn và các ràng buộc thời gian (đường mũi tên) sẽ được thêm vào.
Khi các mục tiêu tương tác được z 18 Chương 1. Tương tác trong hệ đa agent xác định thành cấu trúc cây mục tiêu thì các role liên quan trong tương tác sẽ được gán cho các mục tiêu. Trong ví dụ này, ta có thể thấy ngay là có hai role: Customer (C) và Merchant (M). Chúng ta cũng cần phải xác định agent khởi xướng (initiator) cho mỗi mục tiêu tương tác.
Agent khởi xướng là role khởi tạo và có trách nhiệm về một mục tiêu tương tác nào đó. Cây phân cấp mục tiêu tương tác cho ta thấy một cái nhìn tổng quan những mục tiêu cần đạt được để hoàn thành tương tác. Trade I: ↑ R: C,M Agree Exchange I: ↑ I: ↑ R: C,M R: C,M Determine Negotiate Negotiate Transfer Payment Send Availabilit Detail Price Goods I: C Recieve y I: ↑ I: ↑ I: M R: C,M I: M I: ↑ R: C,M R: C,M R: C,M R: C,M R: C,M Hình 1. Lược đồ phân cấp IG.