t=0

Initialising…

Synchrony Neighbor Δ
Bifurcation Diagram Click the diagram to set r

The period-doubling cascade toward chaos. Each vertical slice shows the long-run attractor values at that growth rate. Lavender = periodic, orange = chaotic.

Why I built this

A simulation of 25,600 chaotic agents that somehow manage to think together.

The question

I kept returning to a question from Michael Levin's work on collective intelligence in biology: how does a collection of locally-simple agents produce globally-coherent behavior? All this without genetic blueprints or top-down instruction, just from being coupled together.

Levin frames this using the idea of platonic space: a structured space of mathematical patterns that assert themselves in physical systems regardless of substrate. His paradigm example is the logistic map:

$$x_{t+1} = r \cdot x_t \cdot (1 - x_t)$$

The Feigenbaum constant ($\delta \approx 4.6692\ldots$) describes the limiting ratio between successive bifurcation intervals in this map. It appears in every smooth single-humped map, regardless of the physical details or evolutionary history of the system. Something like what Levin means by platonic causation: a mathematical structure that asserts itself on whatever happens to instantiate it.

This simulation runs that same equation on 25,600 cells simultaneously. I built it to make the transition from local chaos to collective order visible and interactive. Something you can feel rather than just read about.

How it works

The grid is 160 × 160 cells, each holding a value $x \in [0,\,1]$. At every timestep, the simulation runs two passes:

Pass 1: logistic step. Every cell computes its own post-logistic value:

$$f(x) = r \cdot x \cdot (1 - x)$$

Pass 2: coupling step. Each cell blends its result with its neighbors' results:

$$x_{\text{next}} \;=\; (1-\varepsilon)\,f(x) \;+\; \varepsilon\cdot\overline{f(\text{neighbors})}$$

The order matters. Neighbors are aggregated on post-logistic values $f(x)$, not on raw $x$. Coupling on post-logistic values is what keeps the simulation in parity with the theoretical model. Swap the order and you get a fundamentally different, and frankly less interesting, system.

Cell values are colored by the Inferno colormap (customizable in the Display panel): $x \approx 0$ is deep purple, $x \approx 1$ is bright yellow. Synchrony tracks how similar all cells are globally (high = one color dominates). Neighbor Δ tracks the mean absolute difference between adjacent cells (high = sharp domain boundaries visible).