in harry-core/src/harry/model/OpSelectors.java [842:870]
public static OperationSelector weighted(long[] weights, OperationKind... operationKinds)
{
assert weights.length == operationKinds.length;
Map<OperationKind, Integer> partitionLevel = new EnumMap<OperationKind, Integer>(OperationKind.class);
Map<OperationKind, Integer> rowLevel = new EnumMap<OperationKind, Integer>(OperationKind.class);
int partitionLevelSum = 0;
int rowLevelSum = 0;
for (int i = 0; i < weights.length; i++)
{
int v = (int) (weights[i] >> 32);
if (operationKinds[i].partititonLevel)
{
partitionLevel.put(operationKinds[i], v);
partitionLevelSum += v;
}
else
{
rowLevel.put(operationKinds[i], v);
rowLevelSum += v;
}
}
int sum = (partitionLevelSum + rowLevelSum);
return new OperationSelector(Surjections.weighted(normalize(partitionLevel)),
Surjections.weighted(normalize(rowLevel)),
(partitionLevelSum * 1.0) / sum);
}