Chương 1: Tổng quan về Agent 1. Giới thiệu Tin học ngày càng phát triển dẫn đến việc hình thành nhu cầu tạo ra những tiểu chương trình nhỏ gọn, thông minh, có khả năng hoạt động một mình và kết hợp với những tiểu chương trình khác Năm 1994, khái niệm software agent được đưa ra bởi Mark Sidell và Chuck Knuff và đến năm 1995 thì phiên bản đầu tiên của agent xuất hiện. Năm 1975 kĩ thuật lập trình phổ biến là lập trình có cấu trúc, đến năm 1982, kĩ thuật lập trình phổ biến là phương pháp lập trình hướng đối tượng và đến khi Agent ra đời đã tạo ra một phương pháp lập trình mới. Agent là sự kết hợp của nhiều kĩ thuật tin học hiện đại Hình 1.1: Agent - Phương pháp lập trình mới Có nhiều định nghĩa cho software agent, ta có thể tham khảo một số định nghĩa sau: Một agent là một thành phần phần mềm và/hoặc phần cứng mà có khả năng hoat động chính xác để hoàn thành nhiệm vụ thay mặt chủ nhân của agent.
Trên mạng Internet, một agent (có khi được gọi là một intelligent agent ) là một chương trình thu thập thông tin hoặc thực thi một số dịch vụ khác mà không cần người điều khiển và hoạt động theo thời gian đã được lên lịch sẵn. Một agent đôi khi được gọi là một bot ( viết tắt của robot ) [8]. Một ví dụ về agent là chương trình Infogate [8]. Chương trình này có chức năng TIEU LUAN MOI download : skknchat@gmail.com 12 thu thập các tin tức mới về lĩnh vực người dùng quan tâm và tự động gửi thông báo đến người dùng khi có tin mới.
Tính năng của Agent 1. Tính tự trị (autonomous) Agent có khả năng tự kiểm soát những hoạt động của chính nó và làm việc, thi hành các tác vụ độc lập với người dùng cũng như các tác nhân khác. Nói một cách đơn giản, những agent là những chương trình có thể tự hoạt động mà không cần có người dùng thao tác. Hai đặc tính hướng đích (goal-oriented) và tính chủ động (pro- activeness) thường được dùng để đánh giá mức độ tự trị của agent.
Khả năng tự trị của agent chủ yếu được quyết định bởi tri thức trang bị cho agent. Tính thích nghi và tự học hỏi (adaptive/learning) Agent biết cách học và tự thay đổi các hành vi của nó theo các kinh nghiệm thu được. Bền vững trong quá trình hoạt động (persistent) Tự tồn tại và thích nghi trong môi trường hoạt động, chỉ bị hủy khi đã hoàn thành nhiệm vụ 1. Hoạt động hướng đích (goal driven) Mỗi agent được tạo ra đều có một mục đích và nó hành động theo mục đích này cho đến khi mục đích được thỏa mãn.
Giao tiếp và cộng tác ( communicative/collaborative) Agent có khả năng liên lạc, giao tiếp và phối hợp hoạt động với các agent của cùng môi trường khác hay các loại đối tượng khác trong các loại môi trường khác. Linh hoạt (flexible) Agent có thể hoạt động trong nhiều môi trường, hệ điều hành khác nhau. Tính di động (mobility) Là khả năng di chuyển từ môi trường thi hành này sang môi trường khác của một agent. Khả năng di động của một agent được phân thành hai loại.
Di động mạnh TIEU LUAN MOI download : skknchat@gmail.com 13 (strong mobility) là khả năng mà hệ thống có thể di chuyển cả mã chương trình và trạng thái thi hành của agent đến một môi trường khác. Di động yếu (weak mobility) là khả năng của hệ thống chỉ có thể di chuyển mã chương trình giữa các môi trường thi hành với nhau, mã nguồn có thể mang kèm theo một số dữ liệu khởi tạo nhưng trạng thái thi hành thì không thể di chuyển. Các agent thường có kích thước nhỏ, bản thân agent không phải là một ứng dụng hoàn chỉnh, khi hoạt động trên một máy, agent cần phải kết hợp với một chương trình chạy nền sẵn trên máy mà ta gọi là AgentHost mới có thể hoạt động được. Ngoài ra có một số agent sẽ kết hợp với một số chương trình khác để hoạt động.
Phân loại agent Các agent thường được phân loại theo tính năng và mục đích. Phân loại theo tính năng a. Tác tử tĩnh (Stationary agent) Đặc tính: Chỉ làm việc trên một hệ thống, nơi mà agent bắt đầu vòng đời. Nếu stationary agent cần thông tin ở một hệ thống khác hoặc muốn tương tác với agent nằm ở hệ thống khác thì chúng phải sử dụng một trong các cơ chế truyền thông khác như RPC, RMI, DCOM… b.
Tác tử di động (Mobile Agent) Không lệ thuộc vào hệ thống nơi chúng bắt đầu làm việc. Có khả năng di chuyển từ nơi này sang nơi khác trong hệ thống mạng máy tính tại những thời điểm và vị trí do agent lựa chọn. Khi mobile agent di chuyển, nó có thể mang theo mình trạng thái và mã chương trình. TIEU LUAN MOI download : skknchat@gmail.
Phân loại theo mục đích Hình 1.2: Phân loại Agent a. Tác tử cộng tác (Collaborative agent) Collaborative agent là một chương trình giúp người dùng giải quyết vấn đề, đặc biệt trong những trường hợp phức tạp hoặc không quen thuộc, bằng cách sửa lỗi, đề nghị nên làm gì tiếp theo và chú ý đến những vấn đề ở cấp thấp. Một collaborative agent có thể được thêm vào một giao diện người dùng có sẵn, ví dụ như các chương trình giả lập hoặc tích hợp vào thiết kế của một dụng cụ phần cứng mới, ví dụ như đồ gia dụng [8]. Tác tử giao diện (Interface agent) Interface agent là một chương trình có thể ảnh hưởng đến giao diện thao tác trực tiếp, nhưng không có sự hướng dẫn trực tiếp từ người dùng.
Interface agent đọc các dữ liệu người dùng nhập vào giao diện và nó có thể tạo ra sự thay đổi tới đối tượng người dùng thấy trên màn hình, mặc dù có thể là sự thay đổi đó không phải diễn ra ngay ứng với hành động của người dùng. Interface agent có thể quan sát nhiều tham số nhập vào của người dùng trong một khoảng thời gian nào đó TIEU LUAN MOI download : skknchat@gmail.com 15 trước khi quyết định thực hiện một hành động [8]. Tác tử thông minh (Smart/Intelligent agent) Có đầy đủ cả 3 mục đích: giao tác, tự động và dễ thích nghi và đây chính là tên gọi khác của software agent [8]. Kết luận Trong chương này chúng ta đã giới thiệu về software agent, đó là một phương pháp lập trình mới, ta cũng đưa ra một vài định nghĩa về agent.
Ta đã giới thiệu tính năng của agent như: tính tự trị, tính thích nghi và học hỏi, hoạt động hướng đích, giao tiếp và cộng tác, linh hoạt, di động,. Ta cũng phân loại agent theo mục đích và tính năng. TIEU LUAN MOI download : skknchat@gmail.com 16 Chương 2. Mobile Agent và nguyên lý hoạt động Những hệ thống phân tán truyền thống được xây dựng trên những chương trình tĩnh, chuyển dữ liệu đi về trên mạng.
Còn mobile agent (gọi tắt là MA) thì ngược lại. Khái niệm Mobile Agent Định nghĩa: Mobile agent là những thành phần phần mềm, bao gồm mã chương trình, dữ liệu và trạng thái hoạt động và có thể tự mình di chuyển từ nơi này sang nơi khác. Nội dung agent mang theo trong quá trình di trú bao gồm các thành phần của agent, tên cơ sở tri thức, bảng lưu nội dung các câu hỏi và câu trả lời theo ngôn ngữ COKB-ONT [2]. Mobile agent chính là một dạng của mobile code.
(Mobile code là những chương trình chuyển mã đến client và thực thi ở đó. Ví dụ cho mobile code: chương trình applet có thể gây nguy hiểm cho máy tính do trong applet có thể chứa những đoạn code không đáng tin cậy, gây hại). Mobile agent ngoài những tính năng cơ bản của mobile code còn có thể : mang theo mình dữ liệu và trạng thái thực thi, di trú trong mạng dưới sự kiểm soát của chính nó. Vì vậy, có thể nói mobile agent an toàn hơn mobile code nhiều.
Tính chất mobile agent: Có khả năng di trú từ nơi này sang nơi khác Liên lạc được với nhau, nhân bản, nhập lại, tổng hợp tính toán Một số agent có khả năng cung cấp dịch vụ hoặc interface cho các ứng dụng kế thừa Có kích thước nhỏ Có khả năng xác định và dùng những tài nguyên trên các máy tính đang chứa nó. Nguyên lý hoạt động 2. So sánh với các kĩ thuật khác Để hiểu rõ về nguyên lý hoạt động trong môi trường mạng của Mobile Agent, ta sẽ so sánh nó với nguyên lý hoạt động của các kĩ thuật khác: 2. Kĩ thuật mã kéo (pull code) Áp dụng trong mô hình client-server, bắt đầu khi client gửi yêu cầu đến server, TIEU LUAN MOI download : skknchat@gmail.com 17 server sẽ gửi code về client và code thực thi, cho ra kết quả ở client.
Thao tác gồm 3 bước : Bước 1 : máy client gửi yêu cầu đến server Bước 2 : server gửi code cho client Bước 3 : code được thực thi ở client Hình 2.1: Kỹ thuật mã kéo (pull code) Ví dụ : Các Java applet được thực thi theo phương pháp này Chú ý : Trong mô hình này, một bản sao của code sẽ được server gửi tới client và thực thi ở client. Server vẫn lưu trữ code. TIEU LUAN MOI download : skknchat@gmail. Kĩ thuật đẩy mã (push code) Khi có yêu cầu từ người dùng, một máy (một node) trong mạng sẽ gửi code tới một máy (một node) khác trong cùng môi trường mạng và thực thi ở máy đó.
Thao tác này gồm 2 bước : Bước 1 : Tự bản thân máy A gửi code đến máy B mà không có yêu cầu từ phía B. Trong mô hình này, A chỉ là một máy có nối mạng với B chứ không cần điều kiện A phải là server Bước 2: code được thực thi ở máy B Hình 2.2: Kỹ thuật mã đẩy (push code) Chú ý : ở A vẫn lưu trữ một bản sao của code. Như vậy, trong hai mô hình trên, nơi gửi code đi vẫn giữ lại một bản sao của code. TIEU LUAN MOI download : skknchat@gmail.
Kĩ thuật mã tự trị (autonomous code) Code tự quyết định sẽ đi và thực thi ở đâu Bước 1 : code sau khi thực thi ở máy A sẽ tự đóng gói và di trú tới máy B Bước 2 : code thực thi ở máy B, lúc này code hoàn toàn không còn ở A nữa Hình 2.3: Kỹ thuật mã tự trị (autonomous code) Ví dụ : mobile agent hoạt động theo phương pháp này. Tự quyết định đóng gói, không để lại bản sao và di trú đến đâu là điểm khác biệt của mobile agent với hai kĩ thuật kéo mã và đẩy mã ở trên. TIEU LUAN MOI download : skknchat@gmail.