Deep dive · Agent-based modeling
In April 1914, company and state forces attacked a striking coal miners' tent colony at Ludlow, Colorado. This model asks a narrow question about that day: once violence starts at one edge of a colony, what decides whether it stays local or consumes everything? Two numbers, it turns out, and the answer is a threshold, not a slope.
63,001
patches in the colony grid
2
controls: tent-density, company-pressure
0.4%
destroyed at the low setting
97%
destroyed at the high setting
This is an adaptation of NetLogo's library Fire model, and I say so on the model's Info tab. Green patches are parts of the tent colony; the share of the grid that is tent is set by tent-density. Destruction starts along the left edge and spreads to each of a burning patch's four neighbors with probability company-pressure. A patch that is not a tent blocks the spread. A monitor and a plot report the percent of the colony destroyed over time.
The point of the adaptation is the mapping, not the mechanics. Density stands in for how connected the colony was; pressure stands in for how aggressively force was applied. Both are real features of the event, and both are simplified to a slider.
I ran the model at three settings and read the percent destroyed when the run stopped. Low: density 55, pressure 60, and destruction barely moved, about 0.34-0.4% of the colony. Default: density 65, pressure 80, and it became noticeable, 4-5.86%. High: density 75, pressure 90, and the same rule consumed 96.9-97.4% of the colony.
That is not a gradual response. Between the default and high settings the outcome jumps from a few percent to nearly everything. The model has a critical threshold: below it, gaps between tents stop the spread; above it, there are enough connected paths that nothing stops it. This is the same non-linear behavior the original Fire model was built to demonstrate, and it is the reason the adaptation is interesting rather than decorative.
Emergence
Every patch follows one rule about its four neighbors. Nothing in the code describes a colony-wide outcome, yet the runs produce one: a sharp line between contained and total destruction. That is emergence in the textbook sense, and it fits what is known about Ludlow, which did not happen at random but out of accumulated pressure on a vulnerable, exposed settlement.
The spatial story is well represented: destruction as something that spreads through a space when the parts are connected enough and the pressure is high enough, and gaps as the thing that stops it. The human side is not represented at all. There are no miners, no guards, no fear, no resistance, no decisions.
If I revisited the code, I would add miners and guards as agents, with guards as a moving source of pressure and miners reacting to danger. The current model answers one question well. The event deserves several.
The NetLogo Web export runs entirely in the browser, no install. Set the two sliders, press setup, then go, and watch the percent-destroyed plot. Try holding pressure at 80 and moving density from 60 to 70 in single steps; the threshold is easier to feel than to read about.
The model is about sixty lines of NetLogo. setup clears the world, turns each patch green with probability tent-density, records the starting tent count, and ignites every green patch on the left edge. go runs until no fire or ember turtles remain: each fire asks its four neighbors that are still green to ignite with probability company-pressure, then becomes an ember; embers darken each tick and die once they are nearly black, leaving the patch destroyed. A reporter, percent-destroyed, divides destroyed tents by starting tents and feeds both the monitor and the plot, which adds a point every tick.
The two sliders are the only inputs, which is deliberate: with one spread rule and two parameters, any pattern in the output has to come from the interaction between them, not from hidden knobs. The export is a self-contained NetLogo Web page, engine included, so the same code that produced the numbers above runs unchanged in the browser.