source: src/main/java/agents/anac/y2016/maxoops/DMComponent.java

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

Initial import : Genius 9.0.0

File size: 2.5 KB
Line 
1/*
2 * Author: Max W. Y. Lam (Aug 1 2015)
3 * Version: Milestone 1
4 *
5 * */
6
7package agents.anac.y2016.maxoops;
8
9import genius.core.Bid;
10import genius.core.actions.Accept;
11import genius.core.actions.Offer;
12import genius.core.timeline.TimeLineInfo;
13import genius.core.utility.AbstractUtilitySpace;
14import genius.core.utility.AdditiveUtilitySpace;
15
16public class DMComponent {
17
18 MaxOops agent;
19 TimeLineInfo timeline;
20 AbstractUtilitySpace utilitySpace;
21
22 public OPTComponent bidsOpt;
23
24 public DMComponent(MaxOops agent, AbstractUtilitySpace utilitySpace,
25 TimeLineInfo timeline) {
26 this.agent = agent;
27 this.utilitySpace = utilitySpace;
28 this.timeline = timeline;
29 this.bidsOpt = new OPTComponent(agent,
30 (AdditiveUtilitySpace) utilitySpace);
31 }
32
33 public boolean termination() {
34 double time = timeline.getTime();
35 double lastBidUtil = utilitySpace.getUtility(agent.lastBid);
36 if (agent.delta == 1)
37 return false;
38 if (time >= 0.9985 + agent.delta * 0.0008 && lastBidUtil <= agent.theta) {
39 return true;
40 }
41 if (agent.TFC.lf_slope < agent.theta
42 / Math.pow(agent.delta, timeline.getTime() * agent.theta)) {
43 return true;
44 }
45 return false;
46 }
47
48 public boolean acceptance() {
49 double time = timeline.getTime();
50 double f_thre = agent.TFC.thresholdFunc();
51 if (time >= 0.9985 + agent.delta * 0.0008)
52 return true;
53 int conflict = (agent.opponentsMaxNumDistinctBids - agent.opponentsMinNumDistinctBids)
54 + (agent.opponentsMaxNumDistinctAccepts - agent.opponentsMinNumDistinctAccepts);
55 if (conflict < agent.numParties
56 && agent.prevLastAction instanceof Offer) {
57 return false;
58 }
59 if (time > 0.5 && agent.myLastAction instanceof Accept) {
60 return false;
61 } else {
62 double lastBidUtil = utilitySpace.getUtility(agent.lastBid);
63 if (agent.prevLastAction instanceof Accept) {
64 lastBidUtil /= Math.pow(agent.delta * 0.95, agent.delta * time);
65 }
66 if (time < agent.delta * 0.9) {
67 if (Math.min(f_thre * Math.pow(agent.delta, time / 5.),
68 agent.uqUtil + agent.stdUtil) <= lastBidUtil) {
69 return true;
70 }
71 return false;
72 }
73 if (f_thre * Math.pow(agent.delta, time / 3.) <= lastBidUtil) {
74 return true;
75 }
76 return false;
77 }
78 }
79
80 public Bid bidProposal() {
81 Bid bid = null;
82 double f_thre = agent.TFC.thresholdFunc();
83 try {
84 bid = bidsOpt.getOptimalBidByThredhold(f_thre + (1.5 - agent.delta)
85 * agent.stdUtil);
86 } catch (Exception e) {
87 System.out.println((new StringBuilder(
88 "getOptimalBidByThredhold failed!!\n")));
89 e.printStackTrace(System.out);
90 e.printStackTrace();
91 return null;
92 }
93 return bid;
94 }
95
96}
Note: See TracBrowser for help on using the repository browser.