source: src/main/java/agents/ai2014/group10/OpponentBidLists.java@ 61

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

Initial import : Genius 9.0.0

File size: 4.3 KB
Line 
1package agents.ai2014.group10;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
6import java.util.HashMap;
7import java.util.List;
8import java.util.Map;
9import java.util.Map.Entry;
10
11import genius.core.Bid;
12import genius.core.issue.Issue;
13import genius.core.issue.Value;
14import genius.core.utility.AdditiveUtilitySpace;
15import genius.core.utility.Evaluator;
16
17public class OpponentBidLists {
18
19 private ArrayList<Object> senders;
20 private HashMap<Object, ArrayList<Bid>> map;
21 private boolean single_list;
22 private AdditiveUtilitySpace utilitySpace;
23
24 public OpponentBidLists(AdditiveUtilitySpace utilitySpace,
25 boolean single_list) {
26 senders = new ArrayList<Object>();
27 map = new HashMap<Object, ArrayList<Bid>>();
28 this.single_list = single_list;
29 this.utilitySpace = utilitySpace;
30 if (single_list) {
31 ArrayList<Bid> bid_list = new ArrayList<Bid>();
32 map.put(this, bid_list);
33 }
34 }
35
36 private boolean hasSender(Object sender) {
37 return (senders.indexOf(sender) != -1);
38 }
39
40 private void addSender(Object sender) {
41 if (!single_list) {
42 ArrayList<Bid> bid_list = new ArrayList<Bid>();
43 map.put(sender, bid_list);
44 }
45 senders.add(sender);
46 }
47
48 public ArrayList<Object> getSenders() {
49 return senders;
50 }
51
52 public void insertBid(Object sender, Bid bid) {
53 if (!hasSender(sender)) {
54 addSender(sender);
55 }
56 ArrayList<Bid> bid_list;
57 if (single_list) {
58 bid_list = map.get(this);
59 } else {
60 bid_list = map.get(sender);
61 }
62 bid_list.add(bid);
63 }
64
65 public ArrayList<Bid> getBids(Object sender) {
66 if (single_list) {
67 return map.get(this);
68 } else {
69 return map.get(sender);
70 }
71 }
72
73 public ArrayList<Entry<Pair<Integer, Value>, Integer>> getMostFrequentIssueValues(
74 Object sender) {
75 ArrayList<Bid> bid_list = getBids(sender);
76 HashMap<Pair<Integer, Value>, Integer> value_count = new HashMap<Pair<Integer, Value>, Integer>();
77 for (int i = 0; i < bid_list.size(); i++) {
78 Bid bid = bid_list.get(i);
79 List<Issue> issues = bid.getIssues();
80 HashMap<Integer, Value> values = bid.getValues();
81
82 for (int j = 0; j < values.size(); j++) {
83 Integer issue_id = issues.get(j).getNumber();
84 Value value_id = values.get(j + 1);
85 Pair<Integer, Value> pair = new Pair<Integer, Value>(issue_id,
86 value_id);
87 if (value_count.containsKey(pair)) {
88 int counter = value_count.get(pair);
89 value_count.put(pair, ++counter);
90 } else {
91 value_count.put(pair, 1);
92 }
93 }
94 }
95 ArrayList<Entry<Pair<Integer, Value>, Integer>> sorted_list = new ArrayList<Entry<Pair<Integer, Value>, Integer>>(
96 ((Map<Pair<Integer, Value>, Integer>) value_count).entrySet());
97 Collections.sort(sorted_list,
98 new Comparator<Entry<Pair<Integer, Value>, Integer>>() {
99 public int compare(Entry<Pair<Integer, Value>, Integer> o1,
100 Entry<Pair<Integer, Value>, Integer> o2) {
101 return o2.getValue().compareTo(o1.getValue());
102 }
103 });
104 return sorted_list;
105 }
106
107 public ArrayList<Entry<Pair<Integer, Value>, Double>> weightIssueValues(
108 ArrayList<Entry<Pair<Integer, Value>, Integer>> sorted_list) {
109 HashMap<Pair<Integer, Value>, Double> map = new HashMap<Pair<Integer, Value>, Double>();
110 for (Entry<Pair<Integer, Value>, Integer> entry : sorted_list) {
111 double value = (double) entry.getValue();
112 int issue_id = entry.getKey().getInteger();
113 Evaluator evaluator = utilitySpace.getEvaluator(issue_id);
114 double weight = evaluator.getWeight();
115 double evaluation;
116 try {
117 Bid temp = utilitySpace.getMaxUtilityBid();
118 temp = temp.putValue(issue_id, entry.getKey().getValue());
119 evaluation = evaluator.getEvaluation(utilitySpace, temp,
120 issue_id);
121 } catch (Exception e) {
122 evaluation = 1.0;
123 }
124 map.put(entry.getKey(), value * weight * evaluation);
125 }
126 ArrayList<Entry<Pair<Integer, Value>, Double>> weighted_list = new ArrayList<Entry<Pair<Integer, Value>, Double>>(
127 ((Map<Pair<Integer, Value>, Double>) map).entrySet());
128 Collections.sort(weighted_list,
129 new Comparator<Entry<Pair<Integer, Value>, Double>>() {
130 public int compare(Entry<Pair<Integer, Value>, Double> o1,
131 Entry<Pair<Integer, Value>, Double> o2) {
132 return o1.getValue().compareTo(o2.getValue());
133 }
134 });
135 return weighted_list;
136 }
137}
Note: See TracBrowser for help on using the repository browser.