blob: a9619366c79effff22fbeb5fd68e317f16350bef [file] [log] [blame]
package org.apache.helix.controller.rebalancer.waged.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.util.Map;
import com.google.common.collect.ImmutableMap;
/**
* The class retrieves the offline model that defines the relative importance of soft constraints.
*/
class SoftConstraintWeightModel {
private static Map<Class, Float> MODEL;
// TODO either define the weights in property files or zookeeper node or static human input
SoftConstraintWeightModel() {
}
static {
//TODO update the weight
MODEL = ImmutableMap.<Class, Float> builder().put(InstancePartitionsCountConstraint.class, 1.0f)
.build();
}
/**
* Get the sum of normalized scores, given calculated scores map of soft constraints
* @param originScoresMap The origin scores by soft constraints
* @return The sum of soft constraints scores
*/
float getSumOfScores(Map<SoftConstraint, Float> originScoresMap) {
float sum = 0;
for (Map.Entry<SoftConstraint, Float> softConstraintScoreEntry : originScoresMap.entrySet()) {
SoftConstraint softConstraint = softConstraintScoreEntry.getKey();
float weight = MODEL.get(softConstraint.getClass());
sum += softConstraintScoreEntry.getValue() * weight;
}
return sum;
}
}