Example district plans for Rhode Island, Ohio, Pennsylvania, and Florida.
We consider the problem of political redistricting: given the locations of people in a geographical area (e.g.~a US~state), the goal is to decompose the area into subareas, called districts, so that the populations of the districts are as close as possible and the districts are ``compact'' and ``contiguous,'' to use the terms referred to in most US state constitutions and/or US Supreme Court rulings. We study a method that outputs a solution in which each district is the intersection of a convex polygon with the geographical area. The average number of sides per polygon is less than six. The polygons tend to be quite compact. Every two districts differ in population by at most one (so we call the solution balanced). In fact, the solution is a centroidal power diagram: each polygon has an associated center in ℝ³ such that
Balanced centroidal power diagrams for redistrictingThe code for the first and second phases can be found at https://github.com/pnklein/district. The main branch contains only code for the first phase. The DP branch contains code for the first and second phases. It includes a makefile for fetching the relevant data and building the files. Note that the second phase currently requires use of a commercial solver, Gurobi. You might be able to get a free license to use Gurobi for research purposes. We have also developed and implemented an algorithm for the second phase. This implementation does not depend on commercial tools. The dynamic program takes an existing district plan that is not necessarily population-balanced, and perturbs the districts at the boundary so as to minimize the population disparities. Contact us if you are interested in using this code.
Philip Klein at klein@brown.edu