A New Redistricting Algorithm: Redistricting Michigan

Other articles in this series

Chris Larson
3 min readJan 26, 2019

Michigan, my home state, is the first state that I ran the algorithm on. It presented a fairly unique challenge with the two peninsulas and several islands. Given the complexity, it certainly helped to make the algorithm more robust for future redistricting in other states.

The Proposed Districts

Michigan’s 14 federal congressional districts as computed by this algorithm.

Here we have the 14 districts, each with the required 705,974 people (plus or minus 1 person).

If you’d like to explore the results (and the current Michigan Federal Congressional Districts), you can do that here.

Here is a look at the districts with population densities:

Darker colors are higher populations (based on census blocks). The dark spot at the tip of the UP is an abnormally large census block.

The map looks fairly natural and the borders of each district try to keep large population centers intact as much as possible. But there may be ways to improve upon the results and better meet the criteria we set out for ourselves.

If you’d like to download the shapefiles, you can do that here.

What’s Next?

I’m happy with the resulting map. But this version of the algorithm isn’t completely meeting all the goals we’ve set out. It’s close, but there may be room for improvement. Currently, it breaks apart all the groups of census blocks at the border of the filled candidate. And while it breaks those groups up by finding the lowest population seam, with repeated breaks in the same area, it will start to break up high population areas when there may be a more sensible break elsewhere. This is how I currently perceive the breaks happening:

The first pass at a fill attempt. Then it breaks all the groups at the border with the best available seams. And then finally another fill attempt.

Ideally, the algorithm would find the lowest energy seam along the border and then only break that group up. But with initial testing, that has led to some oddly shaped districts. So there is more work to be done in that area.

Also, as you can see, there are still some rough edges especially in highly populated areas:

Rough edges in the Detroit area.

That will be something that should be addressable by creating the population energy maps a little differently.

After all that, I’ll be running the algorithm on Michigan to create the State House and Senate district maps. I plan on contacting, and hopefully working with the Michigan Independent Redistricting Commission. If only to bring some of the same concepts implemented here to their attention.

I’ve also received some interest in what this would look like in Virginia, so I’ll run it on that state as well. (Update: here are some results for Virginia!) Each state brings some unique geography and with it new challenges to address when finding population borders. Michigan is pretty unique due to having two distinct peninsulas. So hopefully, most edges cases have been worked through already. 🤞

It takes roughly two days to get the data from the US Census site and process it for a single state’s federal congressional map, so additional state maps will be prioritized based on future conversations.

If you’d like additional information or have feedback, I’d definitely like to chat. Feel free to reach out:

Thank you!

--

--

Chris Larson

Dad / Product Manager / Lover of Data, BBQ, Gym, Astronomy, Being Outdoors, and LEGO