Authors: Godoy, Tabacof & Von Zuben
How can systems in which individuals' inner workings are very similar to each other, as neural networks or ant colonies, produce so many qualitatively different behaviors, giving rise to roles and specialization? In this work, we bring new perspectives to this question by focusing on the underlying network that defines how individuals in these systems interact. We applied genetic algorithms to optimize rules and connections of cellular automata in order to solve the density classification task, a classical problem for decentralized computation. The networks used were all generated by the introduction of shortcuts in an originally regular topology, following the small-world model. We observed the existence of different classes of cells' behaviors in the best cellular automata found -- most cells were responsible for memory and others for integration of information --, even though all cells follow the exact same rules. Through the analysis of structural measures and patterns of connections (motifs) in successful cellular automata, we observed that the distribution of shortcuts between distant regions and the speed in which a cell can gather information from different parts of the system seem to be the main factor for the specialization we observed, demonstrating how heterogeneity in a network can create heterogeneity of behavior.
usage: evolve_ca.py [-h] [--folder FOLDER] [--min-p MIN_P] [--max-p MAX_P]
[--step-p STEP_P]
config_file
Simulate the evolution of small-world elementary cellular automata.
positional arguments:
config_file File containing the configuration for the ECAs to evaluated
optional arguments:
-h, --help show this help message and exit
--folder FOLDER Folder in which the result of the simulation will be stored
--min-p MIN_P The smallest amount of rewiring that will be tested
--max-p MAX_P The largest amount of rewiring that will be tested
--step-p STEP_P The increment in the amount of rewiring in each test
performed
To run the code you need to have Python 2 and PyCUDA installed.