CascadeAgents
Five strategies, from doing nothing to actively hunting the largest connected region. Each pays the same energy costs a player does, so the comparison is between strategies and not between budgets.
CascadeAgents — Phase 25, non-human baselines
Five strategies, from doing nothing to actively hunting the largest connected region. Each pays the same energy costs a player does, so the comparison is between strategies and not between budgets.
| id | name | what it does |
|---|---|---|
do_nothing | Do Nothing | never intervenes — the control condition |
random | Random Intervention | acts at random whenever it can afford to |
density_threshold | Density Threshold | fires a controlled burn once occupancy passes a threshold |
largest_cluster | Largest Cluster | burns the centroid of the largest connected region |
firebreak | Firebreak | cuts a line across any region that grows too large |
local Agents = require("CascadeAgents")
local rows = Agents.runAll({ seed = 20250922, width = 128, height = 128, ticks = 700 })
print(Agents.formatComparison(rows))
Headless
These run through Core.runHeadless — no rendering, no UI, no frames — so a
strategy can be measured far faster than it can be watched.
Agents.makeRunner(id, opts) returns an incremental runner (stepChunk(n),
progress(), finish()), and Agents.runAllChunked drives one for every
strategy while yielding, which is what the instrument's B key uses. A long
baseline run therefore happens behind a board that keeps moving.
Agents.largestRegionInfo(sim) gives a region's centroid and bounding box; it
costs one pass over the board, so it is asked for on the agent's decision
cadence and never per tick.
Scoped to this part · feeds back into the world's score.