Đấu giá là một hình thức thương lượng phổ biến trên Internet. Phiên đấu giá thường có sự tham gia của những thực thể sau:
Người bán (Seller): Đây là người cung có sản phẩm muốn bán. Người bán
có quyền thiết lập giá sàn, giá tối thiểu mà họ muốn bán hàng hoá của mình.
Người mua (Bidder): Là những người có mối quan tâm đến một hàng hóa
nào đó. Nếu họ tìm thấy hàng hóa mình cần ở một cuộc đấu giá nào đó, họ sẽ đăng ký để được trả giá. Căn cứ vào khả năng cũng như hứng thú của họ với hàng hóa, họ có thể đặt giá cho hàng hóa. Nếu họ trả giá cao nhất trong số những người đặt giá thì đương nhiên họ là người thắng cuộc và mua được hàng.
Người điều khiển đấu giá (Auctioneer): Người điều khiển có vai trò trung
gian giữa bên mua và bên bán và là người thực sự thực hiện phiên đấu giá. Người này có thể có quyền xác lập các thông số cho cuộc đấu giá như thời gian bắt đầu, kết thúc, giá khởi điểm…
Cách thức tương tác giữa người mua, người bán và người điều khiển đấu giá thường không phụ thuộc vào một ứng dụng hay môi trường cụ thể. Do đó, có thể coi những thực thể này chính là những role của hệ thống.
Theo quan điểm của mô hình tương tác BRAIN (đã trình bày trong chương 3), role sẽ được mô tả bởi tập các khả năng và hành vi. Thông thường, đối với hai role thường xuyên trao đổi thì hành động của role này sẽ tương ứng với một sự kiện của role kia và ngược lại. Trong ứng dụng cụ thể này, các hành động của role Bidder chính là các sự kiện của role Auctioneer và ngược lại. Hành động của Seller cũng tương ứng với sự kiện mà Auctioneer quản lý và ngược lại, một số hành động của Auctioneer sẽ tương ứng với sự kiện của Seller. Thông thường, chỉ có Auctioneer làm vai trò trung gian, trao đổi với cả Seller và Bidder còn bản thân hai thành phần này không bao giờ trao đổi trực tiếp với nhau. Sau đây là định nghĩa các role chính của hệ thống:
Role Seller: Hành động chính:
reqSale: Yêu cầu được rao bán hàng trên hệ thống, gửi cho Auctioneer.
putOnSale: Đưa hàng hóa cần bán vào phiên đấu giá bao gồm việc thiết đặt mã số cho hàng hóa, đặt giá sàn và các thông tin mô tả về hàng hóa. Bên nhận vẫn là Auctioneer.
Sự kiện chính:
saleAccepted/saleRefused: Từ chối hoặc chấp nhận đăng ký bán hàng nhận được từ Auctioneer.
unSold: Thông báo từ auctioneer rằng hàng không thể bán được
pay: Auction gửi thông báo về số tiền bán sản phẩm.
Role Bidder:
Các hành động:
askGood: Hỏi Auctioneer thông tin về các sản phẩm đang được chào bán.
askSituation: Hỏi Auctioneer về tình trạng hiện thời của cuộc đấu giá.
bid: Trả giá, gửi Auctioneer thông điệp sẵn sàng trả giá mà Auctioneer đã đưa ra cho sản phẩm.
pay: Trả tiền cho Auctioneer để mua sản phẩm.
Các sự kiện chính:
notifyGood: Thông báo của Auctioneer về các sản phẩm đang được chào bán.
notifySituation: Auctioneer thông báo tình hình hiện tại của cuộc đấu giá tới những Bidder có yêu cầu.
auctionOver: Thông báo kết thúc cuộc đấu giá từ phía Auctioneer.
youWon: Thông báo từ Auctioneer cho biết Bidder nhận là người thắng cuộc.
giveGood: Auctioneer gửi sản phẩm cho Bidder thắng cuộc.
Role Auctioneer: Các hành động chính:
saleAccepted/saleRefused: Chấp nhận/Từ chối yêu cầu được rao bán sản phẩm của Seller.
unSold: Thông báo không bán được hàng mà Seller đã chào bán.
pay: Trả tiền cho Seller.
notifyGood: Thông báo cho Bidder có yêu cầu về các sản phẩm đang được chào bán.
notifySituation: Thông báo về tình trạng hiện thời của cuộc đấu giá tới Bidder có yêu cầu.
youWon: Thông báo thắng cuộc cho Bidder được lựa chọn thắng cuộc.
auctionOver: Thông báo kết thúc cuộc đấu giá tới các Bidder trả giá không thành công.
giveGood: Giao sản phẩm cho Bidder thắng cuộc.
Các sự kiện chính:
reqSale: Yêu cầu được rao bán sản phẩm của Seller nào đó.
putOnSale: Thông báo đưa sản phẩm vào đấu giá.
askGood: Bidder hỏi về các sản phẩm được chào bán.
askSituation: Bidder hỏi về tình trạng hiện thời của cuộc đấu giá.
bid: Lời trả giá từ các Bidder.
pay: Bidder thắng cuộc trả tiền cho Auctioneer để mua sản phẩm
Công việc đầu tiên khi tiến hành phát triển một hệ đa agent dựa trên role là xác định các role của hệ thống một cách chính xác và đầy đủ nhất. Trong các phương pháp dựa trên role, các chức năng hoạt động chính của hệ thống không còn
thuộc về Agent mà nằm hoàn toàn ở role. Do vậy, role là thành phần quan trọng nhất của hệ thống đấu giá trực tuyến trong phần thực nghiệm này. Việc đầu tiên cần làm là xác định đầy đủ các role của hệ thống và sau đó là thiết kế role để phục vụ cho việc cài đặt.
3.4.2. Đặc tả role
Với những phân tích và thiết kế ở phần trên, các role sẽ được đặc tả bằng tập kí hiệu XRole. Sau đây là định nghĩa các role chính của hệ thống Bidder, Seller và Auctioneer.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="role.xsl"?>
<ROLE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="role.xsd"> <ROLE_NAME>Seller</ROLE_NAME>
<DESCRIPTION>role to make resources available</DESCRIPTION> <KEYWORD>seller</KEYWORD>
<ACTIONS>
<ACT_NAME>ReqOnSale</ACT_NAME>
<DESCRIPTION>Request to put the good on sale</DESCRIPTION> <PARA> <PAR_NAME>reciever</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> </ACTIONS> <ACTIONS> <ACT_NAME>putGoodOnSale</ACT_NAME>
<DESCRIPTION>Put the good to be sold on sale</DESCRIPTION> <PARA> <PAR_NAME>Good_ID</PAR_NAME> <TYPE>String</TYPE> </PARA> <PARA> <PAR_NAME>Description</PAR_NAME> <TYPE>String</TYPE> </PARA> </ACTIONS> ... <EVENTS> <EVE_NAME>pay</EVE_NAME>
<DESCRIPTION>payment from the auctioneer</DESCRIPTION> <PARA> <PAR_NAME>reciever</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>content</PAR_NAME> <TYPE>String</TYPE> </PARA> </EVENTS> </ROLE> Hình 3.10. Đặc tả role Seller
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="role.xsl"?>
<ROLE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="role.xsd"> <ROLE_NAME>Auctioneer</ROLE_NAME>
<DESCRIPTION>role to control the auctions</DESCRIPTION> <KEYWORD>Auctioneer</KEYWORD>
<ACTIONS>
<ACT_NAME>notifyGood</ACT_NAME>
<DESCRIPTION>notify bidders the current goods on sale</DESCRIPTION> <PARA> <PAR_NAME>reciever</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>content</PAR_NAME> <TYPE>string</TYPE> </PARA> </ACTIONS> <ACTIONS> <ACT_NAME>notifySituation</ACT_NAME>
<DESCRIPTION>notify bidders the situation</DESCRIPTION> <PARA> <PAR_NAME>reciever</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>content</PAR_NAME> <TYPE>string</TYPE> </PARA> </ACTIONS> ... <EVENTS> <EVE_NAME>askSituation</EVE_NAME>
<DESCRIPTION>ask the current auction situation</DESCRIPTION> <PARA> <PAR_NAME>sender</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>content</PAR_NAME> <TYPE>string</TYPE> </PARA> </EVENTS> <EVENTS> <EVE_NAME>bid</EVE_NAME>
<DESCRIPTION>bid from the bidders</DESCRIPTION> <PARA> <PAR_NAME>sender</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>content</PAR_NAME> <TYPE>string</TYPE> </PARA> </EVENTS> </ROLE> Hình 3.11. Đặc tả role Auctioneer.
<?xml version="1.0"?>
<ROLE xsi:schemaLocation="role.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ROLE_NAME>bidder</ROLE_NAME>
<DESCRIPTION>role to attend the auction to make a bid for the good interested</DESCRIPTION>
<KEYWORD>bidder</KEYWORD> <ACTIONS>
<ACT_NAME>askSituation</ACT_NAME>
<DESCRIPTION> used to ask Auctioneer about the current price </DESCRIPTION> <PARA> <PAR_NAME>addressee</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> </ACTIONS> <ACTIONS> <ACT_NAME>bid</ACT_NAME>
<DESCRIPTION>make a bid for the good interested</DESCRIPTION> <PARA> <PAR_NAME>addressee</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> <PARA> <PAR_NAME>Price</PAR_NAME> <TYPE>string</TYPE> </PARA> </ACTIONS> <EVENTS> <EVE_NAME>notifySituation</EVE_NAME>
<DESCRIPTION> Auctioneer notify bidders situation </DESCRIPTION> <PARA> <PAR_NAME>Price</PAR_NAME> <TYPE>string</TYPE> </PARA> </EVENTS> <EVENTS> <EVE_NAME>youWon</EVE_NAME>
<DESCRIPTION>Auctioneer notify winning bidders the win</DESCRIPTION> <PARA> <PAR_NAME>winner</PAR_NAME> <TYPE>AgentID</TYPE> </PARA> </EVENTS> </ROLE> Hình 3.12. Đặc tả role Bidder 3.5. Kết chương
Chương này trước hết khảo sát chi tiết phương pháp BRAIN trong việc mô hình hóa tương tác đa Agent dựa trên role, sau đó trình bày đặc tả các role của hệ đấu giá tự động dựa trên các agent đại diện cho người dùng.
4. Chương 4. Cài đặt thử nghiệm hệ thống đấu giá
Trong chương này, chúng tôi sẽ trình bày một số bước cơ bản để phát triển một hệ thống cụ thể theo mô hình tương tác dựa trên role BRAIN như đã giới thiệu ở Chương 3. Hệ thống mà chúng ta cần phát triển ở đây là một hệ thống đấu giá tự động với các chức năng tương tự các sàn đấu giá thực. Điểm khác biệt là việc đấu giá diễn ra giữa các thành phần tham gia là các Agent, đại diện cho những người thật trong thực tiễn.