package agents.anac.y2010.Southampton.analysis; import java.util.ArrayList; import java.util.HashMap; import genius.core.issue.ValueDiscrete; public class BidSpaceDiscrete { /** * @param discreteEvaluationFunctions * @param discreteWeights * @return */ public static ValueDiscrete[][] getDiscreteCombinations(ArrayList> discreteEvaluationFunctions, ArrayList discreteWeights) { return getDiscrete(getDiscreteCombinationValues(discreteEvaluationFunctions), discreteEvaluationFunctions, discreteWeights); } /** * @param discreteCombinationValues * @param discreteEvaluationFunctions * @param discreteWeights * @return */ private static ValueDiscrete[][] getDiscrete(ArrayList discreteCombinationValues, ArrayList> discreteEvaluationFunctions, ArrayList discreteWeights) { ValueDiscrete[][] result = new ValueDiscrete[discreteCombinationValues.size()][discreteEvaluationFunctions.size()]; int i = 0; for (int[] discreteCombinationValue : discreteCombinationValues) { for (int j = 0; j < discreteEvaluationFunctions.size(); j++) { result[i][j] = (ValueDiscrete) discreteEvaluationFunctions.get(j).keySet().toArray()[discreteCombinationValue[j]]; } i++; } return result; } /** * @param discreteEvaluationFunctions * @return */ private static ArrayList getDiscreteCombinationValues(ArrayList> discreteEvaluationFunctions) { int[] space = new int[discreteEvaluationFunctions.size() + 1]; space[0] = 1; int i = 0; // Work out how many 'sections' there are for (HashMap discreteEvaluationFunction : discreteEvaluationFunctions) { i++; space[i] = space[i - 1] * discreteEvaluationFunction.size(); } // Work out what the combinations of spaces are return BidSpace.getCombinationValues(space); } }