Repairing Redistricting: Using An Integer Linear Programming Model To Optimize Fairness In Congressional Districts