TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN
KHOA CÔNG NGHỆ THÔNG TIN
…………………………
BÀI TẬP LỚN
TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:
TÌM HIỂU VỀ CÔNG NGHỆ TÁC TỬ DI ĐỘNG (MOBILE AGENT)
Giáo viên hướng dẫn :
Sinh viện thực hiện :
Hà Nội
LỜI NÓI ĐẦU
Sự phát triển không ngừng của các kỹ thuật tiên tiến về máy tính, đặc biệt
là các giải pháp mạng, cùng với sự bùng nổ nhanh chóng các dịch vụ và nguồn
thông tin trên mạng đã làm gia tăng số người sử dụng Internet đến con số hàng
trăm triệu. Các đặc điểm của nguồn thông tin, tổ chức mạng, cũng như việc khai
thác, xử lý thông tin ngày càng trở nên phức tạp và đa dạng hơn. Các ứng dụng
phân tán phát triển theo mô hình client - server truyền thống tỏ ra một số bất lợi vì
đòi hỏi làm việc đồng bộ, đòi hỏi đường truyền băng thông cao, độ trễ thấp và cuối
cùng là các dịch vụ thiếu linh động, khó thay đổi hay bổ sung.Công nghệ tác tử đã
có những bước phát triển mạnh mẽ trong những năm gần đây. Riêng tác tử di động
(Mobile agent) đã chứng tỏ được là một biện pháp cực kỳ hữu hiệu trong các vấn
đề xử lý phân tán.
Để hiểu thêm về vấn đề này em chọn đề tài “Tìm hiểu về công nghệ tác tử
di động (Mobile agent)” nhằm nắm được những khái niệm cơ bản về mobile agent
đồng thời đề cập đến những loại ứng dụng phù hợp với mô hình mobile agents đã
và đang được nghiên cứu và phát triển trên thế giới.
Em chân thành cảm ơn sự hướng dẫn của Ts. Lưu Minh Tuấn - Giảng viên
môn Trí tuệ nhân tạo Bộ môn Công nghệ thông tin ĐH Kinh tế Quốc dân đã cho
chúng em nhiều kiến thức quý giá về lĩnh vực trí tuệ nhân tạo để em có thể hoàn
thành đề tài này một cách tốt nhất. Tuy nhiên, sự hiểu biết của em về lĩnh vực này
còn chưa sâu sắc nên chắc chắn sẽ có nhiều sai sót, em mong thầy thông cảm và
I.1.3.1. Phân loại theo tính năng
• Agent 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
• 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 đến nơi khác trong hệ thống mạng máy
tính tại những thời điểm và vị tri 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.
I.1.3.2. Phân loại theo mục đích
Hình 2: Phân loại agent theo mục đích
• 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 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ụ
các chương trình giả lập hoặc tích hợp vào thiết kế của một ứng dụng phần cứng
mới như đồ gia dụng
• Interface agent
Interface agent là một chương trình có thể ảnh hưởng đến giao diện 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 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ể sự thay đổi đó không phải diễn ra ngay
ứng với ứng dụ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 đó trước khi quyết định
thực hiện một hành động.
• Smart/Intelligents
I.2.2. Tính chất của tác tử di động
- Có khả năng di chú từ nơi này đến 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ố tác tử có khả năng cung cấp dịch vụ hoặc giao diện cho các ứng
dụng kế thừa
- Kích thước nhỏ
- Có khả năng xác định và dùng cá tài nguyên trên các máy tính đang chứa nó
I.2.3. Các đặc tính của tác tử di động
Các đặc tính chính của tác tử di động bao gồm :
Tính tự trị (autonomous): là khả năng tự kiểm soát bản thân của agent sau
khi được giao việc mà không cần sự can thiệp nào của người dùng hoặc của agent
khác. Có nhiều hướng đánh giá về sự tự trị của agent. 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 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 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 (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.
Tính thích ứng (reactiveness): là khả năng của agent có thể thực thi trên
những môi trường lạ, và cảm nhận được sự thay đổi của môi trường.
Khả năng cộng tác (collaboration): là khả năng liên lạc, phối hợp hoạt
động của các agent với các agent của cùng môi trường khác hay với các loại đối
tượng khác trong những môi trường khác.
II. LỢI ÍCH CỦA TÁC TỬ DI ĐỘNG
II.1. Giảm tải mạng
Các agent có khả năng cảm nhận những thay đổi của môi trường thi hành và
tác động trở lại những thay đổi ấy một cách tự động.
II.6. Khắc phục tình trạng không đồng nhất
Việc xử lý tính toán trên mạng cơ bản là không đồng nhất vì sự đa dạng về
phần cứng và phần mềm được sử dụng. Do mobile agent độc lập với máy tính
(phần cứng và hệ điều hành) và tầng vận chuyển, chỉ phụ thuộc vào môi trường thi
hành, nên chúng cung cấp một điều kiện tối ưu cho việc liên kết các hệ thống
không liên quan gì lại với nhau.
II.7. Mạnh mẽ và có khả năng chế ngự lỗi cao
Với khả năng phản ứng năng động với các sự kiện và những thay đổi bất lợi,
mobile agents giúp cho việc xây dựng hệ thống mạnh mẽ và chịu lỗi cao được dễ
dàng hơn.
III. CÁC ỨNG DỤNG CỦA TÁC TỬ DI ĐỘNG
Hiện nay, theo các nghiên cứu về agents, chưa có một ứng dụng nào có thể
được xem như là ứng dụng đặc trưng dành cho công nghệ tác tử di động. Tất cả
những kết quả đạt được hiện nay với tác tử di động cũng đều bằng những công
nghệ truyền thống. Tuy nhiên, trong một vài trường hợp, tác tử di động có thể là
giải pháp tối ưu. Tác tử di động có thể được áp dụng trong nhiều lĩnh vực như:
III.1. Thương mại điện tử
Các ứng dụng thương mại điện tử cho phép người dùng thực hiện các giao
dịch trong kinh doanh trên mạng. Một giao dịch có thể bao gồm sự thương lượng
với các thực thể ở xa và có thể đòi hỏi truy cập nguồn thông tin liên tục thay đổi.
Từ thực tế đó nảy sinh nhu cầu thay đổi hành vi của các thực thể để đạt được một
nghi thức chung trong việc thương lượng. Hơn nữa, việc di chuyển các thành phần
của ứng dụng tiến gần đến nguồn thông tin thích hợp cho giao dịch cũng được
quan tâm. Vì thế công nghệ tác tử di động là một giải pháp rất hấp dẫn cho lĩnh
vực này.
III.2. Thu thập thông tin phân tán
Trong trường hợp có nhu cầu truy vấn phức tạp, chuyên biệt và liên qua đến
nhiều nguồn dữ liệu phân tán, không đồng nhất, việc cử các tác tử di động di
hệ thống là các công việc rất khó khăn. Việc ứng dụng tác tử di động vào việc
quản trị mạng sẽ giúp cho các công việc chẩn đoán lỗi và duy trì từ xa sự ổn định
của hệ thống được dễ dàng hơn.
III.7. Hỗ trợ các thiết bị di động
Do đặc điểm tài nguyên hạn chế và không kết nối thường xuyên, việc xây
dựng các ứng dụng dựa trên tác tử di động với khả năng di chuyển đến các máy
tính có cấu hình mạnh hơn để hoạt động (truy vấn cơ sở dữ liệu, tìm tin…) rồi trả
kết quả về sẽ là một giải pháp tốt cho người dùng các thiết bị di động.
V. ĐÁNH GIÁ MỘT SỐ HỆ THỐNG TÁC TỬ DI
ĐỘNG
V.1. Các hệ thống tác tử di động
V.1.1. Aglets
Aglets được xây dựng và phát triển bởi D. B. Lange và IBM Tokyo Research
Laboratory. Hiện nay, bộ Aglets Software Development Kit (ASDK) do IBM phát
triển đã dừng lại ở phiên bản 1.1 Beta3 trên nền JDK1.1. Phiên bản mới nhất của
ASDK là 2.0.2 do SourceForge phát triển trên nền JDK1.3.
Aglets là những đối tượng Java có thể di chuyển từ host này sang host khác
trên môi trường mạng. Khi aglets di chuyển, nó mang theo mình cả mã chương
trình lẫn dữ liệu. Trong mô hình đối tượng aglets, một mobile agent là một đối
tượng di động có luồng kiểm soát riêng của nó, làm việc theo sự kiện và liên lạc
với các agent khác bằng cách truyền thông điệp. Aglets có một cơ chế định danh
duy nhất và toàn cục dựa trên URL. Aglets hỗ trợ cơ chế di động yếu (weak-
mobility). Các aglets giao tiếp với nhau một cách đồng nhất, và độc lập với vị trí
lưu trú thông qua đối tượng proxy. Suốt chu kỳ sống, các aglets sẵn sàng bắt
những sự kiện (clone, mobility, persistence) phát sinh trong môi trường để có
phản ứng thích hợp. Agent có thể giao tiếp đồng bộ hoặc không đồng bộ thông
qua các loại thông điệp: synchronous, one-way, hay future reply. Aglets sử dụng
ATP (Agent Transfer Protocol) cho việc di chuyển và giao tiếp. Aglets sử dụng 2
loại mẫu thiết kế chính là chủ-tớ (Master-Slave) và hành trình (Itinerary) cho việc
di chuyển của các agent.
Một trong những đặc điểm nổi trội khác của Voyager là tính phổ quát. Các
chương trình viết trong Voyager có thể trao đổi thông tin hai chiều với các chương
trình viết bằng SOAP, CORBA, RMI và DCOM. Các dạng thông tin được trao đổi
có thể là các lời gọi hàm từ xa, các dịch vụ đặt tên, dịch vụ thư mục. Voyager có
thể được xem là một cửa ngõ, một cầu nối làm cho các chương trình theo chuẩn
khác trở nên liên thông với nhau. Hơn nữa, tất cả các chương trình và đối tượng
có thể được tổ chức thành một không gian chung, nhờ vậy việc liên lạc sẽ trở
thành một–nhiều một cách tự động.
Phiên bản 4.5 của Voyager đã được bổ sung thêm các tính năng rất quan
trọng hỗ trợ cho các chuẩn dịch vụ Web. SOAP và WSDL cũng đã được phát triển
trong phiên bản này giúp cho các nhà phát triển có khả năng triển khai các ứng
dụng truy cập tới các dịch vụ Web từ xa và các chương trình Voyager có thể truy
cập nhau thông qua các dịch vụ Web.
Thế mạnh thật sự của Voyager nằm ở sự đơn giản và dễ dùng. Sự “trong
suốt” hay cách mà Voyager che dấu các kỹ thuật lập trình phân tán phức tạp đã
làm cho việc xây dựng các ứng dụng mobile agent trở nên dễ dàng hơn rất nhiều.
Việc tích hợp các công nghệ mới và các chuẩn mới vào cùng một sản phẩm tạo
cho Voyager sự hấp dẫn rất riêng biệt.
IV.1.3. Mole
Mole là hệ thống Mobile Agent được xây dựng với ngôn ngữ Java tại đại
học Stuttgart (Đức). Phiên bản đầu tiên (Release 1.0) đã hoàn thành vào năm
1995, năm 1997 phiên bản Release 2.0 được hoàn thành, bản Release 3.0 được
hoàn tất vào năm 1998 và đề án đã kết thúc với kết quả là môi trường ổn định để
xây dựng ứng dụng theo mô hình agent trên các hệ phân tán. Được xây dựng trên
Java, Mole có khả năng thực thi trên tất cả các môi trường có hổ trợ JDK1.1.x
(Jdk1.1.7 và Jdk1.1.8), sử dụng giao thức TCP/IP trong quá trình giao tiếp. Mole
hổ trợ di chuyển yếu-weak migration.
Để thực hiện giao tiếp giữa các agent Mole sử dụng các cơ chế truyền thông
điệp, gọi hàm từ xa RPCs, và cơ chế đặc trưng của Mole là session , badge. Ngôn
ngữ giao tiếp giữa các agent được Mole hỗ trợ là KQML. Việc trao đổi dữ liệu
Hai đặc tính quan trọng của các Zeus agents là tính tự trị và cộng tác. Bộ
phận Planner trong mỗi agent sẽ hỗ trợ agent thể hiện tính tự trị. Khả năng thương
lượng và cộng tác giữa các agent cũng được Zeus tích hợp vào trong toolkit thông
qua một thư viện các giao thức, cùng các chiến lược thương lượng và cộng tác. Do
có mã nguồn mở, người dùng có thể thêm vào thư viện này các chiến lược riêng
phù hợp với ứng dụng của mình.
Các Zeus agent truyền thông theo point-to-point socket TCP/IP với mỗi
message là một chuỗi các kí tự mã ASCII. Ngôn ngữ truỵền thông Zeus sử dụng là
FIPA ACL (). Nhằm cung cấp khả năng “hiểu” lẫn nhau cho
các agent, Zeus cung cấp các công cụ cho việc định nghĩa các ontology-cơ sở khái
niệm chung cho cộng đồng agent.
Các agent của Zeus được phân tán qua mạng và có thể thực hiện các tác vụ
đồng thời. Chính vì thế, việc quản lí các agent cũng là một vấn đề mà môi trường
đặt ra. Visualiser của Zeus cung cấp các công cụ để kiểm tra các quan hệ giao tiếp
giữa các agent, trạng thái tác vụ những agent đang thực hiện và trạng thái bên
trong của agent. Đồng thời, Zeus Statistic Tool cho phép người dùng so sánh các
thống kê khác nhau về cộng đồng agent, chẳng hạn những loại thông điệp nào
agent đã gửi và tỉ lệ là bao nhiêu, một cách trực quan dưới những dạng đồ thị khác
nhau. Cũng nhằm quản lí agent, Zeus cung cấp những agent tiện ích như Agent
Name Server hoạt động như một Yellow Page, Facilitator như một White Page,
Visualiser và Database Proxy.
Một hạn chế của Zeus là tuy được liệt kê vào một trong những môi trường
mobile agent nhưng hiện hướng nghiên cứu về tính di động của Zeus chỉ mới ở
bước đầu, chưa được cài đặt. Do đó mà tính bảo mật của Zeus cho các agent hầu
như không có. Điều này có thể sẽ được khắc phục trong các phiên bản sau.
Zeus đã và đang được triển khai trong một số ứng dụng như Agent Based
Work-flow Management, PTA: Personal Travel Assistance, Personal Computer
Manufacture, Agent-based Electronic Commerce, Network Management (VPNP),
Home Shopping.
IV.2. So sánh các hệ thống Aglet, Mole, Voyager và Zeus
Hình 7: Kĩ thuật Push code – Bước 1
Bước 2 : code được thực thi ở máy B
Hình 8: Kĩ thuật Push code – Bước 2
Chú ý : ở A vẫn lưu trữ 1 bản sao của code. Như vậy, trong 2 mô hình trên,
nơi gửi code đi vẫn giữ lại 1 bản sao của code.
V.1.3. Kĩ thuật 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
Hình 9: Kĩ thuật Autonomous code – Bước 1
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 10: Kĩ thuật Autonomous code – Bước 2
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 2 kĩ thuật trên.
V.2. Đời sống một agent
Hình 11: Vòng đời agent
- Creation : Khởi tạo agent, phát sinh ID cho agent, tuỳ biến cấu hình cho
agent
- Serialize: Lưu lại trạng thái agent trước khi di trú đến AgentOS khác
- Migrate: Di trú agent kèm tình trạng của nó đến 1 nơi khác
- Deserialize: Tái tạo lại trạng thái trước khi di trú của agent
- Execute: Truy cập vào các dịch vụ của host, liên lạc với các agent khác,
hoàn thành nhiệm vụ của agent
- Migrate Request: Yêu cầu được di trú đến 1 host khác
- Destroy or sleep: Khi nhiệm vụ đã hoàn thành hoặc gặp 1 trở ngại gì đó
không thể tiếp tục hoạt động thì agent sẽ tự hủy hoặc tự đưa nó vào trạng thái
ngủ đông (sleep)
Mọi agent đều thực hiện các công việc của nó tuần tự theo logic : đầu tiên,
agent được tạo ra, di trú từ host này sang host khác và cuối cùng bị huỷ sau khi
hoàn thành nhiệm vụ.
môi trường thi hành. Do đó việc nghiên cứu để giải quyết những vấn đề tồn đọng
của mô hình vẫn là những thách thức cần được đầu tư nghiêm túc.