DOCUMENTATION / ARTIFICIAL LIFE
Morphospace Atlas.
A MAP-Elites map of evolved soft bodies, tested on tasks the search never saw.
Open the experimentWhat the page shows
A map of evolved soft bodies. Each tile holds one body, made of skin, muscle and cilia on an 8 × 8 grid, swimming in place. Where a tile sits says how the body behaves; its color says how well.
- Columns
- Turning: from bodies that go straight (or barely move) on the left to fast spinners on the right.
- Rows
- Particle transport: from bodies that leave the loose particles around them alone (bottom) to bodies that bulldoze them (top).
- Color
- Robust activity by default: how much the body moves in its worst run. Or, if chosen, its score on one of three surprise tasks.
- Inspector
- Click a tile: the body's evaluation replays on a loop with the same particles the search used, with its turning, transport, robust activity, tissue counts and task scores.
- Diverse map vs. single-goal search
- A table comparing the map with a search that chased one goal, on tasks neither saw.
How to use it
- Encoding
- CPPN (patterned): bodies drawn by a small network, so tissues come in smooth, often symmetric patterns. Direct: every grid cell's tissue is its own gene.
- Color by
- Robust activity, or one of the surprise tasks: push a pellet, hold station in a current, escape a crowd.
- Replay evolution
- Watch the map fill in, iteration by iteration, as the search ran.
- Scroll / pinch, drag, click
- Zoom, pan, and select a tile.
- ← Parent
- In the inspector: jump to the body this one was mutated from.
Try this: color by “Hold station in a current” and see which region of the map is good at it. Then switch encodings and compare how much of the map each one fills.
Background and theory
Designing organisms by search
The first xenobots were designed in a computer: an evolutionary search tried body plans in a physics simulator, and the best designs were built by hand from frog skin and heart-muscle cells. Many designs failed to transfer. The ones that worked were the ones that still performed when the simulation was made sloppier, because living tissue never contracts exactly as modeled.
MAP-Elites
A normal evolutionary search keeps the best designs by one score. MAP-Elites (Mouret and Clune, 2015) instead divides the space of behaviors into a grid and keeps the best design found for each cell: an “elite” per kind of behavior. Each step it picks elites at random, mutates them, scores the children and places each in its cell if the cell is empty or the child beats the occupant. The result is a map of what is possible and how well each possibility can be done, which is called illumination, or quality-diversity search.
Robust scoring
Every body is run several times: once as designed (the run the website replays) and with muscle timing, cilia strength and drag jittered. Its quality is its activity (distance moved plus a little credit for rotation) in its worst run, so the map keeps designs that still work when the biology is imprecise. The two map axes are measured in the unperturbed run.
Encodings
How a design is written down changes what a search can find. A direct encoding gives each of the 64 cells its own tissue gene, so any arrangement is possible but coordinated patterns are hard to reach by mutation. A CPPN (compositional pattern-producing network) computes each cell’s tissue from its position, so a single mutation can change a whole pattern, and symmetry and repetition come naturally.
The test
A review of open-endedness in synthetic biology argues that keeping diverse solutions finds things a single goal misses. To test that, a baseline search with the same budget chased one goal, worst-case distance travelled, and both were then scored on three tasks neither had seen: pushing a heavy pellet, holding station in a current and escaping a dense crowd of particles.
Methods
Bodies
- A body is an 8 × 8 grid of voxels (side 0.05 dish radii), each empty, passive, contractile or ciliated. Point masses (mass 1) sit at voxel corners. Each filled voxel adds springs on its four edges (shared with neighbors) and its two diagonals, stiffness 200.
- Contractile voxels scale their springs’ rest lengths by 1 + 0.2 sin(ωt + φ), at 2 Hz, with a per-voxel phase φ. A spring shared by two voxels averages their actuation.
- Ciliated voxels push along the body’s outer edges (0.5 per edge), in a beat direction given by their phase.
- The fluid is resistive-force drag on outer edges, 40 per unit length across an edge and 10 along it, plus a light isotropic drag of 0.5 on every mass. With only isotropic drag a cyclic shape change can’t move a body (the scallop theorem), so the anisotropy is what lets bending waves swim, as for slender swimmers at low Reynolds number.
- Loose particles (radius 0.02, mass 0.5, drag 4) share the dish; contacts between particles and body masses are soft (stiffness 400). Integration is explicit, at dt = 1/240 simulated seconds.
Encodings and mutation
- CPPN (215 genes): each voxel’s (x, y, distance from center, bias) goes through 10 sine units, then 10 tanh units, to 5 outputs: four tissue scores (the largest wins) and a phase, π tanh(·).
- Direct (320 genes): the same five numbers stored for each of the 64 voxels.
- After decoding, only the largest 4-connected piece is kept, and bodies under 3 voxels are invalid. Mutation adds Gaussian noise (σ 0.25) to every gene; first genomes are standard normal.
Evaluation
- Each body runs for 6 simulated seconds, sampled 24 times, with 32 loose particles scattered at random (without overlap) over an annulus 0.3–0.5 from its start.
- Run 0 is unperturbed. Perturbed runs scale cilia strength by U(0.7, 1.3) and drag by U(0.8, 1.2), and add N(0, 0.3 rad) to every muscle phase.
- Quality is the worst activity over all runs, where activity is net displacement + 0.05 × |total rotation| (in dish radii).
- The two map axes come from run 0: turning = tanh(|rotation| / duration / 0.3 rad/s), and transport = tanh(mean particle displacement / 0.03). The first planned second axis, gathering against scattering, was dropped because no body in a test search gathered particles.
The two searches
- MAP-Elites: a grid over (turning, transport). Each iteration picks a batch of parents uniformly from the filled cells, mutates them, scores the children and inserts each one if its cell is empty or it beats the occupant. The first batch is random.
- Baseline: a (μ + λ) evolution strategy with μ = λ = the batch size and truncation selection on worst-case displacement. It gets the same number of iterations and batch size, so the same evaluation budget.
Surprise tasks
Scored once, unperturbed, for every body in the map and the baseline’s final population. Neither search ever saw them.
- Pellet
- Four heavy pellets (radius 0.05, mass 4) at distance 0.3 around the body. Score: how far the most-moved pellet went.
- Current
- A uniform flow of 0.01 dish radii/s, no particles. Score: minus the body's net drift, so holding position scores best.
- Crowd
- 120 small particles packed over an annulus 0.28–0.6 around the body. Score: the body's net displacement.
Each search is summarized by its best score per task and its top-ten mean.
Scale and checks
- Published runs: the quick profile, 16 × 16 map, 40 iterations of 64 (2,560 evaluations per search), two runs per body (one perturbed). Two seeds per encoding were run; the page shows seed 0.
- Seed 1 gave the same pattern: the CPPN filled 99% of the map against 63% for direct. On the current task the map beat the baseline (−0.10 against −1.05 CPPN; −0.02 against −0.42 direct), and the baseline matched or beat the map on the pellet and crowd tasks.
- Larger profiles exist (32 × 32 with three runs per body; 64 × 64 with four) but haven’t been run.
- The page replays each body with an independent implementation of the same physics. Against reference runs, positions agree within 6 × 10⁻⁷ after 1,200 steps without contacts. Particle collisions amplify rounding to about 10⁻⁴ over the same span.
Results and what they mean
- The CPPN fills the map far better. In the published test search it reached 97% of the map’s cells against 57% for the direct encoding, and its bodies scored higher on every task. Patterned bodies are easier for mutation to explore.
- Diversity helped on one task of three. On holding station in a current, the map’s best body drifted far less than the baseline’s (−0.14 against −1.24 with the CPPN; −0.08 against −0.33 direct). A search that only rewards travelling never keeps bodies that stay put, while the map keeps them in its low-turning, low-transport corner.
- On the other two it didn’t. For pushing a pellet and escaping a crowd, which reward moving a lot, the baseline’s best was as good, and its top ten were better on average.
The pattern makes sense: a diverse map pays off for tasks that need a behavior the single goal discards, and not for tasks that the single goal already rewards. That is a narrower claim than “diversity wins”.
Limits and open questions
- Bodies are 2D, and tissue is a grid of springs rather than real cell mechanics.
- Tissue strengths, drag and the fluid model are invented, not measured.
- The surprise tasks are toy versions of real jobs, and there are only three.
- A full-size search, several seeds and more tasks would show whether the one-in-three pattern holds.