This code implements the experiments from the NeurIPS 2021 paper:
"Learning Graph Cellular Automata"
Daniele Grattarola, Lorenzo Livi, Cesare Alippi
Bibtex:
@article{grattarola2021learning,
title={Learning graph cellular automata},
author={Grattarola, Daniele and Livi, Lorenzo and Alippi, Cesare},
journal={Advances in Neural Information Processing Systems},
volume={34},
pages={20983--20994},
year={2021}
}
The dependencies of the project are listed in requirements.txt
. You can install them with:
pip install -r requirements.txt
Most scripts have CLI options that you can use to control the behaviour. Run:
python [script_name].py --help
to see a list of options.
The experiments with the Voronoi GCA can be reproduced using the scripts in the
voronoi
folder.
To train the GNCA:
python run_voronoi.py
To compute the entropy of the GNCA after every training step:
python run_voronoi_entropy.py
To plot the entropies as a function of the rule's threshold:
python run_entropy_v_th.py
The experiments with the Boids GCA can be reproduced using the scripts in the
boids
folder.
To train the GNCA:
python run_boids.py
To compute the complexity of the GNCA every 10 training steps:
python run_boids.py --test_complexity_every 10
To make all the plots included in the paper, after training the GNCA with run_boids.py
:
python evaluate_boids.py
To train the minimal MLP that implements the transition rule:
python run_learn_exact_mlp.py
The experiments to train the GNCA to converge to a fixed target can be
reproduced using the scripts in the fixed_target
folder.
To train the GNCA:
python run_fixed_target.py # By default, t=10
To train the GNCA by sampling t randomly in a range:
python run_fixed_target.py --min_steps 10 --max_steps 21 # t \in [10, 20]
To make all plots included in the paper:
python make_plots.py --path results/Grid2d/ # Replace with target folder for each graph