source: src/main/java/agents/anac/y2010/AgentSmith/AgentSmith.java@ 345

Last change on this file since 345 was 1, checked in by Wouter Pasman, 6 years ago

Initial import : Genius 9.0.0

File size: 3.5 KB
Line 
1package agents.anac.y2010.AgentSmith;
2
3import genius.core.Agent;
4import genius.core.Bid;
5import genius.core.SupportedNegotiationSetting;
6import genius.core.actions.Accept;
7import genius.core.actions.Action;
8import genius.core.actions.Offer;
9import genius.core.utility.AdditiveUtilitySpace;
10
11/**
12 * ANAC2010 competitor Agent Smith.
13 */
14public class AgentSmith extends Agent {
15 private PreferenceProfileManager fPreferenceProfile;
16 private ABidStrategy fBidStrategy;
17 private BidHistory fBidHistory;
18
19 // Some possible requirements for the bayes agent
20
21 // private ArrayList<Bid> ourPreviousBids;
22
23 private boolean firstRound = true;
24 private double sMargin = 0.9;
25
26 /**
27 * The version of this agent
28 *
29 * @return
30 */
31 @Override
32 public String getVersion() {
33 return "3"; //
34 }
35
36 @Override
37 public String getName() {
38 return "Agent Smith";
39 }
40
41 /**
42 * The agent will be initialized here.
43 */
44 @Override
45 public void init() {
46
47 fBidHistory = new BidHistory();
48 fPreferenceProfile = new PreferenceProfileManager(fBidHistory,
49 (AdditiveUtilitySpace) this.utilitySpace);
50 fBidStrategy = new SmithBidStrategy(fBidHistory,
51 (AdditiveUtilitySpace) this.utilitySpace, fPreferenceProfile,
52 getAgentID());
53 }
54
55 /**
56 * This is called when a action was done, by the other agent.
57 */
58 @Override
59 public void ReceiveMessage(Action pAction) {
60 /*
61 * Leaving it for now, to prevent it from breaking but it can be
62 * replaced with:
63 */
64
65 if (pAction == null)
66 return;
67
68 if (pAction instanceof Offer) {
69 Bid lBid = ((Offer) pAction).getBid();
70
71 fBidHistory.addOpponentBid(lBid);
72 fPreferenceProfile.addBid(lBid);
73 }
74
75 }
76
77 /**
78 * When we take turn, this function is invoked.
79 */
80 @Override
81 public Action chooseAction() {
82 Bid currentBid = null;
83 Action currentAction = null;
84 try {
85 if (fBidHistory.getOpponentLastBid() != null && utilitySpace
86 .getUtility(fBidHistory.getOpponentLastBid()) > sMargin) {
87 // bid higher then margin
88 currentAction = new Accept(getAgentID(),
89 fBidHistory.getOpponentLastBid());
90 } else {
91 // start with the highest bid
92 if (firstRound && (fBidHistory.getMyLastBid() == null)) {
93 firstRound = !firstRound;
94 currentBid = getInitialBid();
95 currentAction = new Offer(getAgentID(), currentBid);
96 Bid lBid = ((Offer) currentAction).getBid();
97 fBidHistory.addMyBid(lBid);
98
99 } else {
100
101 // the utility of the opponents' bid is higher then ours ->
102 // accept!
103 double utilOpponent = this.utilitySpace
104 .getUtility(fBidHistory.getOpponentLastBid());
105 double utilOur = this.utilitySpace
106 .getUtility(fBidHistory.getMyLastBid());
107 if (utilOpponent >= utilOur) {
108 currentAction = new Accept(getAgentID(),
109 fBidHistory.getOpponentLastBid());
110 } else {
111 // should be rewritten into something else...
112 currentAction = fBidStrategy
113 .getNextAction(timeline.getTime());
114 if (currentAction instanceof Offer) {
115 Bid lBid = ((Offer) currentAction).getBid();
116 fBidHistory.addMyBid(lBid);
117 }
118 }
119 }
120 }
121 } catch (Exception e) {
122 e.printStackTrace();
123 }
124
125 return currentAction;
126 }
127
128 /*
129 * Get the initial bid, with the highest utility
130 */
131 private Bid getInitialBid() throws Exception {
132 return this.utilitySpace.getMaxUtilityBid();
133 }
134
135 @Override
136 public SupportedNegotiationSetting getSupportedNegotiationSetting() {
137 return SupportedNegotiationSetting.getLinearUtilitySpaceInstance();
138 }
139
140 @Override
141 public String getDescription() {
142 return "ANAC2010";
143 }
144
145}
Note: See TracBrowser for help on using the repository browser.