@Override
  void prepare(BalancerClusterState cluster) {
    super.prepare(cluster);
    // Move cost multiplier should be the same cost or higher than the rest of the costs to ensure
    // that large benefits are need to overcome the cost of a move.
    if (provider.isOffPeakHour()) {
      this.setMultiplier(moveCostOffPeak);
    } else {
      this.setMultiplier(moveCost);
    }
  }
Given the starting state of the regions and a potential ending state compute cost based upon the
number of regions that have moved.
hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MoveCostFunction.java