Lesson 13 of 15

Self-Organized Criticality

Self-Organized Criticality

Self-organized criticality (SOC) describes systems that naturally evolve toward a critical state without external tuning. The hallmark is power-law distributions of event sizes (avalanches).

The 1D Bak-Tang-Wiesenfeld Sandpile

Proposed by Bak, Tang, and Wiesenfeld (1987), the sandpile model is the canonical SOC system:

  1. Each site ii has a height hih_i (number of sand grains)
  2. A site is unstable if hithresholdh_i \geq \text{threshold} (we use threshold =2= 2)
  3. Toppling rule in 1D: an unstable site loses 2 grains, and each neighbor gains 1: hihi2,hi1hi1+1,hi+1hi+1+1h_i \to h_i - 2, \quad h_{i-1} \to h_{i-1} + 1, \quad h_{i+1} \to h_{i+1} + 1
  4. Sand falls off the boundaries (open boundary conditions)
  5. Add one grain to a random site, then topple until stable
  6. Avalanche size = total number of topplings

Why Criticality Emerges

The system self-organizes to a state where:

  • Adding one grain triggers avalanches of all sizes
  • Avalanche sizes follow a power law: P(s)sτP(s) \sim s^{-\tau}

This criticality is achieved without tuning any external parameter.

Mean Field Approximation

The mean avalanche size grows as the system approaches its capacity. For a system of size NN, the mean height at the critical state is approximately threshold1\text{threshold} - 1.

Implementation

def sandpile_topple(heights, threshold=2):
    # Repeatedly topple all unstable sites until stable
    # Returns (final_heights, total_topplings)
    # Open boundaries: grains fall off edges
    ...

def sandpile_add_grain(heights, site):
    # Return new heights list with one grain added at site
    ...

def mean_avalanche_size(avalanche_sizes):
    # Return mean of all values (including zeros)
    ...

def power_law_check(avalanche_sizes):
    # MLE exponent estimate for power law on sizes > 0
    # tau = 1 + n / sum(log(s/s_min))
    ...
Python runtime loading...
Loading...
Click "Run" to execute your code.