This is another Muon2 map from 2013.
Region 1 (UP and Northern LP) and Region 5 (Flint) are just outside the 0.5% tolerances.
I'm not sure I follow how you get these shifts. If populations are equalized between regions with shifts, then shouldn't the Detroit are shift out slightly more than 1.8% to the other two regions (2.0%) leaving all three slightly over population?
Are the choices of shifts set by algorithm or by the plan submitter. When this was drawn I imagined that the user submitted the shifts. Now it seems that there is an algorithm applied to get the shifts.
That leads to an important question in this process. If there is an algorithm to get the shifts, then the shifts must be taken one at a time (assuming a coded binary operation). If it is an iterative minimization process then there must be a metric to measure whether a shift is used or not. Either way the order of the shifts matters.
For example, a natural choice is to start with region with the greatest deviation and the neighbor with the greatest deviation in the other direction. In this case it would be Detroit to Bay, but Bay can't accommodate all of Detroit's excess, so how much should it shift? If it shifts just what Bay needs (since its the smaller deviation), then does 0.95% go from Detroit to Ann Arbor which would equalize those populations after the first shift? At that point, does the excess from Flint go to Lansing because it has the greatest deviation in the other direction? If the process starts from the direction of the smallest disallowed deviation, then it would seem that 0.1% would shift from Grand Rapids to the UP region. In any simple algorithm based on adjacency I find it hard to get the 0.5% from Flint to jump across to UP - more likely is a 0.2% shift from Flint to Bay and a 0.4% shift from Bay to UP.
Can you describe your algorithm for shifts in discrete steps?