essim2d3d controllers
Evolved controller weights for the paper Evaluating the Transfer of Co-Evolved Communication from 2D to 3D Simulation (arXiv:2610.09280).
Code: github.com/ferdiex/essim2d3d · Archive: Zenodo · Demo: xferdie/essim2d-demo
What these weights are
These are not models in the usual machine learning sense. Each file holds the
weights of two small recurrent controllers, one per robot (brain_a and
brain_b), co-evolved with a genetic algorithm in a two-robot cooperative
foraging task where one signalling channel can be used to communicate the
location of food.
Each controller is a GRU network with 16 units and a residual path that connects the inputs directly to the outputs:
| Array | Shape | Role |
|---|---|---|
w_gru |
27 x 48 | GRU weights (11 inputs + 16 recurrent units, 3 gates x 16) |
b_gru |
48 | GRU biases |
w_out |
16 x 5 | GRU state to outputs |
b_out |
5 | Output biases |
w_res |
11 x 5 | Residual path, inputs to outputs |
That is 1,484 parameters per robot. The weights are plain JSON lists (no PyTorch or other framework) and only make sense together with the simulators, sensor encoding and instinct layer in the GitHub repository. They run on CPU; no GPU is needed.
Files
| File | Description |
|---|---|
social3d_v15_full_final.json |
Official checkpoint used for the results reported in the paper (3D, PyBullet) |
social2d_emergence.json |
Controllers co-evolved in the 2D grid simulator |
social2d_*_final.json, social3d_*_final.json |
Further independently evolved 2D and 3D checkpoints (see the paper's Methods) |
social3d_v10_*, social3d_v14_* |
Earlier 3D development checkpoints |
braitenberg_avoidance.json |
Hand-set Braitenberg obstacle-avoidance baseline (not evolved) |
How to use
Installation, training, visualization and the commands to reproduce the
paper's results are documented in the
GitHub README. The same
checkpoints live in its
models/ folder;
this repository mirrors them for discoverability on the Hub.
To fetch a checkpoint from here instead:
from huggingface_hub import hf_hub_download
path = hf_hub_download(
repo_id="xferdie/essim2d3d-controllers",
filename="social3d_v15_full_final.json",
)
and pass path to the repository's viewers (essim3d.py --controller for 3D,
essim2d.py --model for 2D).
Citation
@misc{montesgonzalez2026transfer2d3d,
author = {Montes-Gonzalez, Fernando},
title = {Evaluating the Transfer of Co-Evolved Communication
from 2D to 3D Simulation},
year = {2026},
eprint = {2610.09280},
archivePrefix = {arXiv},
primaryClass = {cs.RO},
doi = {10.48550/arXiv.2610.09280}
}
License
MIT, as the code repository.