Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
1,14 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG -o0o - MÔI TRƢỜNG PHÁT TRIỂN TÁC TỬ DI ĐỘNG VÀ ỨNG DỤNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ Thông tin Sinh viên thực hiện: Vũ Thái Sơn Giáo viên hƣớng dẫn: Ths Nguyễn Trịnh Đơng Mã số sinh viên: 110891 HẢI PHỊNG - 2011 MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH MỞ ĐẦU CHƢƠNG 1: TÁC TỬ, TÁC TỬ DI ĐỘNG VÀ ĐA TÁC TỬ 1.1 Giới thiệu tác tử 1.1.1 Khái niệm tác tử (Agent) 1.1.2 Đặc điểm, tính chất tác tử 1.1.3 Tác tử tĩnh 1.1.4 Tác tử di động (Mobile Agent) 1.1.5 Cấu trúc chung tác tử 10 1.2 Hệ đa tác tử (Multi Agent) 17 1.2.1 Khái niệm hệ đa tác tử 17 1.2.2 Đặc điểm hệ đa tác tử 17 1.2.3 Phối hợp hệ đa tác tử 18 1.2.4 Ưu điểm hệ đa tác tử 21 1.2.5 Các lĩnh vực ứng dụng 21 CHƢƠNG 2: SỰ TƢƠNG TÁC CỦA TÁC TỬ 23 2.1 Tổng quan tương tác hệ đa tác tử 23 2.1.1 Ngôn ngữ truyền thông tác tử 24 2.1.2 Các mô hình tương tác 26 2.1.3 Tương tác với tác tử trung gian 29 2.2 Thương lượng hệ đa tác tử 32 CHƢƠNG 3: MÔI TRƢỜNG, NỀN TẢNG PHÁT TRIỂN TÁC TỬ 34 3.1 Aglets 34 3.2 Voyager 34 3.3 Mole 35 3.4 Zeus 36 3.5 JADE (Java Agent DEvelopment Framework) 37 3.6 Các tính hỗ trợ hệ thống tác tử di động 38 CHƢƠNG 4: NỀN TẢNG JADE 39 4.1 Tóm tắt lịch sử JADE 39 4.2 JADE mơ hình tác tử 40 4.3 Kiến trúc JADE 42 4.4 Các gói JADE 45 4.5 Dịch vụ vận chuyển thông điệp 46 4.5.1 Các giao thức truyền thông điệp 46 4.5.2 Giao thức truyền thông điệp nội (IMTP) 48 4.6 Cửa sổ quản trị JADE 50 4.6.1 Dummy Agent 51 4.6.2 Sniffer Agent 52 4.6.3 Introspector Agent 52 4.6.4 Dịch vụ thông báo kiện mơ hình cơng cụ JADE 53 4.7 Khám phá tác tử – Dịch vụ trang vàng (Yellow Pages) 55 4.7.1 DF Agent 56 4.7.2 Tương tác với DF Agent 56 CHƢƠNG 5: THỰC NGHIỆM 58 5.1 Mơ tả tốn 58 5.2 Minh họa toán 58 5.2.1 Xây dựng giao diện cho tác tử Seller 58 5.2.2 Xây dựng tác tử Seller 59 5.2.3 Xây dựng tác tử Buyer 62 5.3 Kết toán 65 KẾT LUẬN VÀ PHƢƠNG HƢỚNG TIẾP THEO: 68 TÀI LIỆU THAM KHẢO: 69 DANH MỤC WEBSITE THAM KHẢO: 69 DANH MỤC HÌNH ẢNH Hình 1.1: tác tử tương tác với môi trường Hình 1.2: Cấu trúc chung tác tử 10 Hình 1.3: Sơ đồ tác tử phản xạ 13 Hình 1.4: tác tử có trạng thái bên 14 Hình 1.5: tác tử có mục đích .15 Hình 1.6: Hàm hành động tác tử suy diễn logic 16 Hình 1.7: Các dạng quan hệ hành động .20 Hình 2.1: Một giao thức truyền thông KQML 26 Hình 2.2: Các loại hình tương tác .27 Hình 2.3: Giao thức mạng hợp đồng 28 Hình 2.4: Mơ hình tương tác với tác tử điều phối .31 Hình 2.5: Mơ hình tương tác với tác tử môi giới 32 Hình 2.6: Các dạng thương lượng .32 Hình 4.1: Các thành phần kiến trúc Nền tảng JADE 43 Hình 4.2: Quan hệ thành phần kiến trúc JADE .43 Hình 4.3: Các giao thức truyền thơng JADE 47 Hình 4.4: Giao diện tác tử 51 Hình 4.5: Giao tiếp với Nền tảng từ xa .51 Hình 4.6: Kết chạy DummyAgent từ dịng lệnh 51 Hình 4.7: Kết chạy DummyAgent từ giao diện Nền tảng 52 Hình 4.8: Kết chạy SnifferAgent 52 Hình 4.9: Giao diện Introspector Agent giám sát tác tử DF 53 Hình 4.10: Giao diện Log Manager Agent Container-1 .53 Hình 4.11: Hệ thống thơng báo kiện JADE 54 Hình 4.12: Biểu đồ lớp công cụ JADE .55 Hình 4.13: Dịch vụ trang vàng 56 Hình 5.1: Khởi tạo tác tử “BookSeller” 65 Hình 5.2: Kết chạy tác tử “BookSeller” .65 Hình 5.3: Khởi tạo tác tử “BookSeller” 66 Hình 5.4: Kết chạy tác tử “BookBuyer” 66 Hình 5.5: Kết giao dịch tác tử Seller Buyer .66 Hình 5.6: Kết giao dịch khơng thành công .67 MỞ ĐẦU Tác tử di động (Mobile Agent) phương thức giao tiếp tiên tiến ngày chứng tỏ ưu so với mơ hình truyền thơng báo – sở hầu hết giải thuật phân tán trước Các tiến trình thay phải gắn liền với nơi khởi tạo di chuyển đến đâu q trình thực hiện, chúng xích lại gần để tương tác trực tiếp trao đổi từ xa thông qua thông điệp Đồ án nghiên cứu tác tử (Agent), tác tử di động (Mobile Agent), hệ đa tác tử (Multi Agent), tương tác tác tử thương lượng giao thức truyền thông chúng Đồ án nghiên cứu ứng dụng tác tử di động để xậy dựng ứng dụng trao đổi tác tử thông qua tốn “Book Trading” Đồ án trình bày sau: Chƣơng 1: Tác tử, tác tử di động đa tác tử Chương giới thiệu tác tử, tác tử di động hệ thống đa tác tử, đưa ưu điểm tác tử so với giải thuật phân tán trước nêu lĩnh vực ứng dụng áp dụng Chƣơng 2: Sự tƣơng tác tác tử Đề cập đến tương tác tác tử với để thực vai trị mình, nghiên cứu tương tác tác tử dựa vào vai trò chúng đồng thời nghiên cứu chế truyền thông tác tử Chƣơng 3: Môi trƣờng, tảng phát triển tác tử di động Chương nhằm giới thiệu số môi trường tảng để phát triển tác tử di động, nêu tính hỗ trợ hệ thống tác tử di động Chƣơng 4: Nền tảng JADE (Java Agent DEvelopment Framework) Cung cấp nhìn tổng quan tảng JADE thành phần tạo thành kiến trúc nó, nêu chế hoạt động hoạt động tác tử tảng JADE Chƣơng 5: Thực nghiệm Đưa mô tả tốn ứng dụng dựa cơng nghệ tác tử kết CHƢƠNG 1: TÁC TỬ, TÁC TỬ DI ĐỘNG VÀ ĐA TÁC TỬ 1.1 Giới thiệu tác tử 1.1.1 Khái niệm tác tử (Agent) Từ trước đến nay, muốn máy tình làm cơng việc gì, người ta ln phải xác định trước mục tiêu, sau thiết kế mã hóa chương trình Và gặp tình khơng xác định, máy tính thường hay gặp cố Tuy năm gần đây, với phát triển Internet dẫn đến việc ứng dụng công nghệ thông tin cách rộng rãi vào nhiều lĩnh vực khác như: tìm kiếm thơng tin, quản lý, giám sát mạng viễn thông, … Sự đa dạng việc áp dụng khiến cho việc phát triển phần mềm ngày trở nên phức tạp hơn, thể chỗ: - Khối lượng xử lý công việc ngày lớn - Yêu cầu tính xác ngày lớn - Yêu cầu tính mở phân tán: ngày hầu hết hệ thống thơng tin gắn bó chặt chẽ với mơi trường mạng phần mềm phải đáp ứng ngày tốt nhu cầu người - Yêu cầu tính độc lập thành phần hệ thống Hướng phát triển nghiên cứu mạng mẽ công nghệ phần mềm năm gần chuyển từ tiếp cận hướng cấu trúc sang tiếp cận hướng đối tượng tập ký hiệu chuẩn mà phát triển ứng dụng rộng rãi Tuy nhiên hệ thống thơng tin phức tạp cịn nhiều hạn chế tính thụ động đối tượng, nghĩa đối tượng hoạt động nhận thông điệp từ đối tượng khác Với hệ thống có yêu cầu tính phân tán hệ tìm kiếm thơng tin, hệ thương lượng thương mại điện tử, hệ quản lý, giám sát mạng viễn thơng,… tương tác thụ động khơng cịn phù hợp Các thành phần phần mềm hệ thống phải phục vụ dịch vụ khác nhau, cần phải chủ động theo mục đích riêng mình, đồng thời phải tương tác với thành phần khác để chia sẻ tài nguyên hỗ trợ công việc Định nghĩa tác tử: Có nhiều định nghĩa khác nhau, chí khác tác tử, có định nghĩa thường sử dụng sau: Tác tử (Agent) hệ thống tính tốn hoạt động tự chủ mơi trường đó, có khả cảm nhận mơi trường tác động vào mơi trường Có thể hiểu định nghĩa sau: Hệ thống tính tốn phần cứng, phần mềm, phần cứng lẫn phần mềm Bất tác tử tồn hoạt động môi trường định tác tử nhận thông tin từ môi trường qua quan cảm nhận tác động vào môi trường quan tác động Cảm nhận Mơi trường Tác tử Tác động Hình 1.1: tác tử tương tác với môi trường Đối với tác tử phần cứng, quan cảm nhận cảm biến, camera, quan tác động phận học, quang học âm Đối với tác tử chương trình phần mềm, mơi trường hoạt động thơng thường máy tính mạng máy tính Việc cảm nhận mơi trường tác động thực thông qua lời gọi hệ thống Nói chung, tác tử thiết kế để hoạt động để hoạt động nhiều dạng môi trường khác Một điểm cần ý cảm nhận mơi trường tác tử không đầy đủ môi trường phức tạp có chứa yếu tố khơng xác định Một u cầu quan trọng tác tử tính tự chủ Cũng thân định nghĩa tác tử, có nhiều cách hiểu khác tính tự chủ Ở đây, tự chủ hiểu khả tác tử hành động không cần đến can thiệp trực tiếp người hay tác tử khác: tác tử hồn tồn có khả kiểm sốt trạng thái hành vi thời gian tương đối dài Một số tác giả định nghĩa tính tự chủ rộng hơn, chẳng hạn yêu cầu tác tử phải có khả tự học Với đặc điểm tồn hành động tự chủ mơi trường, tác tử thực mục tiêu cho trước có thay chủ (người dùng tác tử khác) thực số nhiệm vụ 1.1.2 Đặc điểm, tính chất tác tử Một tác tử thơng thường có đặc điểm, tính chất sau: Tính phản xạ: tác tử có khả phản xạ kịp thời với thay đổi môi trường mà tác tử cảm nhận Tính chủ động (hành động có mục đích): khơng phản xạ, tác tử cịn phải biết chủ động tìm kiếm khả hành động hướng tới thực mục tiêu giao Tính cộng đồng: tác tử có khả tương tác với người dùng tác tử khác để thực nhiệm vụ riêng để giúp đỡ đối tác Tính thích nghi: Thích nghi khả tác tử tồn hoạt động hiệu môi trường thay đổi Mặc dù có nhiều nét liên quan với tính phản xạ, khả thích nghi tác tử khó thực địi hỏi nhiều thay đổi q trình suy diễn tác tử Tính thích nghi thực nhờ khả tự học từ kinh nghiệm tác tử Khả tự học: Tự học học tự động khả tác tử thu thập kiến thức từ kinh nghiệm thu lượm được, chẳng hạn qua lần thành công thất bại Kết tự học phải làm cho tác tử hành động tốt hơn, hiệu Khả di chuyển: Là khả tác tử (phần mềm) di chuyển máy tính nút khác mạng đồng thời giữ nguyên trạng thái khả hoạt động Các tác tử có đặc điểm gọi tác tử di động Việc thiết kế cài đặt tác tử di động đặt yêu cầu đặc biệt vấn đề an ninh hệ thống Có thể so sánh tác tử có đầy đủ ba đặc điểm với cầu thủ đá bóng Mục đích cầu thủ tồn đội đưa bóng vào lưới đối phương đồng thời ngăn khơng cho đối phương đưa bóng vào lưới Để đạt mục đích này, cầu thủ phải tìm hội để đưa bóng gần lưới đối phương sút Đây thể tính tự chủ hành động có mục đích Tuy nhiên, tình sân có cầu thủ phải thay đổi mục tiêu tạm thời, cụ thể chuyền ngang chí chuyền Khi đối phương vào bóng thơ bạo mục tiêu trước mắt chưa phải sút bóng mà trước hết giữ an tồn cho Đây thể rõ ràng tính phản xạ Cuối cùng, cầu thủ sân phải có tính cộng đồng, thể với việc phối hợp với đồng đội, tuân theo dẫn huấn luyện viên trọng tài 1.1.3 Tác tử tĩnh Tác tử tĩnh hoạt động phần tử độc lập xử lý (client server), sinh hàng loạt tác vụ khác hoạt động vi xử lý vi xử lý khác Tác tử tĩnh thích hợp với vai trị tìm kiếm chọn lọc thơng tin, điều khiển dịng liệu, điều khiển thiết bị thông minh, lọc thư điện tử tư vấn cho người sử dụng Tác tử tĩnh giữ ngun vị trí q trình hoạt động Mặc dù có nhiều loại tác tử tĩnh khác song chúng di chuyển, nên việc thiết kế tác tử tĩnh trở nên đơn giản tác tử động Tác tử tĩnh không yêu cầu phải liên lạc với sở hạ tầng phép tác tử khác chuyển qua hay hỗ trợ môi trường giao tiếp phức tạp tác tử Tác tử tĩnh không yêu cầu trình đồng hóa q trình hoạt động Các loại tác tử tĩnh điển hình tác tử giao tiếp, tác tử chức năng, tác tử điều khiển giám sát, tác tử xử lý thư điện tử, tác tử thu thập thông tin,… 1.1.4 Tác tử di động (Mobile Agent) 1.1.4.1 Khái niệm Tác tử di động một đối tượng di động tự trị, có mã lệnh, liệu trạng thái thực hiện, có khả di chuyển mơi trường mạng phân tán, đại diện cho người sử dụng thực số cơng việc xác định 1.1.4.2 Các tính chất tác tử di động Tác tử di động có ba tính chất: Tính tương tác: tác tử cảm nhận hành động, thực công việc theo thay đổi mơi trường Tính tự trị: tác tử hoạt động thực công việc phức tạp mà khơng cần có can thiệp trực tiếp người dùng tác tử thực hành động độc lập nhờ vào kiểu trạng thái cài đặt trước Tác tử có khả kiểm soát định hành động trạng thái bên Tính di động: tác tử linh hoạt tự di chuyển từ nơi đến nơi khác, theo hành trình định trước tác tử nhận thức môi trường hành động dựa theo tình khác 10 Cung cấp hệ thống linh động ưu điểm tác tử di động Nó đưa khái niệm sở mạng tích cực mà đó, mã dịch vụ thường đặt bên ngồi mạng chuyển đến node chuyển mạch mạng cách linh động Có phương thức để thực việc chuyển động chúng cung cấp cho mạng cấu trúc linh hoạt động Nếu dùng phương pháp tích hợp gói liệu truyền chứa đoạn chương trình đọc kích hoạt node chuyển mạch có khả lập trình Ngược lại, theo phương pháp tiếp cận rời rạc mạng di chuyển mã cách rời rạc Ưu điểm tác tử di động nói gọn cụm từ Ưu điểm vị trí Khi tác tử di động di chuyển đến định cự máy trạm đầu xa, chúng tránh việc trao đổi thông tin với máy trạm cách định cư Các tác tử di động giúp làm giảm lưu lượng mạng thay phải truyền lượng lớn thơng tin mạng cần truyền chức chúng Các tác tử di động xử lý trước liệu truyền kết Còn gọi nén ngữ nghĩa Ngoài việc giảm lưu lượng mạng thời gian kích hoạt giảm di chuyển định cư tác tử 1.1.5 Cấu trúc chung tác tử Có thể xem xét tác tử từ hai góc độ: thực thể trừu tượng với chế suy diễn định riêng; thành viên cộng đồng tác tử với mối quan hệ, tương tác với thành viên khác tức ta xem xét tác tử thực thể riêng hệ đa tác tử Ở mức độ tổng qt, tác tử có kiến trúc hình vẽ sau: Hình 1.2: Cấu trúc chung tác tử 55 Hình 4.12: Biểu đồ lớp cơng cụ JADE Mọi công cụ JADE, ngoại trừ DummyAgent, kế thừa từ lớp jade.tools.ToolAgent – lớp cung cấp khả nhận thơng báo theo cách thống Hình 4.12 minh họa biểu đồ lớp UML công cụ JADE Điều cho phép số tính đơn giản hóa quan trọng: Vịng đời cơng cụ JADE quản lý tác tử khác tảng Khả truyền thơng điệp tác tử sở sử dụng phép tương tác công cụ AMS, cụ thể việc đặt trước thông báo kiện tảng Một số thể cơng cụ tồn tảng chí container Lớp jade.tools.ToolNotifier cài đặt tác tử phụ trợ dùng để chuyển tiếp kiện message - passing Agent - internal tới tác tử quan tâm ToolAgent Cách cho phép phát xem tác tử đích tác tử quan sát kết thúc hay chưa 4.7 Khám phá tác tử – Dịch vụ trang vàng (Yellow Pages) Khi viết code giả định có tập cố định tác tử người bán (thông qua tác tử người mua đối số ban đầu) Trong chương loại bỏ giả định cách khai thác dịch vụ trang vàng cung cấp Nền tảng JADE cho phép tác tử người mua tự động phát tác tử người bán sẵn có điểm đưa thời gian 56 4.7.1 DF Agent Một dịch vụ “yellow pages” cho phép tác tử đưa mô tả nhiều dịch vụ mà chúng cung cấp theo thứ tự mà tác tử khác dễ dàng phát khai thác chúng Bất kỳ tác tử đăng ký (xuất bản) dịch vụvà tìm kiếm cho dịch vụ (khai thác) Đăng ký, xóa, sửa đổi tìm kiếm thực lúc thời gian sống tác tử Hình 4.13: Dịch vụ trang vàng Dịch vụ trang vàng Jade, phù hợp với đặc tả quản lý tác tử FIPA (FIPA Agent Management), cung cấp tác tử đặc biệt gọi DF (Directory Facilitator) Mỗi FIPA-compliant tảng nên đăng cai tác tử DF mặc định (tên địa phương „df@‟) Các tác tử DF khác triển khai yêu cầu vài tác tử DF (bao gồm mặc định) tổ chức thành liên đoàn để cung cấp danh mục liệt kê trang vàng phân tán 4.7.2 Tƣơng tác với DF Agent DF tác tử, tương tác với với tác tử khác cách trao đổi thông điệp ACL sử dụng ngơn ngữ có nội dung thích hợp (ví dụ ngơn ngữ SL0) ontology thích hợp (ví dụ FIPA – Agent - management ontology) định nghĩa đặc tả FIPA Để đơn giản hóa tương tác này, JADE cung cấp lớp jade.domain.DFService xuất tìm kiếm dịch vụ qua nhiều lời gọi phương thức 4.7.2.1 Công bố dịch vụ Một tác tử muốn đưa nhiều dịch vụ phải cung cấp DF với mơ tả bao gồm AID riêng mình, danh sách dịch vụ cung cấp tùy chọn danh sách ngôn ngữ ontology để tác tử khác sử dụng để tương tác với Mỗi mơ tả dịch vụ công bố phải bao gồm loại dịch vụ, tên dịch vụ, ngôn 57 ngữ ontology yêu cầu để sử dụng dịch vụ tập thuộc tính đặc trưng dịch vụ dạng cặp giá trị khóa 4.7.2.2 Tìm kiếm dịch vụ Một tác tử muốn tìm kiếm dịch vụ phải cung cấp DF với mô tả mẫu Kết tìm kiếm danh sách tất mơ tả mà phù hợp với mẫu cung cấp Theo đặc tả FIPA, mô tả phù hợp với mẫu tất lĩnh vực đặc tả mẫu diễn tả mơ tả có giá trị Jade DF cung cấp kỹ thuật cho phép tác tử thông báo tác tử khác đăng ký xóa khỏi dịch vụ Khai thác kỹ thuật (điều thích hợp trường hợp chúng ta) yêu cầu khởi tạo giao thức FIPA-Subcribe với DF 58 CHƢƠNG 5: THỰC NGHIỆM Chương giới thiệu toán đơn giản ứng dụng cơng nghệ tác tử tảng JADE, toán mua bán sách hai tác tử 5.1 Mơ tả tốn Đây tốn đơn giản để mơ tả q trình mua bán sách tác tử Ta xây dựng BookSellerAgent có chức bán sách, giao diện đơn giản xây dựng để BookSellerAgent đưa tên giá mặt hàng Các mặt hàng sách BookSellerAgent cung cấp đưa vào Catalogue có sẵn để lưu trữ Sau ta xây dựng BookBuyerAgent để thực mua sách BookSellerAgent Trong ứng dụng không xây dựng giao diện BookBuyertác tử mà thân BookBuyerAgent thêm mặt hàng cần mua cách truyền tham biến trực tiếp Khi BookBuyerAgent cần mua mặt hàng sách đó, đưa tên sách, sau thực hỏi tất BookSellerAgent, biết chúng sẵn sàng bán, cung cấp giao dịch BookSellerAgent có sách bán cho BookBuyerAgent đưa phản hồi Các BookBuyerAgent sau thực mua thành cơng sách, tự động ngắt Tiến trình tiếp tục ta tạo tác tử khác để thực ứng dụng 5.2 Minh họa toán 5.2.1 Xây dựng giao diện cho tác tử Seller Ta xây dựng Lớp giao diện BookSellerGui cho phép nhập vào tên sách giá bán Nút “Add” sử dụng để thêm tên sách giá sách vào Catalogue: addButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { try { String title = titleField.getText().trim(); String price = priceField.getText().trim(); myAgent.updateCatalogue(title,Integer.parseInt(price)); titleField.setText(""); priceField.setText(""); } catch (Exception e) { 59 JOptionPane.showMessageDialog(BookSellerGui.this, "Invalid values "+e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } }} ); Phương thức WindowClosing ngắt Agent Seller cửa sổ giao diện đóng: addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { myAgent.doDelete(); } 5.2.2 Xây dựng tác tử Seller 5.2.2.1 Khởi tạo tác tử Seller Khởi tạo tác tử Seller, sử dụng phương thức Setup() Trong Catalogue định nghĩa Hashtable sau: catalogue = new Hashtable(); Sau giao diện BookSellertác tử gọi từ lớp BookSellerGui: myGui = new BookSellerGui(this); myGui.showGui(); Tiếp ta phải đăng ký dịch vụ trang vàng (yellow pages) cho việc bán sách Dịch vụ sử dụng tác tử DF để giúp cho tác tử đăng ký, đặc biệt giúp cho tác tử có sẵn dễ dàng tìm nhau: DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); sd.setName("JADE-book-trading"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace();} BookSellerAgent khởi động có hành vi: Đây hành vi đáp ứng câu hỏi từ tác tử Buyer có tác tử Buyer tìm kiếm tác tử Seller: addBehaviour(new OfferRequestsServer()); 60 Đây hành vi đáp ứng yêu cầu mua hàng tác tử Buyer có yêu cầu mua: addBehaviour(new PurchaseOrdersServer()); 5.2.2.2 Kết thúc tác tử Seller Kết thúc tác tử Seller, sử dụng phương thức takeDown() sau: protected void takeDown() { // Deregister from the yellow pages try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); } // Close the GUI myGui.dispose(); // Printout a dismissal message System.out.println("Seller-Agent "+getAID().getName()+" terminating."); } Sau gọi phương thức takeDown(), dịch vụ trang vàng bị ngắt đóng giao diện tác tử Seller lại, sau đưa thơng báo tác tử Seller kết thúc 5.2.2.3 Các hành vi tác tử Seller a Thêm mặt hàng vào Catalogue Các mặt hàng sau tác tử Seller đưa đưa vào Catalogue để lưu trữ, sử dụng phương thức UpdateCatalogue(): public void updateCatalogue(final String title, final int price) { addBehaviour(new OneShotBehaviour() { public void action() { catalogue.put(title, new Integer(price)); System.out.println(title+" inserted into catalogue Price = "+price); }} ); } 61 b Trả lời yêu cầu tác tử Buyer Đây hành vi tác tử Seller chấp nhận yêu cầu gửi đến từ tác tử Buyer Nếu sách yêu cầu có Catalogue tác tử Seller gửi tin nhắn u cầu xác nhận giá Nếu khơng tin nhắn từ chối gửi lại private class OfferRequestsServer extends CyclicBehaviour { public void action() { MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // CFP Message received Process it String title = msg.getContent(); ACLMessage reply = msg.createReply(); Integer price = (Integer) catalogue.get(title); if (price != null) { // The requested book is available for sale Reply with the price reply.setPerformative(ACLMessage.PROPOSE); reply.setContent(String.valueOf(price.intValue())); } else { // The requested book is NOT available for sale reply.setPerformative(ACLMessage.REFUSE); reply.setContent("not-available"); } myAgent.send(reply); } else { block();}}} c Chấp nhận giao dịch Đây hành vi tác tử Seller chấp nhận đơn đặt hàng từ tác tử Buyer tác tử Seller bỏ sách khỏi Catalogue gửi thông báo “INFORM” tới tác tử Buyer để thông báo giao dịch thực thành công private class PurchaseOrdersServer extends CyclicBehaviour { public void action() { MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.ACCEPT_PROPOSAL); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // ACCEPT_PROPOSAL Message received Process it String title = msg.getContent(); 62 ACLMessage reply = msg.createReply(); Integer price = (Integer) catalogue.remove(title); if (price != null) { reply.setPerformative(ACLMessage.INFORM); System.out.println(title+" sold to Agent "+msg.getSender().getName());} else { // The requested book has been sold to another buyer in the meanwhile reply.setPerformative(ACLMessage.FAILURE); reply.setContent("not-available");} myAgent.send(reply);} else { block(); }}}} 5.2.3 Xây dựng tác tử Buyer Xây dựng lớp BookBuyerAgent với phương thức khởi tạo, kết thúc hành vi tác tử Buyer Đầu tiên ta đưa tên sách để mua: private String targetBookTitle; Tiếp ta đưa danh sách tác tử Seller biết đến: private AID[] sellerAgents; 5.2.3.1 Khởi tạo tác tử Buyer Để khởi tạo BookBuyerAgent, dùng phương thức Setup(), truyền tham biến tên sách vào: Object[] args = getArguments(); if (args != null && args.length > 0) { targetBookTitle = (String) args[0]; System.out.println("Target book is "+targetBookTitle); Trong Setup() xây dựng hành vi tác tử Buyer, đưa danh mục yêu cầu mua hàng gửi tới tác tử Seller phút lần: addBehaviour(new TickerBehaviour(this, 60000) { protected void onTick() { System.out.println("Trying to buy"+targetBookTitle); // Update the list of seller Agents DFAgentDescription template = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); template.addServices(sd); try { 63 DFAgentDescription[] result = DFService.search(myAgeny, template); System.out.println("Found the following seller Agents:"); sellerAgents = new AID[result.length]; for (int i = 0; i < result.length; ++i) { sellerAgents[i] = result[i].getName(); System.out.println(sellerAgents[i].getName()); } } catch (FIPAException fe) { fe.printStackTrace(); } // Perform the request myAgent.addBehaviour(new RequestPerformer()); } } );} 5.2.3.2 Kết thúc tác tử Buyer Kết thúc tác tử Buyer sử dụng phương thức takeDown(): protected void takeDown() { // Printout a dismissal message System.out.println("Buyer-Agent "+getAID().getName()+" terminating."); } 5.2.3.3 Các hành vi tác tử Buyer Xây dựng lớp RequestPerformer kế thừa lớp Behaviour, sử dụng phương thức Action() mơ tả hoạt động tìm phản hồi từ tác tử Seller, tìm kiếm mặt hàng mua, thỏa thuận giao dịch với tác tử Seller: private class RequestPerformer extends Behaviour { private AID bestSeller; // The Agent who provides the best offer private int bestPrice; // The best offered price private int repliesCnt = 0; // The counter of replies from seller Agents private MessageTemplate mt; // The template to receive replies private int step = 0; public void action() { switch (step) { case 0: // Send the cfp to all sellers ACLMessage cfp = new ACLMessage(ACLMessage.CFP); for (int i = 0; i < sellerAgents.length; ++i) { cfp.addReceiver(sellerAgents[i]); } cfp.setContent(targetBookTitle); cfp.setConversationId("book-trade"); cfp.setReplyWith("cfp"+System.currentTimeMillis()); myAgent.send(cfp); // Prepare the template to get proposals 64 mt = MessageTemplate.and(MessageTemplate.MatchConversationId("booktrade"), MessageTemplate.MatchInReplyTo(cfp.getReplyWith())); step = 1; break; case 1: // Receive all proposals/refusals from seller Agents ACLMessage reply = myAgent.receive(mt); if (reply != null) { // Reply received if (reply.getPerformative() == ACLMessage.PROPOSE) { // This is an offer int price = Integer.parseInt(reply.getContent()); if (bestSeller == null || price < bestPrice) { // This is the best offer at present bestPrice = price; bestSeller = reply.getSender(); } } repliesCnt++; if (repliesCnt >= sellerAgents.length) { // We received all replies step = 2; } } else { block(); } break; case 2: // Send the purchase order to the seller that provided the best offer ACLMessage order = new ACLMessage(ACLMessage.ACCEPT_PROPOSAL); order.addReceiver(bestSeller); order.setContent(targetBookTitle); order.setConversationId("book-trade"); order.setReplyWith("order"+System.currentTimeMillis()); myAgent.send(order); // Prepare the template to get the purchase order reply mt = MessageTemplate.and(MessageTemplate.MatchConversationId("booktrade"), MessageTemplate.MatchInReplyTo(order.getReplyWith())); step = 3; break; case 3: // Receive the purchase order reply reply = myAgent.receive(mt); if (reply != null) { // Purchase order reply received if (reply.getPerformative() == ACLMessage.INFORM) { 65 // Purchase successful We can terminate System.out.println(targetBookTitle+" successfully purchased from Agent "+reply.getSender().getName()); System.out.println("Price = "+bestPrice); myAgent.doDelete(); } else { System.out.println("Attempt failed: requested book already sold."); } step = 4; } else { block(); } break; }} 5.3 Kết toán Ứng dụng bắt đầu lệnh runjade để truy nhập vào giao diện Nền tảng JADE Ở Main-contrainer ta khởi tạo tác tử Seller tên “BookSeller”, giao diện BookSellerGui ra, sách nhập vào tên “LapTrinhJava” giá “50000”, kết sau: Hình 5.1: Khởi tạo tác tử “BookSeller” Hình 5.2: Kết chạy tác tử “BookSeller” 66 Vẫn Main-container, tạo tác tử Buyer tên “BookBuyer”, sách cần mua “LapTrinhJava”, kết sau: Hình 5.3: Khởi tạo tác tử “BookBuyer” Hình 5.4: Kết chạy tác tử “BookBuyer” Sau đưa tên sách cần mua “LapTrinhJava”, tác tử “BookBuyer” tìm tác tử Seller Nền tảng, sau u cầu mua thực giao dịch: Hình 5.5: Kết giao dịch tác tử Seller Buyer 67 Nếu tác tử Buyer mua mặt hàng sách khơng có Catalogue, tìm hỏi tác tử Seller, sau khơng tìm thấy sách, tác tử Seller thơng báo khơng tìm thấy gửi cho tác tử Buyer: Hình 5.6: Kết giao dịch không thành công 68 KẾT LUẬN VÀ PHƢƠNG HƢỚNG TIẾP THEO Đề tài hoàn thành đƣợc mục tiêu đề ra: Đề tài định nghĩa đưa ưu – nhược điểm công nghệ tác tử tác tử di động Nghiên cứu hệ đa tác tử, ưu – nhược điểm so với hệ xử lý phân tán cũ lĩnh vực ứng dụng áp dụng công nghệ Đề tài đưa số giao thức tương tác tác tử, thương lượng tác tử, nghiên cứu giao thức truyền thông tác tử Đề tài đưa giới thiệu số môi trường, tảng đề phát triển tác tử, từ sâu vào nghiên cứu tảng JADE Đề tài nghiên cứu ứng dụng minh họa dựa công nghệ tác tử di động tảng JADE, thao tác tảng JADE Phương hướng tiếp theo: Trên sở toán ứng dụng, hướng nghiên cứu xây dựng cài đặt mơ hình tương tác thương lượng phức tạp tác tử, cụ thể tác tử “BookSeller” tác tử “BookBuyer” Nghiên cứu sâu kiến thức nâng cao tảng JADE thao tác JADE Em nhiều ý tưởng để phát triển đề tài có ứng dụng sử dụng cơng nghệ tác tử thực tế, kiến thức, khả thời gian cịn hạn chế nên khn khổ đồ án em chưa thể thực Trong tương lai em tiếp tục nghiên cứu phát triển đề tài 69 TÀI LIỆU THAM KHẢO: [1] Gerhard Weiss, The MIT Press, Cambridge, Massachusetts, London, England - MultiAgent Systems, A Modern Approach to Distributed Modern Approach to Artificial Intelligence [2] John Wiley Sons, 2007 Gate,Chichester,West Sussex PO19 8SQ, England Developing Multi-Agent Systems with JADE [3] Lin Padgham & Michael Winikoff, RMIT University, Melbourne, Australia Developing Intelligent Agent Systems [4] MichaelWooldridge - Intelligent Agents [5] Ning Zhong Maebashi Institute of Technology Japan, Jiming Liu Hong Kong Baptist University, Setsuo Ohsuga Waseda University Japan, Jeffrey Bradshaw University of West Florida USA - Intelligent Agent Technolog Research and Development [6] Rafael H Bordini à Mehdi Dastani ÃJă urgen Dix à Amal El Fallah Seghrouchni - Multi-Agent Programming [7] W Branner - Foundations and Application, Springer, 1998 DANH MỤC WEBSITE THAM KHẢO [1] http://jade.tilab.com [2] http://www.javaworld.com ... ứng dụng tác tử di động để xậy dựng ứng dụng trao đổi tác tử thông qua tốn “Book Trading” Đồ án trình bày sau: Chƣơng 1: Tác tử, tác tử di động đa tác tử Chương giới thiệu tác tử, tác tử di động. .. hoạt động môi trường định tác tử nhận thông tin từ môi trường qua quan cảm nhận tác động vào môi trường quan tác động Cảm nhận Môi trường Tác tử Tác động Hình 1.1: tác tử tương tác với môi trường. .. để phát triển tác tử di động ứng dụng tác tử di động Chương giới thiệu không giới thiệu đầy đủ tất môi trường phát triển tác tử di động mà giới thiệu cách tổng quan số môi trưởng tảng để phát triển