/* * * Copyright 2012-2013 University Of Southern California * * Licensed 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. * */ package org.workflowsim.clustering.balancing.metrics; import java.util.List; import org.workflowsim.clustering.TaskSet; /** * ImpactFactorVariance is the standard deviation of their impact factors * * @author Weiwei Chen * @since WorkflowSim Toolkit 1.0 * @date Apr 9, 2013 */ public class ImpactFactorVariance implements BalancingMetric { /** * Returns the standard deviation of their impact factors * @param list the TaskSets to be checked * @return the standard deviation */ @Override public double getMetric(List<TaskSet> list) { if (list == null || list.size() <= 1) { return 0.0; } double sum = 0; for (TaskSet task : list) { sum += task.getImpactFactor(); } double mean = sum / list.size(); //Log.printLine("sum: " + sum ); sum = 0.0; for (TaskSet task : list) { double var = task.getImpactFactor(); sum += Math.pow(var - mean, 2); } return Math.sqrt(sum / list.size()); } }