CHƯƠNG 4: THỬ NGHIỆM HỆ THỐNG ĐA ĐẤU GIÁ
4.3 Thiết kế hệ thống
4.3.2 Thiết kế phân tầng hệ thống sử dụng JADE
JADE là một nền Agent đƣợc cài đặt sẵn các dịch vụ và các kiến trúc hạ tầng cơ bản cho một ứng dụng phân tán đa Agent đƣợc phát triển từ năm 2003, và đã đƣợc ứng dụng ở TILAB, Motorola, Whitestein Technogoly AG, Profactor và France Telecom.
Mỗi một thực thể của môi trường thực thi JADE được gọi là Container, nó có thể chứa một số agent. Tập các Containers hoạt động đƣợc gọi là Platform. Riêng Main- Container phải luôn luôn đƣợc kích hoạt và tất cả các container khác đăng ký với nó ngay khi chúng bắt đầu.
Hình 4.4: Mô hình kiến trúc của JADE
JADE vô cùng linh hoạt và có thể thích hợp với môi trường giới hạn về tài nguyên hệ thống nhƣ các thiết bị di động hỗ trợ Java J2ME- CLDC MIDP 1.0. Nó cũng có thể tích hợp trong kiến trúc phức tạp nhƣ nền tảng.NET hay J2EE.
Về góc độ lập trình thì JADE là phần mềm trung gian tiện lợi cho việc phát triển hệ đa agent, trong đó có:
Một môi trường thực thi của các agent.
Một thƣ viện các lớp sử dụng để phát triển hệ thống đa agent.
Một công cụ đồ hoạ cho phép quản trị và giám sát hoạt động của các agent đang chạy.
Thiết kế phân tầng hệ thống
Dựa trên thƣ viện JADE và mô hình các lớp agent, hệ thống có thể đƣợc thiết kế phân tầng nhƣ trong Hình 4.4.
Hình 4.5: Thiết kế phân tầng hệ thống dựa trên JADE
Trong kiến trúc phân tầng ở Hình 4.5, chức năng của các thành phần có thể mô tả ngắn gọn nhƣ sau:
Tầng cơ sở
o JADE Library: Gồm các agent trong kiến trúc của JADE nhƣ: Main Container, DF Agent, AMS Agent.
o Role Ontology: Xây dựng ontology đơn giản cho hệ thống thương mại Tầng
cơ sở Tầng trung gian Tầng
giao diện
JADE Library Role Ontology
Role Library Role Behavior
Manager Agent
XML Codec
Bidder Auctioner
Bidder GUI Manager GUI Auctioner GUI
Bidder, Money, Price, RoleClient, RoleManager, Sale, Seller, Situation.
Một số cài đặt cho các khái niệm này sẽ đƣợc trình bày trong phụ lục.
o Role Library: Định nghĩa các thành phần của role nhƣ: Requiment, Capacity, Action. Ngoài ra cũng định nghĩa các thành phần phụ nhƣ:
event, exception, registration …
Tầng trung gian
o Role Behavior: định nghĩa chi tiết các hành vi đƣợc gắn cho agent ở tầng trên.
o XML Codec: chuyển định nghĩa role và các nội dung thông điệp (cả các khái niệm trong ontology) sang dạng XML và gửi đi. Theo chiều ngƣợc lại, các message dạng XML sẽ đƣợc giải mã và chuyển cho agent.
o Manager Agent: Cài đặt các chức năng của agent quản lý gồm: Quản lý thƣ viện role, quản lý các agent và thực hiện thuật toán gán role.
o Bidder Agent: Thực hiện các chức năng của agent mua nói chung (chƣa có các hành vi gắn với role cụ thể).
o Auctioner Agent: Thực hiện các chức năng của agent bán nói chung (chƣa có hành vi gắn với role cụ thể).
Tầng giao diện
o Bidder GUI: Xây dựng giao diện cho người mua.
o Auctioner GUI: Xây dựng giao diện cho người bán.
o Manager GUI: Xây dựng giao diện để điều khiển hoạt động của agent quản lý.
Trong các thành phần trên, ngoài việc sử dụng thƣ viện JADE để xây dựng hệ đa agent, hệ thống cũng sử dụng lại một số đoạn chương trình và ý tưởng cài đặt được trình bày trong BRAIN Framework ([4..6]). Cụ thể:
Thành phần Role Ontology: Sử dụng lại các khái niệm đã định nghĩa trong Role System của BRAIN Framework.
Thành phần Role Behavior: Sử dụng lại ý tưởng tổ chức các hành vi của agent theo định nghĩa trong BRAIN Framework.
Thành phần Bidder: Sử dụng chiến lược đấu giá đơn giản với bước giá cố định trong Role System của BRAIN Framework.
Cài đặt hoàn chỉnh hai giao thức đấu giá là: đấu giá kiểu Anh (English Auction) và đấu giá kiểu Hà Lan (Dutch Auction). Ngoài ra các role liên quan đến các kiểu đấu giá khác cũng đã được xây dựng để có thể mở rộng trong tương lai.
Người sử dụng có thể thêm role vào hệ thống, tuy nhiên, với mục tiêu luận văn là tập trung vào mô hình biểu diễn và gán role nên hệ thống chƣa xem xét đến việc thay đổi, lựa chọn chiến lƣợc đấu giá khi gán role cho agent.
Chỉ xem xét mỗi sản phẩm trên một thuộc tính duy nhất là giá. Tuy nhiên, cơ chế đấu giá trên nhiều sản phẩm hoàn toàn có thể cài đặt đƣợc bằng cách thay đổi kiến trúc của mỗi agent mua.
Phần này sẽ giới thiệu một số giao diện kết quả cài đặt hệ thống đa đấu giá. Hình 4.6 mô tả quá trình khởi động Manager Agent trên Server. Trước hết, cần khởi động RoleSystem Server và thêm vào các mô tả cho các role của hệ thống. Sau đó sẽ khởi động Manager Agent bằng cách chạy file ManagerAgent GUI. Manager Agent sẽ đƣợc khởi động và đăng ký với Role Server Agent để nhận role Manager (quản lý chung) nhƣ trong Hình 4.7
Hình 4.6: Khởi động Manager Agent
Hình 4.7: Manager Agent đăng ký và nhận role Manager
Hình 4.8 là quá trình khởi động Auctioner Agent. Khi khởi động, Auctioner Agent trước hết phải được cung cấp thông tin về tên sản phẩm, kiểu đấu giá và giá bán (khởi điểm).
Sau đó, Auctioner Agent sẽ gửi yêu cầu đăng ký đến Manager Agent và nhận role Auctioner tương ứng với kiểu đấu giá đã lựa chọn (Hình 4.9). Phiên đấu giá bắt đầu bằng việc Auctioner Agent liên tục gửi đi các message chờ các trả giá từ phía các Bidder Agent (Hình 4.10).
Hình 4.8: Khởi động Auctioner Agent
Hình 4.9: Đăng ký và gán role cho Auctioner Agent
Hình 4.10: Auctioner Agent chờ trả giá từ phía Bidder Agent
Tiếp theo, các agent Bidder sẽ đƣợc khởi động ở phía Client (Hình 4.11). Sau khi khởi động, Bidder Agent sẽ gửi đăng ký đến Manager Agent, nếu không có ràng buộc nào vi phạm thì Bidder Agent sẽ nhận đƣợc role Bidder và tiếp tục tìm kiếm phiên đấu giá phù hợp (Hình 4.12).
Có thể khởi động cùng một lúc nhiều agent mua với nhiều mức giá tối đa chấp nhận đƣợc khác nhau (Hình 4.13).
Hình 4.11: Khởi động Bidder Agent
Hình 4.12: Gán role cho Bidder Agent
Có thể khởi động cùng một lúc nhiều Bidder Agent để mua cùng một sản phẩm (Hình 4.13). Khi đó, mỗi Bidder Agent sẽ có một ID riêng và đƣợc cấp phát role theo thứ tự đăng ký (Hình 4.14).
Hình 4.13: Khởi động nhiều Bidder Agent
Hình 4.14: Gán role cho nhiều Bidder Agent
Khi các agent đã đƣợc gán role đầy đủ, phiên đấu giá bắt đầu bằng việc Bidder Agent gửi các trả giá đến Auctioner Agent và nghe ngóng các trả giá của Bidder Agent khác trước khi đưa mức giá tiếp theo.
Hình 4.15 là ví dụ với các trả giá trong đấu giá kiểu Anh. Phía Auctioner Agent sử dụng bước giá và liên tục gửi các message đến các Bidder Agent yêu cầu trả giá ở mức giá tiếp theo.
Hình 4.15: Trả giá trong phiên đấu giá kiểu Anh
Hình 4.16: Auctioner đếm thời gian khi không có Bidder nào trả giá cao hơn
Hình 4.17: Kết thúc phiên đấu giá
Trong Hình 4.16, khi không có Bidder Agent nào trả giá cao hơn, Auctioner Agent sẽ đếm ngƣợc cho đến khi kết thúc thời gian của phiên đấu giá và agent trả giá cuối cùng sẽ là agent thắng cuộc. Hình 4.17, các Auctioner và Bidder liên quan đến phiên đấu giá đã kết thúc sẽ tự hủy role và chờ lệnh tiếp theo từ phía người dùng.
4.6 Kết chương
Chương 4 đã trình bày quá trình phân tích thiết kế và cài đặt thử nghiệm hệ thống đa đấu giá với hai dạng đấu giá là đấu giá Anh và đấu giá Hà Lan. Hệ thống đƣợc phân tích dựa trên mô hình role và kỹ thuật gán role đã trình bày trong chương 2 và chương 3. Quá trình thiết kế và cài đặt dựa trên thư viện JADE và sử dụng lại một số ý tưởng trong BRAIN Framework.
Với mục tiêu áp dụng thử nghiệm mô hình role với bộ ba <Q, C, B> và biểu diễn trên XML với thuật toán ARA để gán role cho agent nên hệ thống còn thiếu tính ứng dụng. Tuy nhiên, với thƣ viện role đã có, hệ thống hoàn toàn có thể mở rộng để ứng dụng để ứng dụng trong thực tế.