Skip to content

Commit 33fdac9

Browse files
committed
feat(docs): add CVT and signal diagrams, update archive-grid to scatter
1 parent 92e4e42 commit 33fdac9

8 files changed

Lines changed: 488 additions & 107 deletions

File tree

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ biota runs MAP-Elites searches across a Ray cluster, dispatching batches of [Flo
1414

1515
[MAP-Elites](https://arxiv.org/abs/1504.04909) searches that parameter space for behavioral diversity rather than a single optimum. Instead of one best creature, it fills a grid where each cell holds the highest-quality creature with a particular phenotypic fingerprint: an atlas of qualitatively distinct life-forms.
1616

17-
<p align="center"><img src="docs/archive-grid.svg" alt="MAP-Elites archive grid" width="85%"/></p>
17+
<p align="center"><img src="docs/archive-grid.svg" alt="CVT-MAP-Elites archive: calibration survivors (grey dots) and occupied Voronoi cells (magma color = quality)" width="85%"/></p>
1818

1919
The driver owns the archive and the search loop. Each Ray task evaluates B creatures as a single `(B, H, W)` vectorized forward pass. One task fills one GPU. Workers are stateless; nothing persistent lives on the cluster between tasks.
2020

2121
<p align="center"><img src="docs/search-loop.svg" alt="Search loop and Ray dispatch" width="95%"/></p>
2222

23+
<p align="center"><img src="docs/cvt-map-elites.svg" alt="CVT-MAP-Elites two-phase algorithm: calibration fits k centroids, search loop inserts via nearest-centroid lookup" width="95%"/></p>
24+
2325
`--workers N` controls how many batches are in flight simultaneously. `--workers 1` is synchronous MAP-Elites (maximally fresh archive). Higher values trade freshness for throughput on multi-node setups.
2426

2527
## Ecosystem simulation
@@ -32,6 +34,8 @@ Ecosystem dispatch is Ray-correct: each experiment is a self-contained payload.
3234

3335
<p align="center"><img src="docs/ecosystem-dispatch.svg" alt="Ecosystem dispatch: driver loads creatures, workers simulate and render, driver materializes" width="95%"/></p>
3436

37+
<p align="center"><img src="docs/ecosystem-outcomes.svg" alt="Ecosystem outcome taxonomy: coexistence, exclusion, merger, fragmentation, stable isolation, cannibalism" width="95%"/></p>
38+
3539
## Behavioral descriptors
3640

3741
The archive grid has three axes, each a scalar measured empirically from the rollout. Choose any three from the built-in library of eighteen:
@@ -166,6 +170,8 @@ This adds six signal parameters to each creature's searchable parameter space:
166170

167171
![signal field mechanics](docs/signal-field.svg)
168172

173+
<p align="center"><img src="docs/signal-coupling.svg" alt="Inter-species signal coupling: dot products between emission vectors and receptor profiles determine chemotaxis, chemorepulsion, pursuit, or blind interaction" width="95%"/></p>
174+
169175
**Physics.** At each step: (1) convolve mass to get G(H,W); (2) convolve signal field; (3) compute reception `dot(convolved_signal, receptor_profile)`; (4) apply `alpha_coupling`: `G *= (1 + alpha * reception).clamp(min=0)` -- positive alpha is chemotaxis (grow into favorable signal, including other species' territory, enabling cross-species predation); negative alpha is chemorepulsion; (5) modulate emission rate via `beta_modulation`: `rate_eff = rate * (1 + beta * mean(reception))` clipped to [0, 0.1] -- positive beta is quorum sensing, negative beta is feedback inhibition; (6) emit `G_pos * rate_eff * emission_vector`, draining mass into signal field; (7) reintegrate mass; (8) decay signal at `decay_rates`. Note: signal mass decays each step by design -- total mass+signal is not conserved. Creature mass alone is conserved modulo emission (which transfers mass into the signal field).
170176

171177
**Archive compatibility.** An archive produced with `--signal-field` is tagged `"signal_field": true` in `manifest.json`. Ecosystem runs detect this automatically from the creature params -- no YAML flag needed. If any source creature comes from a signal-enabled archive, all sources must too; mixing signal and non-signal archives raises an error at load time.

docs/archive-grid.svg

Lines changed: 102 additions & 101 deletions
Loading

docs/cvt-map-elites.svg

Lines changed: 117 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)