Home Download Help Resources Extensions FAQ NetLogo Publications Contact Us Donate Models: Library Community Modeling Commons Beginners Interactive NetLogo Dictionary (BIND) NetLogo Dictionary User Manuals: Web Printable Chinese Czech Farsi / Persian Japanese Spanish

NetLogo User Community Models(back to the NetLogo User Community Models)
## WHAT IS IT?
This model randomly generates district maps for a square state using standard districting rules  equal populations and contiguous districts. A twoparty system is assumed, with blue representing an individual who will vote for the democratic candidate and red representing an individual who will vote for the republican candidate. Election outcomes of each district are calculated using a firstpastthepost voting method and are shown on the square map in the party color. The outcomes are aggregated to display a histogram of the total districts won over many random maps.
## HOW IT WORKS
The population is randomly distributed based on the number of citycenters. A proportion of the total number of voters is distributed using an exponential distribution. Democrats are clustered more closely around cities, where a larger proportion of republicans are distributed uniformly throughout the square state. This follows from demographic studies that show democrats have a tendency to pack naturally into districts. Cities follow an approximate Zipf’s law, where the population and density of cities diminishes with each city created.
Random individuals in the population are chosen to initialize districts. Districts expand by absorbing neutral neighboring patches and checking for population sizes given an internal threshold of “equal” populations. If districts become noncontiguous through this process, the smaller portion of the district becomes neutral once again and able to be absorbed by another district. If districts become too populous, half of its patches are reset as neutral. This process continues until all districts are within the threshold of equalness.
Then election outcomes are calculated by finding the majority party within each district. If there is a tie, a coin flip is used to decide the outcome (not unlike how actual US election ties have been decided in the past  Grabar 2012).
## HOW TO USE IT
Click the Set Population button, then the Create Districts button to generate a random district map and election outcome with the default settings. Continue to click the Create Districts button to add election results to the histogram. When changes are made to the population distribution, the histogram will reset.
The population distribution is determined by the sliders on the left labeled numvoters, numdistricts, dempercentage, and numcities. The numvoters slider sets the total number of individuals in the population; the numdistricts slider sets the number of districts created. Note, together these determine the number of constituents that each elected representative represents. The dempercentage slider sets the proportion of the population that votes for the democratic candidate, rounded to the nearest whole person. The simulation assumes that the rest of the population votes for the republican candidate. The numcities slider sets the number of citycenters in the square. This causes proportions of the population to cluster around the citycenters using an exponential probability distribution with a larger effect on democrats than republicans.
The Set Population button creates a random population based on the parameters set above.
The nummaps slider determines the number of maps and election outcomes that the simulation will randomly generate and include on the histogram.
The Create Districts button generates the userdefined number of random district maps, displaying the election outcome of every map created.
The Create Gerrymandered District Maps generates the userdefined number of gerrymandered random district maps by packing and cracking. The number of packed districts is set within the code to be the average of the minimum number needed to win all the districts (theoretically) and the maximum number that could be packed. The rest of the districts are cracked.
The checkspecificproportion button will calculate the percentage of maps created so far with a fixed population that resulted in the number of democratic districts requested.
## THINGS TO NOTICE
Notice the number of districts that tend to elect democratic representatives in comparison to the proportion of democrats in the population. Is the proportion of districts won similar to the proportion of democrats in the square state? When is it similar? When is it not?
Notice the geographic sizes of the districts. Are they all roughly the same size? Why or why not?
Generally, compactness is required for districts, but it is not hardcoded into this model. Generate many maps. Do you notice compactness in the districts?
How do the random election outcomes compare to the gerrymandered result? Was the election outcome likely for the randomly generated nongerrymandered maps?
## THINGS TO TRY
Try setting the numcities to zero. This uniformly distributes the population. What happens to the typical election outcome as dempercentage changes. Is this what you expected?
Generate lots of random district maps with the ‘Create District Maps’ button (like, hundreds). Then, create a gerrymandered district map for the same population distribution. Note the number of Democrat district wins. Click the button ‘checkspecificproportion’ and choose the number of Democratic district wins from the dropdown menu. What does the output in the text box below tell you?
Generate a bunch of gerrymandered maps and nongerrymandered maps for the same population distribution. How do the two distributions compare? (Be careful to note the bar endpoints  the bars may be slightly offset.)
## EXTENDING THE MODEL
Make a gerrymander button to create biased maps that favor Democrats.
Use a snaketype method to wind around the world to collect only Democrats for the packed districts. This will create some interesting noncompact shapes, but what else happens?
Add a compactness measure and report it. Or, make compactness another condition on the districts.
Add in local lines for counties or school districts that must be maintained (or rivers or lakes).
Try to reproduce the results Chen and Rodden saw where Democrats unintentionally packing themselves into districts. Possibly start with parameter tweaks to change the relative densities of the cities to the rural areas.
In general, the code needs to be cleaned up. I’m sure there are lots of redundant and extraneous portions.
## RELATED MODELS
I used the Patch Clusters Example with slight modifications in the Netlogo Library to maintain the contiguity requirement.
I also found two related models:
Congressional Redistricting by Luke Elissiry on the NetLogo Modeling Commons (http://modelingcommons.org/browse/one_model/5063#model_tabs_browse_info)
NetDistrict by Collin Lysford on the Metric Geometry and Gerrymandering Group’s GitHub site (https://github.com/gerrymandr/NetDistrict)
## CREDITS AND REFERENCES
Thanks to the Metric Geometry and Gerrymandering Group at Tufts University for the wonderful workshop I attended in Madison, WI. The expert witness workshop and sponsored hackathon inspired me to create an agentbased model to explore some of the ideas we discussed.
Bangia, Sachet, Christy Vaughn Graves, Gregory Herschlag, Han Sung Kang, Justin Luo, Jonathan C. Mattingly, and Robert Ravier. 2017. "Redistricting: Drawing the Line." (Apr): 144. http://arxiv.org/abs/1704.03360.
Chen, Jowei and Jonathan Rodden. 2013. "Unintentional Gerrymandering: Political Geography and Electoral Bias in Legislatures." Quarterly Journal of Political Science 8 (3) (Jan): 239269.
Chikina, Maria, Alan Frieze, and Wesley Pegden. 2016. "Assessing Significance in a Markov Chain without Mixing." (Aug). http://arxiv.org/abs/1608.02014.
Grabar, Henry. 2012. "When a State Election can be Literally Determined by a Coin Toss." The Atlantic, Nov.
Liu, Yan Y., Wendy K. Tam Cho, and Shaowen Wang. 2016. "PEAR: A Massively Parallel Evolutionary Computation Approach for Political Redistricting Optimization and Analysis." Swarm and Evolutionary Computation 30 (May): 7892. doi:10.1016/j.swevo.2016.04.004. https://www.sciencedirect.com/science/article/pii/S2210650216300220.

(back to the NetLogo User Community Models)