package agents.anac.y2015.group2; import java.util.ArrayList; import java.util.LinkedList; import java.util.Map.Entry; import java.util.Set; class G2ParetoFinder { ArrayList issueSubSets; G2ParetoFinder(G2UtilitySpace ourUtilitySpace, ArrayList OtherUtilitySpaces) { issueSubSets = new ArrayList(); Set> issues = ourUtilitySpace.getIssues(); for(Entry issueInfo: issues) { String IssueName = issueInfo.getKey(); G2Issue issue = issueInfo.getValue(); LinkedList subBids = new LinkedList(); Set optionNames = issue.getOptionNames(); for(String optionName: optionNames) { ArrayList OtherUtilities = new ArrayList(OtherUtilitySpaces.size()); for(G2UtilitySpace utilitySpace: OtherUtilitySpaces) { OtherUtilities.add(utilitySpace.calculateOptionUtility(IssueName, optionName)); } double ourUtility = ourUtilitySpace.calculateOptionUtility(IssueName, optionName); subBids.add(new G2SubBid(optionName, ourUtility, OtherUtilities)); } issueSubSets.add(new G2IssueSubSet(IssueName, subBids)); } } private void trimMerge() { for(G2IssueSubSet subSet: issueSubSets) { subSet.trimSubBids(); } ArrayList newIssueSubSets = new ArrayList(); int i=1; while(i findParetoOptimalBids() { while (issueSubSets.size()>1) { trimMerge(); } issueSubSets.get(0).trimSubBids(); return issueSubSets.get(0).generateBids(); } }