The 20-Year Entropy Standard

Parameter Tuning Methodology

The simulation no longer asks: “Can the empire survive?” It now asks: “How does the empire die?”

The default state of the simulation is COLLAPSE. Stability is a temporary deviation, not the norm. We model a 20-year timeline (1040 ticks) because that is sufficient to observe the systematic decay of any imperial system operating under capitalist extraction.

The Problem: Eden Mode

Previous specifications permitted infinite stability because:

  1. Existence was free: base_subsistence = 0.0 meant entities persisted without cost

  2. Earth was infinite: No hysteresis in biocapacity degradation

  3. Zombies were possible: Entities survived with near-zero wealth indefinitely

This produced “flatline” simulations where nothing happened.

The Solution: Dying World Physics

Under the new standard:

  1. Existence costs calories: base_subsistence > 0.0 always (The Calorie Check)

  2. Death is real: VitalitySystem kills entities when wealth < consumption_needs

The 20-Year Benchmark

Old Standard

New Standard

52 ticks (1 year)

1040 ticks (20 years)

Why 20 years?

  • Long enough to observe TRPF (Tendency of the Rate of Profit to Fall)

  • Long enough for ecological degradation to compound

  • Long enough for generational effects

  • Short enough for meaningful simulation runs (~10-20 minutes)

Success Criteria

OLD: “Success = Survival”

NEW: “Success = Realistic Decay”

The ideal simulation produces:

  • p_c_wealth declining ~0.05% per tick

  • total_biocapacity declining ~0.08% per tick

  • imperial_rent_pool exhibiting TRPF (declining rate of return)

  • Death occurring in the 800-900 tick range (Year 15-17)

The Calorie Check

INVARIANT: base_subsistence > 0.0 in ALL scenarios

This is the foundational constraint that prevents Eden Mode.

# FORBIDDEN - Creates Zombie States
defines.economy.base_subsistence = 0.0  # NEVER

# REQUIRED - Ensures Entropy
defines.economy.base_subsistence >= 0.01  # ALWAYS

Every scenario factory and test fixture MUST verify:

def create_scenario():
    defines = GameDefines()
    assert defines.economy.base_subsistence > 0.0, \
        "Eden Mode detected: base_subsistence must be > 0.0"
    return state, config, defines

Objective Function

The optimization objective rewards realistic decay:

def objective_v2(trial):
    """Optimize for REALISTIC DECAY, not survival."""
    result = run_simulation(trial.params, max_ticks=1040)

    # Death Timing (40%): Should occur around tick 850
    death_tick = result.death_tick or 1040
    timing_score = 1.0 - abs(death_tick - 850) / 400

    # Decay Shape (30%): Smooth decline, not flatline or cliff
    decay_smoothness = calculate_curve_smoothness(result.wealth_timeseries)

    # TRPF Manifestation (20%): Rate of profit declines
    trpf_score = calculate_declining_rate(result.rent_pool_timeseries)

    # Biocapacity Exhaustion (10%): Near-zero around death
    exhaustion_score = 1.0 - (result.final_biocapacity / result.initial_biocapacity)

    return (0.4 * timing_score +
            0.3 * decay_smoothness +
            0.2 * trpf_score +
            0.1 * exhaustion_score)

Anti-Patterns

Zombie State (Flatline)

  • Symptom: Wealth graph is horizontal

  • Cause: base_subsistence = 0.0 or consumption_needs too low

  • Detection: std(wealth_timeseries) < 0.01

  • Fix: Increase consumption_needs, verify Calorie Check

Instant Death (Cliff)

  • Symptom: Simulation ends before tick 100

  • Cause: Extraction too aggressive, initial wealth too low

  • Detection: death_tick < 100

  • Fix: Reduce extraction_efficiency, increase initial wealth

Eternal Empire (Eden Mode)

  • Symptom: Survives 1040 ticks without significant decay

  • Cause: Extraction perfectly balanced with production

  • Detection: wealth[tick_1000] / wealth[tick_0] > 0.9

  • Fix: Enable biocapacity hysteresis, increase entropy_factor

Hollow Stability

  • Symptom: Metrics oscillate around stable point

  • Cause: System finds equilibrium (theoretically impossible)

  • Detection: mean(wealth[500:1000]) mean(wealth[0:500])

  • Fix: Increase TRPF coefficient, add extraction hysteresis

Parameter Ranges

Entropy Parameters

Parameter

Range

Purpose

economy.base_subsistence

[0.01, 0.05]

Calorie drain per tick

metabolism.entropy_factor

[1.1, 1.5]

Extraction inefficiency

TRPF Parameters

Parameter

Range

Purpose

economy.trpf_coefficient

[0.0001, 0.001]

Rate of profit decay

economy.rent_pool_decay

[0.001, 0.005]

Background rent evaporation

Workflow

  1. Verify Calorie Check:

    poetry run python -c "
    from babylon.config.defines import GameDefines
    d = GameDefines()
    assert d.economy.base_subsistence > 0.0
    print('Calorie Check: PASSED')"
    
  2. Run 20-Year Simulation:

    mise run sim:trace --ticks 1040
    
  3. Verify Decay Curve:

    Review the generated CSV for realistic decay patterns.

See Also