Mô tả bài toán

Một phần của tài liệu Mô hình tương tác dựa trên role trong hệ đa agent (Trang 77 - 82)

Chương 4 Cài đặt thử nghiệm hệ thống đấu giá

4.1. Mô tả bài toán

Bài toán đặt ra là xây dựng một hệ thống đấu giá tự động cho phép một người muốn bán một mặt hàng nào đó khai báo các thông tin về mặt hàng như tên, mô tả mặt hàng và giá tối thiểu muốn bán mặt hàng đó…. Người muốn mua hàng cũng chỉ cần vào hệ thống và cung cấp tên mặt hàng cần mua, lượng tiền hiện có…Công việc tìm kiếm mặt hàng và thương lượng giữa hai bên mua và bán trong đấu giá sẽ diễn ra tự động. Kết quả trả về cho bên bán là việc đấu giá có thành công hay không, nếu có thì giá bán bao nhiêu. Người mua sau một thời gian sẽ nhận được thông tin về mặt hàng đã mua được và giá phải trả cho mặt hàng đó cùng số tiền còn lại.

Chúng ta sẽ sử dụng framework tương tác BRAIN để phát triển hệ thống đấu giá tự động mà bài toán đã đặt ra. Hệ thống sẽ được cài đặt bằng ngôn ngữ Java trên platform Jade [28]. Trước hết, chúng ta phải xác định một số yếu tố của thương lượng đấu giá là giao thức và chiến lược thương lượng của các Agent.

4.1.1. Giao thức đấu giá kiểu Anh

Có nhiều giao thức đấu giá khác nhau trong đó đấu giá kiểu Anh là giao thức đơn giản và dễ sử dụng hơn cả. Giao thức đấu giá kiểu Anh theo chuẩn FIPA [23] được mô hình hóa dưới dạng lược đồ truyền thông điệp bằng ngôn ngữ đặc tả UML như sau [31]:

Bước 1: Thông báo bắt đầu

Đầu tiên, Agent điều khiển sẽ thông báo bắt đầu cuộc đấu giá tới tất cả các Agent tham gia (bằng thông điệp inform (start-auction, departure, arrival)). Thông điệp này có các tham số là thông báo bắt đầu cuộc đấu giá (start-auction), nơi gửi departure và nơi

nhận arrival. Thông điệp này được phát quảng bá tới tất cả các Agent tham gia.

Hình 4.1. Giao thức đấu giá kiểu Anh FIPA

Bước 2: Chào giá và trả giá

Agent điều khiển đề xuất một giá khởi điểm thấp hơn giá của mặt hàng trên thị trường (bằng thông điệp cfp(initial_price)) và chờ tín hiệu trả giá. Mỗi lần nhận được tín hiệu trả giá, Agent điều khiển lại đề xuất một giá mới cao hơn giá cũ bằng thông điệp

cfp(new_price) và lại tiếp tục chờ cho đến khi thấy tín hiệu chấp nhận trả giá từ một

chứa các thông tin liên quan đến quá trình trả giá nên thường có cấu trúc như sau: “Tôi đề nghị tăng mức giá của mặt hàng X lên giá Z và tôi đảm bảo rằng mình có đủ khả năng để trả giá Z cho mặt hàng X”. Điều này làm cho Agent điều khiển cuộc đấu giá tin tưởng rằng Agent mua thực sự có thể trả giá vừa đặt. Nếu các Agent tham gia không hiểu cấu trúc hoặc ontology của thông điệp cfp thì nó sẽ trả lại một thông điệp not-

understood.

Bước 3: Xác nhận lời trả giá

Agent điều khiển đấu giá sẽ gửi lại cho Agent trả giá một thông điệp chấp nhận accept-

proposal hoặc từ chối reject-proposal lời trả giá.

Bước 4: Lặp lại quá trình đề xuất giá, trả giá và xác nhận

Quá trình đưa giá và trả giá lặp đi lặp lại một số lần cho đến khi không có một Agent tham gia nào chấp nhận giá đưa ra hoặc hết thời gian cuộc đấu giá.

Bước 5: Lựa chọn người thắng cuộc

Khi kết thúc phiên đấu giá, nếu giá được chấp nhận cuối cùng lớn hơn giá sàn thì mặt hàng sẽ được bán, ngược lại cuộc đấu giá coi như thất bại. Agent thắng cuộc được lựa chọn ngẫu nhiên trong số các Agent trả giá cao nhất. Các Agent tham gia sẽ được thông báo kết thúc đấu giá bằng thông điệp inform và người thắng cuộc được yêu cầu thanh

toán cho mặt hàng đã chấp nhận mua bằng thông điệp request. Sau đó, Agent mua và Agent điều khiển đấu giá sẽ bắt đầu quá trình tương tác để thực hiện việc mua và bán.

4.1.2. Chiến lược đấu giá

Trong quá trình đấu giá, việc tìm kiếm Agent điều khiển đấu giá đối với Agent bán là khá đơn giản. Seller chỉ cần lập danh sách các Auctioneer đang hoạt động và sau đó chọn ngẫu nhiên một Auctioneer để yêu cầu rao bán mặt hàng. Trong phần này, chúng ta chỉ tập trung vào thiết kế chiến lược cho Bidder và Auctioneer.

4.1.2.1. Chiến lược cho Agent điều khiển đấu giá ( Auctioneer)

Ngay khi nhận được yêu cầu rao hàng của bên bán Seller, Auctioneer căn cứ vào giá sàn mà Seller đưa ra để quyết định giá khởi điểm. Ở đây, chúng tôi chọn giá khởi điểm chính bằng giá sàn. Bởi Seller sẽ không bán mặt hàng với giá thấp hơn giá sàn nên việc đấu giá với các mức giá nhỏ hơn giá sàn là không cần thiết. Việc điều khiển đấu giá sẽ được thực hiện theo thuật toán sau [42]:

Hình 4.2. Thuật toán quyết định của Auctioneer.

Giá sẽ được tăng dần theo một số hữu hạn các mức rời rạc. Giả sử rằng có m+1 mức giá rời rạc, L0< L1<..<Lm. Tồn tại một gia số I (do hệ thống hoặc người phát triển quyết định) để tính giá tại mỗi mức. Có nhiều cách thức tính giá khác nhau, ở đây chúng tôi lựa chọn công thức tính giá tại mức i theo giá mức i-1 như sau:

Li = Li-1 (1+I) i=1,2,..,m; I=(0,1)

Ở mức giá đầu tiên, Auctioneer sẽ chờ trong khoảng thời gian TO2 để nhận lời trả giá đầu tiên. Hết thời gian này mà không có Bidder nào trả giá, cuộc đấu giá sẽ kết thúc mà không bán được hàng. Ngược lại, cuộc đấu giá tiếp tục với các mức giá tiếp theo. Với mỗi mức giá agent điều khiển đấu giá đưa ra, các Bidder sẽ có một khoảng thời gian tối đa TO3 để đưa ra lời trả giá (xác nhận nó sẵn sàng trả giá mà Agent điều khiển đưa ra). Ngay khi nhận được tín hiệu trả giá đầu tiên cho mức giá đã chào, Auctioneer sẽ ghi nhận Bidder vừa trả giá là Agent thắng cuộc tạm thời

L0=reverse;

while (t < tmax) and (Có người trả giá đã đề xuất)

{

Tính toán giá đề xuất cho mức mới theo công thức:

Li=Li-1(1+I);

Gửi đề xuất giá tới các Bidder có yêu cầu. Nhận lời trả giá.

Chọn Bidder chiến thắng tạm thời }

và chuyển sang mức giá tiếp theo. Phiên đấu giá kết thúc khi hết thời gian timeout TO3 mà không có Bidder nào sẵn sàng trả giá. Bidder thắng cuộc ở mức giá trước đó sẽ là Bidder thắng cuộc cuối cùng. Mặt hàng sẽ được bán với giá mà Bidder thắng cuộc đã trả.

4.1.2.2. Chiến lược trả giá cho Bidder

Trước khi mô tả khung quyết định, chúng ta cần phải đề cập chi tiết một số giả thiết về môi trường. Thứ nhất, chúng ta chỉ xem xét giao thức đấu giá kiểu Anh. Thứ hai, mọi cuộc đấu giá đều có thời gian bắt đầu Ts và thời gian kết thúc Te cho trước. Thứ ba, mọi agent trả giá đều có một thời hạn cứng tmax, đến thời điểm đó agent phải mua được mặt hàng mà người dùng yêu cầu. Giả thiết cuối cùng, agent không được phép mua quá số lượng mặt hàng người dùng mong muốn. Sàn đấu giá mà chúng ta mô phỏng có nhiều cuộc đấu giá kiểu Anh diễn ra đồng thời. Mỗi cuộc đấu giá có một vài bidder tham gia.

Khi Bidder nhận được yêu cầu mua mặt hàng từ người dùng, nó sẽ hoạt động theo thuật toán ở Hình 4.3 [39] với t là thời điểm hiện tại.

Bidder sẽ tạo lập một danh sách các cuộc đấu giá đang hoạt động (những cuộc đấu giá đã qua thời điểm bắt đầu nhưng chưa đến thời điểm kết thúc), kí hiệu là L(t) và thu thập thông tin liên quan, ví dụ như thời điểm bắt đầu, kết thúc, mặt hàng đang rao bán…Sau đó, Bidder sẽ tính toán giá tối đa hiện tại current maximum

Hình 4.3. Thuật toán đấu giá của Bidder

Về lý thuyết, giá tối đa hiện tại current maximum bid phải nhỏ hơn hoặc

bằng số tiền mà Bidder hiện có. Tiếp đó, Bidder chọn lựa trong danh sách các cuộc đấu giá đang hoạt động L(t) để tìm ra danh sách các cuộc đấu giá tiềm năng, tức là những cuộc đấu giá có bán mặt hàng cần mua. Bidder sẽ chọn ngẫu nhiên trong danh sách tiềm năng này một cuộc đấu giá đích để tham gia trả giá. Quá trình trả giá được lặp đi lặp lại nhiều lần cho tới khi mua thành công hoặc Auctioneer đưa ra vượt quá số tiền mà Bidder đó có. Trong trường hợp chưa mua được hàng, Bidder sẽ quay lại bước tìm kiếm các cuộc đấu giá đang diễn ra. Cứ như vậy, Bidder sẽ chỉ kết thúc khi mua được hàng hoặc hết thời gian tồn tại cho phép.

Một phần của tài liệu Mô hình tương tác dựa trên role trong hệ đa agent (Trang 77 - 82)

Tải bản đầy đủ (PDF)

(118 trang)