source: src/main/java/agents/anac/y2015/group2/G2ParetoFinder.java

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

Initial import : Genius 9.0.0

File size: 1.8 KB
Line 
1package agents.anac.y2015.group2;
2
3import java.util.ArrayList;
4import java.util.LinkedList;
5import java.util.Map.Entry;
6import java.util.Set;
7
8class G2ParetoFinder
9{
10 ArrayList<G2IssueSubSet> issueSubSets;
11 G2ParetoFinder(G2UtilitySpace ourUtilitySpace, ArrayList<G2UtilitySpace> OtherUtilitySpaces)
12 {
13 issueSubSets = new ArrayList<G2IssueSubSet>();
14 Set<Entry<String, G2Issue>> issues = ourUtilitySpace.getIssues();
15 for(Entry<String, G2Issue> issueInfo: issues)
16 {
17 String IssueName = issueInfo.getKey();
18 G2Issue issue = issueInfo.getValue();
19 LinkedList<G2SubBid> subBids = new LinkedList<G2SubBid>();
20
21 Set<String> optionNames = issue.getOptionNames();
22 for(String optionName: optionNames)
23 {
24 ArrayList<Double> OtherUtilities = new ArrayList<Double>(OtherUtilitySpaces.size());
25 for(G2UtilitySpace utilitySpace: OtherUtilitySpaces)
26 {
27 OtherUtilities.add(utilitySpace.calculateOptionUtility(IssueName, optionName));
28 }
29 double ourUtility = ourUtilitySpace.calculateOptionUtility(IssueName, optionName);
30 subBids.add(new G2SubBid(optionName, ourUtility, OtherUtilities));
31 }
32 issueSubSets.add(new G2IssueSubSet(IssueName, subBids));
33 }
34 }
35
36 private void trimMerge() {
37 for(G2IssueSubSet subSet: issueSubSets)
38 {
39 subSet.trimSubBids();
40 }
41
42 ArrayList<G2IssueSubSet> newIssueSubSets = new ArrayList<G2IssueSubSet>();
43 int i=1;
44 while(i<issueSubSets.size())
45 {
46 newIssueSubSets.add(new G2IssueSubSet(issueSubSets.get(i-1), issueSubSets.get(i)));
47 i+=2;
48 }
49 if(i==issueSubSets.size())
50 {
51 newIssueSubSets.add(issueSubSets.get(i-1));
52 }
53 issueSubSets = newIssueSubSets;
54 }
55
56 ArrayList<G2Bid> findParetoOptimalBids() {
57 while (issueSubSets.size()>1) {
58 trimMerge();
59 }
60 issueSubSets.get(0).trimSubBids();
61
62 return issueSubSets.get(0).generateBids();
63 }
64}
Note: See TracBrowser for help on using the repository browser.