Kết thúc phiên đấu giá

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Hệ đa agent mở dựa trên mô hình role và tổ chức (Trang 69 - 79)

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ế.

KẾT LUẬN

Nội dung luận văn đã trình bày các vấn đề:

 Tổng quan về hệ đa agent mở, các khái niệm đặc trƣng và các vấn đề đặt ra khi phát triển hệ đa agent mở.

 Role và tổ chức đa agent dựa trên role, vai trò của role trong thiết kế hệ đa agent mở.

 Tìm hiểu các cách tiếp cận mô hình hóa role trong hệ đa agent mở. Xây dựng mô hình role với bô ba <Q, C, B>. Mở rộng mô hình này để xây dựng các quan hệ trên tập role.

 Tìm hiểu các cách tiếp cận trong việc gán role cho agent. Xây dựng thuật toán ARA để gán role cho agent trong mô hình tổ chức thƣơng mại điện tử với agent lãnh đạo.

 Thử nghiệm mô hình role và thuật toán gán role trong hệ thống đa đấu giá với hai kiểu đấu giá cơ bản là đấu giá Anh và đấu giá Hà Lan.

Một số vấn đề cần tiếp tục mở rộng nghiên cứu :

 Xem xét đầy đủ và chi tiết về các quan hệ khác trên tập role.

 Tiếp tục phát triển hệ thống đa đấu giá trong đó xem xét đấu giá trên nhiều thuộc tính và các chiến lƣợc đấu giá để có một hệ thống có tính ứng dụng thực tiễn.

 Cải tiến và áp dụng thuật toán gán role ARA cho nhiều mô hình tổ chức khác nhau, xem xét áp dụng cho hệ thống có các agent di động (mobile agent).

TÀI LIỆU THAM KHẢO

[1] Ben-Ameur, H., Chaib-draa, B. and Kropf, P. (2002), “Multi-item Auctions for Automatic Negotiation”, Journal of Information and Software Technology,

44:291--301, 2002.

[2] Cabri, G., Ferrari, L., Leonardi, L. (2004), ―Agent Role-based Collaboration and

Coordination: A Survey about existing Approaches”,

http://agentgroup.ing.unimo.it/MOON/papers/pdf/SMC04.pdf.

[3] Cabri, G., Leonardi, L., Zambonelli, F. (2003) ―Role-based Interaction

Infrastructures for Internet Agents”,

http://agentgroup.ing.unimo.it/MOON/papers/pdf/TIS03.pdf

[4] Cabri, G., Leonadi, L., Zambonelli, F. (2003), “XRole: XML Roles for agent Interaction”,

http://www.ofai.at/research/agents/conf/at2ai3/final/at2ai3Cabri.pdf.gz

[5] Cabri, G. (2006), “Agent Composition via role-based infrastructures”, Scalable

Computing: Practice and Experience, Vol. 7, No. 1, pp. 37-47, ISSN: 1895-1767, March 2006.

[6] Cabri, G., Ferrari, L., Leonardi, L. (2004), ―Rethinking agent roles: Extending the

role definition in the BRAIN Framework”, SMC (6) 2004: 5455-5460.

[7] Robichez de Carvalho, G., Paes, R., Lucena, C. (2005), “Extensions on Interaction Laws in Open Multi-Agent Systems”, http://www.les.inf.puc- rio.br/seas2005/file/gCarvalho.pdf

[8] Dang, V. D., Jennings, N. R. (2003), “Optimal clearing algorithms for multi-unit

single-item and multi-unit combinatorial auctions with demand/supply function bidding.”, ICEC 2003, Pittsburgh, Pennsylvania, USA.

[9] DeLoach, S.A. (2006), “Engineering Organization-Based Multiagent System”, SELMAS 2005, pp.109-125, 2006.

[10] DeLoach, S.A., Garcia-Ojeda, J.C., Oyenan, W.H., Velenzuela, J. (2006) “O- MaSE: A Customizable Approach to Developing Multiagent Development Process”, http://macr.cis.ksu.edu/publications/AOSE_07_OMaSE.pdf

[11] DeLoach, S.A., (2007), “Developing a Multiagent Conference Management System Using the O-MaSE Process Framework”, AOSE 2007: 168-181

[12] Dastani, M., Riemsdijk, M. B., Hulstijin, J., Dignum, F., Meyer, J. C. (2004)

“Enacting and Deacting Roles in Agent Programming”, In Proc. of the 5th Int. Workshop on AOSE, page 3382, 2004.

[13] Dastani, M., Dignum, V., Dignum, F. (2005), “Role-Assignment in Open Agent Societies”, in Proceedings of AAMAS'03.

[14] Juan T., Pearce, A, Sterling, L., (2002), ―ROADMAP: Extending the Gaia

Methodology for Complex Open Systems”, Proceedings of the 2002 Autonomous

Agents and Multi-Agent Systems .,

[15] Horling, B., Lesser, V., (2005) “A Survey of Multi-agent Organizational Paradigms”, The Knowledge Engineering Review, Volume 19, Number 4,

Cambridge University Press, pp. 281-316. 2005.

[16] Huynh, T. D., Jennings, N. R., and Shadbolt, N.R., (2006) ―An integrated trust

and reputation model for open multi-agent systems”, Journal of Autonomous

Agents and Multi-Agent Systems, 13 (2). pp. 119-154. ISSN 1387-2532

[17] van Eijk, R. M., de Boer, F. S., van der Hoek W., and Meyer, J. C., (2000)“Open

Multi-Agent Systems: Agent Communication and Integration”,

http://eprints.kfupm.edu.sa/55845/1/55845.pdf

[18] Karageogos, A., Thompson, S., Mehandjiev, N., (2003),“Specifying reuse

concerns in agent system design using a role algebra”, In: Agent Technologies,

Infrastructures, Tools, and Applications for e-Services. Lecture Notes in Artificial Intelligence LNAI, 2592. Springer-Verlag. ISBN 3-540-00742-3. [19] Kendall, E. A., (2001), “Agent roles and role models: New abtractions for

intelligent agent systems analysis and design”,

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.51.6919&rep=rep1&ty pe=pdf

[20] Odell, J., Parunak, H.V.D., Brueckner, S., Sauter, J., (2003), “Changing roles: Dynamic role assignment”, Journal of Object Technology, 2 (5) (2003) 77-86

[21] Odell, J., Nodine, M., Levy, R., (2005) “A Metamodel for Agents, Roles and Groups”, In Procs of Agent Oriented Software Engineering Workshop

(AOSE2004), 2005.

[22] Odell, J., Parunak, H.V.D., Fleischer, M., (2004) “The role of roles in designing

effective agent organizations”, In Software Engineering for Large-Scale Multi-

Agent Systems, LNCS 2603, pages 27—38.

[23] Xu, H., Zhang, X., (2005), “A Methodology for role-based modelling of open multi-agent software system”, In Proceedings of the 7th International Conference on Enterprise Information Systems (ICEIS 2005).

[24] Xu, H., Zhang, X., Patel, R. J., (2007), ―Developing role-based open multi-agent software systems‖, Int. J. Comput. Intell. Theory Pract. 2, No. 1, 39-56.

[25] Zambonelli, F., Jennings , N. R., Wooldridge, M., (2003) ―Developing

multiagent systems: The Gaia methodology”, ACM Transactions on Software

PHỤ LỤC

Phần phụ lục sẽ giới thiệu một số đoạn chƣơng trình định nghĩa các khái niệm trong Ontology của hệ thống đa đấu giá trên ngôn ngữ Java. Trong các khái niệm này, ngoài việc định nghĩa các thuộc tính đặc trƣng, chƣơng trình cũng bổ sung các hàm mã hóa và giải mã khái niệm khi gửi và nhận message dạng XML.

1. Price

package rolesystem.roles.auction; import java.io.Serializable;

public class Price implements Serializable {

private double amount; private String currency; private Price()

{ }

public Price(double amount, String currency) {

this.amount=amount;

this.currency=currency;

}

public double getAmount() {

return amount;

}

public String getCurrency() {

return currency;

}

public String toString() {

return new String(amount+" "+currency);

}

public String encodeXML(){

public static Price decode(String code){ Price price=new Price();

int amount_length=6; int f_amount=code.indexOf("<amount>")+amount_length+2; String amount=code.substring(f_amount,code.indexOf("</amount>",f_amount)); int currency_length=8; int f_currency=code.indexOf("<currency>")+currency_length+2; String currency=code.substring(f_currency,code.indexOf("</currency>",f_currency)); return new Price(Double.valueOf(amount), currency);

}

public static void main(String[]args){

Price price=Price.decode("<amount>10</amount><currency>VND</currency>"); System.out.println(price); } } 2. Bidder package rolesystem.roles.auction; import rolesystem.core.RoleAction; import rolesystem.roles.KnownEvent; public abstract class Bidder

{

public static final String ROLE_ID="auction.Bidder";

public static final KnownEvent KE_notifyKind=new KnownEvent("notifyKind",

Auctioner.ROLE_ID, String.class);

public static final KnownEvent KE_notifyGood=new KnownEvent("notifyGood",

Auctioner.ROLE_ID, String.class);

public static final KnownEvent KE_notifySituation=new

KnownEvent("notifySituation", Auctioner.ROLE_ID, Situation.class);

public static final KnownEvent KE_auctionOver=new KnownEvent("auctionOver", Auctioner.ROLE_ID);

public static final KnownEvent KE_youWon=new KnownEvent("youWon",

Auctioner.ROLE_ID, Price.class);

public static final KnownEvent KE_giveGood=new KnownEvent("giveGood",

Auctioner.ROLE_ID, java.io.Serializable.class);

public static final KnownEvent KE_talk=new KnownEvent("talk", Bidder.ROLE_ID, String.class);

return new RoleAction("askKind", addressee); }

public static RoleAction askGood(int addressee) {

return new RoleAction("askGood", addressee);

}

public static RoleAction askSituation(int addressee) {

return new RoleAction("askSituation", addressee);

}

public static RoleAction bid(int addressee, Price content) {

return new RoleAction("bid", addressee, content.encodeXML()); }

public static RoleAction pay(int addressee, Money content) {

return new RoleAction("pay", addressee, content);

}

public static RoleAction talk(int addressee, String content) {

return new RoleAction("talk", addressee, content);

} } 3. Auctioner package rolesystem.roles.auction; import rolesystem.core.RoleAction; import rolesystem.roles.KnownEvent;

public abstract class Auctioner {

public static final String ROLE_ID="auction.Auctioneer";

public static final KnownEvent KE_reqSale=new KnownEvent("reqSale",

Seller.ROLE_ID);

public static final KnownEvent KE_putOnSale=new KnownEvent("putOnSale",

Seller.ROLE_ID, String.class);

Bidder.ROLE_ID);

public static final KnownEvent KE_askSituation=new KnownEvent("askSituation", Bidder.ROLE_ID);

public static final KnownEvent KE_bid=new KnownEvent("bid", Bidder.ROLE_ID, String.class);

public static final KnownEvent KE_pay=new KnownEvent("pay", Bidder.ROLE_ID, Money.class);

public static RoleAction saleAccepted(int addressee) {

return new RoleAction("saleAccepted", addressee);

}

public static RoleAction saleRefused(int addressee) {

return new RoleAction("saleRefused", addressee);

}

public static RoleAction unsold(int addressee) {

return new RoleAction("unsold", addressee);

}

public static RoleAction pay(int addressee, Money content) {

return new RoleAction("pay", addressee, content);

}

public static RoleAction notifyKind(int addressee, String content) {

return new RoleAction("notifyKind", addressee, content);

}

public static RoleAction notifyGood(int addressee, String content) {

return new RoleAction("notifyGood", addressee, content);

}

public static RoleAction notifySituation(int addressee, Situation content) {

return new RoleAction("notifySituation", addressee, content);

public static RoleAction auctionOver(int addressee) {

return new RoleAction("auctionOver", addressee);

}

public static RoleAction youWon(int addressee, Price content) {

return new RoleAction("youWon", addressee, content);

}

public static RoleAction giveGood(int addressee, java.io.Serializable content) {

return new RoleAction("giveGood", addressee, content);

} }

4. Sale

package rolesystem.roles.auction; import java.io.Serializable;

public class Sale implements Serializable { private Price reserve;

private String goodDesc; private Serializable good; private Sale() {

}

public Sale(Price reserve, String goodDesc, Serializable good) { this.reserve = reserve;

this.goodDesc = goodDesc; this.good = good;

}

public Price getReserve() { return reserve;

}

public String getGoodDesc() { return goodDesc;

}

public Serializable getGood() { return good;

}

public String encodeXML() {

return "<reserve>" + getReserve().encodeXML() + "</reserve>\n" + "<good_desc>" + getGoodDesc() + "</good_desc>\n" + "<good>" + getGood() + "</good>";

}

public static Sale decode(String code) { Sale sale = new Sale();

int reserve_length = 7;

int f_reserve = code.indexOf("<reserve>") + reserve_length + 2;

String reserve = code.substring(f_reserve, code.indexOf("</reserve>",

f_reserve));

int good_desc_length = 9;

int f_good_desc = code.indexOf("<good_desc>") + good_desc_length + 2;

String good_desc = code.substring(f_good_desc, code.indexOf("</good_desc>", f_good_desc));

int good_length = 4;

int f_good = code.indexOf("<good>") + good_length + 2;

String good= code.substring(f_good, code.indexOf("</good>", f_good)); Price price=Price.decode(reserve);

return new Sale(price,good_desc,good); }

}

5. Money

package rolesystem.roles.auction;

import java.io.Serializable;

public class Money implements Serializable {

private Price amount;

private Money() {

}

public Money(Price amount) {

}

public Price getAmount() {

return amount;

}

// XML encode

public String encodeXML(){

return getAmount().encodeXML(); }

public static Money decode(String code){ return new Money(Price.decode(code)); }

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Hệ đa agent mở dựa trên mô hình role và tổ chức (Trang 69 - 79)

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

(79 trang)