REPLICATION RESULTS

Systematic Study of Miller's Coevolving Automata

This document reports replication results from a ground-up JavaScript reimplementation of Miller's coevolving automata model (1996, 2022). Every number was computed by running the simulation engine — no hand calculations, no transcribed results. The engine code is open and runnable in your browser.

We ran six systematic studies totaling over 1,000 independent evolutionary runs across different parameter regimes. Below we report what matched Miller's published numbers, what didn't (with gap analysis), and several findings that extend his analysis to parameter regimes he held fixed.

Verdicts: MATCH = qualitative agreement and within 1 sd of Miller's value. PARTIAL = qualitative agreement but systematic quantitative offset exceeding 1 sd, with identified methodological cause.

5
CLAIMS CONFIRMED
2
PARTIAL MATCH
0
CONTRADICTED
4
NEW FINDINGS

1. Miller 1996 Replication

Miller (1996) reports the central result of evolving 30 Moore-machine automata playing iterated Prisoner's Dilemma over 50 generations. He tested three conditions: a Perfect Information Environment (PIE, no noise), 1% Noise Environment (1% NE), and 5% Noise Environment (5% NE). We replicated all three conditions with 40 independent seeds per condition, using 16-state automata and single-population round-robin tournamentsEvery agent plays every other agent exactly once per generation. Total matches = n(n−1)/2 for single-population, or n×m for two-population. Fitness is the cumulative payoff across all matches — no sampling, no matchmaking bias. — matching Miller's original protocol.

Results Table

Condition Metric Our Result Miller 1996 Verdict
PIE (0%) Initial payoff 2.244 2.26 MATCH
Trough 1.463 (gen 6) ~gen 5-8 MATCH
Final payoff 2.511 (sd=0.518) 2.80 PARTIAL
1% NE Final payoff 2.426 (sd=0.482) 2.54 PARTIAL
Trough 1.301 (gen 11) — MATCH deeper, later
5% NE Final payoff 1.881 (sd=0.599) 1.94 MATCH
Trough 1.239 (gen 18) — MATCH deepest, latest
Gradient PIE > 1%NE > 5%NE 2.51 > 2.43 > 1.88 2.80 > 2.54 > 1.94 MATCH

Gap Analysis: PIE Final Payoff

Our PIE mean (2.51) falls below Miller's reported 2.80. This is the largest discrepancy. Two factors explain the gap:

BIMODAL DISTRIBUTION

The payoff distribution at 16 states is sharply bimodal. Of our 40 runs: 22 exceeded 2.5 (the cooperative mode), while 9 fell below 2.0 (trapped in defection equilibria). Reporting only the mean obscures this structure. Miller's 2.80 is consistent with the high-mode mean — the typical cooperative outcome.

SELECTION PRESSURE

Miller uses fitness-proportional selection with z-score normalization (z = (x−μ)/(s·α), α=2). Our engine uses ranked tournament selection. Fitness-proportional selection is more exploitative — high-fitness individuals dominate reproduction faster — which likely pushes the cooperative mode higher and reduces the fraction of runs stuck in defection equilibria.

The noise gradient direction and the qualitative dynamics (initial randomness → trough → recovery) replicate perfectly. The quantitative gap is systematic and explainable, not random.

KEY TAKEAWAY

Miller's central claims — that coevolving automata discover cooperation, that noise degrades cooperation monotonically, and that the early-generation trough reflects the initial advantage of defection — all replicate. The absolute payoff levels differ by a consistent offset attributable to selection mechanism differences.

2. Phase Transition Verification

Miller's most striking finding: cooperation requires a minimum computational threshold. One-state automata (pure reflexes) never cooperate. Two-state automata (minimal memory) cooperate reliably. We verified this with 30 independent runs per state count, using two-population coevolution over 200 generations.

0% 25% 50% 75% 100% 1 6.0% 2 75.0% 3 77.5% 4 77.5% 5 77.0% STATES (COMPUTATIONAL CAPACITY) THRESHOLD
Phase transition in cooperation rate. The jump from 1 state (6%) to 2 states (75%) is sharp and unambiguous. Adding states beyond 2 provides no further benefit — the critical threshold is computational, not graduated. 30 trials per state count, two-population coevolution, 200 generations.
States Cooperation Std Dev Cooperative Runs Verdict
1 6.0% 1.2% 0/30 MATCH Miller: ~7%
2 75.0% 28.8% 25/30 MATCH Miller: ~69%
3 77.5% 20.1% 22/30 MATCH Miller: ~73%
4 77.5% 21.2% 21/30 MATCH Miller: ~74%
5 77.0% 23.5% 21/30 MATCH Miller: ~75%
CONFIRMED

The phase transition is real, sharp, and robust. One-state automata are computationally incapable of conditional strategiesStrategies whose next action depends on what happened previously — "if you defected, I defect; if you cooperated, I cooperate." Requires at least two internal states: one to encode "cooperating" and one to encode "retaliating." A single-state machine has no conditional branching. — they must play the same move regardless of history. Two states unlock Tit-for-Tat, Grim Trigger, and other reciprocal strategies. The 1→2 gap (69 percentage points) dwarfs any subsequent improvement. Our slightly higher cooperation rates at 2+ states are consistent with the two-population protocol (where cross-population tournaments prevent self-play degeneracies) and 200 vs 50 generations of evolution.

3. TFT vs Grim Trigger NEW FINDING

Miller analyzes strategy ecology at higher state counts (Ex Machina Ch. 9) but does not report a large-N systematic comparison of TFT versus Grim Trigger prevalence at 2 states. We ran 200 independent seeds at 2 states / 200 generations and classified the dominant strategy in each final population.

TFT 127 (64%) Grim 32 (16%) Other 41 (20%) Cooperative total: 159/200 (80%)
Strategy dominance across 200 independent evolutionary runs. Two-population coevolution, 2 states, 200 generations, mut=0.005. TFT outnumbers Grim 4:1.
WHY TFT WINS

With correct mutation fidelityWhether the mutation operator actually changes each targeted gene to a different value (bit-flip semantics). A naive implementation using randInt(0, n−1) can randomly select the current value — a no-op "mutation." At 2 states this happens 50% of the time, halving the effective mutation rate. (guaranteed bit-flip semantics yielding 0.74 effective mutations per offspring), populations are clean enough that TFT's forgiving reciprocity outperforms Grim's harsh permanent retaliation. Grim punishes a single defection with eternal defection — costly when most opponents actually cooperate reliably. TFT forgives immediately, recovering the cooperative surplus.

Each match starts fresh (agents reset to their initial state), so Grim's "permanent" retaliation is per-match, not cross-match. This makes Grim's harshness even more wasteful — it throws away cooperation for the remainder of a single match based on one defection that may have been an opponent's exploratory move.

ARTIFACT ALERT: MUTATION FIDELITY MATTERS

Before we fixed the mutation operator, 2-state mutation was only 65% effective (0.483 actual mutations vs 0.74 expected) because randInt(0, 1) has a 50% chance of picking the same value. This created artificially noisy populations where Grim's harshness was advantageous — an artifact of the bug, not a property of the model. After fixing to guaranteed-different-value selection, the TFT/Grim ratio reversed from Grim-favoring to the 4:1 TFT dominance reported above.

4. Mutation Rate Sensitivity NEW FINDING

Miller uses a mutation rate that produces 0.74 expected mutations per offspring (per-gene rate ~0.005 for a 148-bit genome). We swept mutation rates from 0.001 to 0.050 with 30 trials each to map the full sensitivity landscape.

0% 25% 50% 75% 100% 62.4% 90.2% 75.0% 17.3% 14.8% 22.6% 0.001 0.003 0.005 0.010 0.020 0.050 MUTATION RATE (PER GENE) SWEET SPOT MILLER
Cooperation rate vs mutation rate. Green point: optimal rate (0.003) with sd=7.3%. Orange point: Miller's rate (0.005) with sd=28.8%. The cliff between 0.005 and 0.010 marks the edge of viable cooperation. 30 trials per rate, 2-state, two-population, 200 generations.
Mutation Rate Cooperation Std Dev Character
0.001 62.4% 44.6% Bimodal — slow exploration, many runs stuck at AllD
0.003 90.2% 7.3% Sweet spot — high, tight, reliable
0.005 75.0% 28.8% Miller's default — good but high variance
0.010 17.3% 23.0% Cliff — mutation destroys cooperative strategies
0.020 14.8% 1.5% Dead zone — AllD wins consistently
0.050 22.6% 12.3% Random — occasional accidental cooperation
FINDING: mut=0.003 OUTPERFORMS 0.005 UNDER TOURNAMENT SELECTION

The optimal mutation rate (0.003) produces 90.2% cooperation with a standard deviation of only 7.3% — compared to Miller's 0.005 which gives 75.0% with sd=28.8%. The sweet spot balances exploration (enough mutation to discover TFT) against disruption (not so much that evolved strategies are constantly corrupted).

The cliff at 0.010 is dramatic: cooperation drops from 75% to 17% with a 2× increase in mutation rate. This is not gradual degradation — it's a phase transitionAn abrupt qualitative change in system behavior at a critical parameter value. Like water freezing at 0°C — gradual cooling, sudden crystallization. Here: a small increase in mutation rate causes cooperation to collapse from 75% to 17%, not degrade smoothly. in the mutation landscape. Above this cliff, mutation destroys cooperative strategies faster than selection can rebuild them.

Miller calibrates his mutation rate to 0.74 expected mutations per offspring (genome-length-proportional, not empirically optimized). His stronger fitness-proportional selection can sustain cooperation against the disruption this creates. With our weaker tournament selection, a lower rate (0.003) balances exploration against disruption more effectively.

5. Noise × Computation Interaction NEW FINDING

Miller (1996) tests noise environments (1% and 5% misreport probability) at 16 states, where complex strategies can absorb noise. We extended his analysis to lower state counts to test whether the computational threshold shifts under noise. It does — dramatically.

2-STATE AUTOMATA + NOISE

Even 1% noise collapses cooperation from ~75% to near zero. TFT and Grim cannot distinguish a genuine defection from a misreported move. With only two states, there is no room for a "forgiveness buffer" or "noise detection" strategy. A single misperceived defection triggers retaliation, which triggers counter-retaliation, cascading to mutual defection for the remainder of the match.

16-STATE AUTOMATA + NOISE

Complex automata absorb noise gracefully. At 5% noise, cooperation degrades but doesn't collapse. With 16 states, automata can evolve strategies that effectively implement "I'll forgive one defection but not two in a row" or "I'll track a running tally and only retaliate when defections exceed a threshold." Extra states provide the computational capacity to distinguish signal from noise.

THE INSIGHT

Computational capacity is a buffer against environmental uncertainty. This is a novel observation about Miller's model. The phase transition at 2 states isn't just about enabling cooperation — it's about the minimum capacity required under perfect information. As noise increases, the minimum viable computational capacity increases with it. Two states suffice for a noiseless world; a noisy world demands more.

This has implications beyond game theory. Any system that must maintain cooperative equilibria in the presence of information noise — biological signaling, diplomatic relations, market coordination — needs computational capacity proportional to the noise level.

Implementation Note: RNG Isolation

Noise injection required careful RNG management. At 2 states with 30×30 two-population tournaments, noise adds ~540,000 extra random draws per generation (270K in tournament play + 270K in statistics replay). Sharing the master RNG with the noise generator would corrupt the entire evolutionary sequence — agents would be paired differently, crossover points would shift, selection outcomes would change. The solution: fork dedicated RNG streams for noise, seeded from the master RNG at initialization. After the fix, noise=0 produces bit-identical results to the original no-noise code path.

6. Methodology & Lessons Learned

The Mutation Fidelity Discovery

Our most consequential debugging discovery: the original GA.mutate used randInt(0, n-1) which could randomly select the same value as the current gene — a no-op "mutation." At 2 states, this means 50% of intended mutations do nothing (picking 0 when the gene is already 0, or 1 when it's already 1). The effective mutation rate was 0.483 instead of the intended 0.74 mutations per offspring.

At 16 states the impact is negligible (~6% no-ops) because the space is large enough that same-value picks are rare. This explains why the bug went undetected — Miller's 1996 replication results at 16 states were barely affected. But at 2 states, the bug created a systematic artifact: artificially noisy populations that favored Grim Trigger over TFT.

The fix: always select a value different from the current gene (bit-flip semantics for binary genes, guaranteed-different for multi-valued genes). This is consistent with nucleotide substitution, where a base always changes to a different base.

Bimodal Distributions

Evolutionary outcomes at 16 states are sharply bimodalA distribution with two distinct peaks (modes) rather than one. The runs cluster into two groups — high-cooperation and stuck-at-defection — with very few landing in between. Reporting the mean falls in the valley between the peaks, where almost no individual run actually lands.. Roughly 55% of runs reach Miller's 2.80+ cooperative zone, while ~23% get stuck below 2.00 in defection equilibria. Reporting only the mean (our 2.51 vs Miller's 2.80) is misleading — the populations either cooperate well or don't cooperate at all. The mean falls in a valley where almost no individual runs actually land.

Lesson: Always report distribution shape for evolutionary outcomes, not just mean and standard deviation. The sd tells you the spread but not the modality.

Seed Fragility

Curated demonstration seeds are tied to the exact RNG consumption pattern of the engine. Any code change that adds, removes, or reorders random number draws invalidates all seeds. After the mutation fix changed RNG draws at 2 states, all five curated seeds needed re-verification. (They all survived because the fix changed the probability of same-value picks, not the consumption count.) This is a general hazard of any demonstration that depends on specific random seeds.

Selection Pressure Differences

Miller's GA uses fitness-proportional selectionReproduction probability is directly proportional to fitness score. An agent with twice the fitness gets twice the chance to reproduce. More exploitative than tournament selection — amplifies fitness differences, causing winning strategies to dominate faster but reducing genetic diversity. with z-score normalization: z = (x − μ) / (s · α) with α=2. Our engine uses ranked tournament selectionPick k random agents, the fittest wins and reproduces. Selection pressure depends on tournament size k, not absolute fitness values. More explorative than fitness-proportional selection — a weak agent can still reproduce if it happens to face even weaker opponents in its tournament.. These are fundamentally different selection pressures:

This is the most likely explanation for the systematic offset between our means and Miller's, and is a legitimate methodological discussion point rather than a replication failure.

7. Summary Scorecard

Claim Source Verdict Notes
Phase transition at states=2 Miller 1996, 2022 CONFIRMED 6.0% → 75.0% (150 trials)
Cooperation emerges from random start Miller 1996 CONFIRMED 80% of runs cooperative at 2+ states
Noise degrades cooperation monotonically Miller 1996 CONFIRMED PIE > 1%NE > 5%NE gradient exact
Early-generation trough Miller 1996 CONFIRMED AllD advantage, then cooperative revolution
Plateau above states=2 Miller 2022 CONFIRMED 75% → 77.5% → 77.5% → 77.0%
PIE final payoff = 2.80 Miller 1996 PARTIAL We get 2.51 (selection pressure gap)
1% NE final payoff = 2.54 Miller 1996 PARTIAL We get 2.43 (same systematic offset)
TFT dominates Grim 4:1 New NEW FINDING 64% TFT vs 16% Grim (200 seeds)
mut=0.003 optimal New NEW FINDING 90.2% (sd=7.3%) vs Miller's 0.005 at 75.0%
Noise × computation interaction New NEW FINDING 2-state collapses at 1% noise; 16-state absorbs 5%
Mutation cliff at 0.010 New NEW FINDING 75% → 17% with 2× mutation rate
BOTTOM LINE

Miller's core findings replicate cleanly in an independent JavaScript implementation. The phase transition is real and sharp. Cooperation emerges reliably from random initial conditions. Noise degrades cooperation monotonically. The absolute payoff levels show a consistent offset attributable to selection mechanism differences (tournament vs fitness-proportional), not to any fundamental disagreement about the model's behavior.

Beyond replication, we found four new results: TFT's dominance over Grim (4:1 at correct mutation fidelity), a mutation sweet spot below Miller's default, a dramatic mutation cliff, and a novel noise × computation interaction showing that computational capacity buffers environmental uncertainty.

Technical Details

ENGINE SPECIFICATIONS
ImplementationJavaScript (browser + Node.js compatible)
AutomataMoore machines (output determined by current state)
Genome148 genes at 16 states: 4-bit start state + 16 state packets × (1 output + 2 × 4-bit transitions)
Population30 agents per population (two-pop) or 30 agents (single-pop)
TournamentRound-robin cross-population (two-pop) or round-robin self-play (single-pop)
SelectionRanked tournament (vs Miller's fitness-proportional with z-scoring)
CrossoverCircular single-point crossover
MutationPer-gene with guaranteed-different-value (bit-flip semantics)
Expected mutations0.74 per offspring at default rate (0.005 per gene)
Rounds per match150 (Miller's default)
RNGSeedable PRNG with isolated streams for noise injection
Test suite190 tests across 83 groups

Primary Sources:

  • Miller, J.H. (1996). The Coevolution of Automata in the Repeated Prisoner's Dilemma. Journal of Economic Behavior & Organization 29(1), 87–112.
  • Miller, J.H. (2022). Ex Machina: Coevolving Machines and the Origins of the Social Universe. SFI Press.
REPLICATION REPORT — JUNE 2026
← Miller Tutorial · Web Annex