audio composition, derived from a Division Blocks simulation
Download the piece as an mp3 file (1:42).
High-resolution artificial life systems can provide compelling views into the dynamics of living systems. In the Division Blocks system simulated three-dimensional blocks convert sunlight into energy, grow, divide, form jointed structures, behave, and are subject to natural selection in an environment with realistic physics. The system, which was designed to support experiments on the open-ended evolution of development, form, and behavior, provides viewers with a visually rich experience of the virtual world and its inhabitants (see Image 1).
The concept of First Week is to render a single short run of Division Blocks -- roughly seven cycles of day and night -- as music. During the first week of the particular run that was used the system attained "reproductive competence" (meaning that successful strategies for survival and reproduction had emerged) and natural selection began to alter the traits of the population (for example by increasing the frequency of cooperative resource transactions). Most of the information in the score of First Week was extracted directly from the data log produced by the run (see Image 2), although decisions about the interpretation of the data were made by the composer.
Image 1: Two snapshots of Division Blocks in a world consisting of square islands in a square ocean. In both snapshots a portion of the world is shown in the main image and a birds-eye view of the entire world is shown in the lower left corner. The ghostly, translucent block in the center of the second snapshot is the dissipating residue of waste from a block that recently died; we can see through it, but it is opaque to the simulated light that drives photosynthesis.
Image 2: A graph of the Division Blocks data used to produce First
Week. The horizontal axis is time (in simulation time-steps);
interpretation of the vertical access differs from variable to
variable, but only the contours are significant with respect to the
Image 3: A schematic view of two Division Blocks, illustrating some of
their features and components: variable size, joints formed during
block division, photosynthetic skin, identifying tags, repositories of
energy and waste, and recurrent neural networks that couple sensors to
The primitive components of a Division Blocks simulation are rectangular blocks that can grow and shrink, divide, exert forces on joints resulting from division, and conduct energy and waste transactions with other nearby blocks. They have photosynthetic skin and they may obtain energy not only from neighbors but also directly from the sun, which circumnavigates the world producing cycles of day and night. Energy is consumed by block "metabolism" (a tax on the maintenance of each cubic unit of body volume for each unit of time) and by other actions (e.g. the application of joint forces) and events (e.g. collisions). Energy flow within the system approximates biological metabolic processes only very roughly, but energy is conserved and the sun ultimately provides all of the energy on which the virtual life forms depend. "Waste" flow is also modeled: metabolism produces waste as a byproduct, and accumulated waste increases the energetic cost of metabolism. Waste can be transferred among neighbors (as can energy), and it is dissipated in block-shaped clouds when blocks die (briefly blocking sunlight in the local area).
Image 3 shows a schematic view of two connected Division Blocks, illustrating some of their most important functional components (which are described more fully in the following paragraphs): variable size, joints formed during block division, photosynthetic skin, identifying tags, repositories of energy and waste, and evolved recurrent neural networks that couple sensors to effectors. A short movie showing Division Blocks in action can be found online at http://hampshire.edu/lspector/db-gecco-2007, along with links to source code and a published conference paper that describes the system in detail (Spector, Klein and Feinstein, 2007).
When a Division Block divides, the two blocks into which it splits remain connected by a joint on the new faces created by the split. Forces can be applied to the joint, moving it and potentially breaking it, and energy and waste can be passed through the joint. Most ecological transactions between blocks -- including energy transfers, waste transfers, and sexual recombination -- are mediated by a block-recognition scheme based on "tags" and tag-match tolerances (Holland, 1995; Riolo, Cohen, and Axelrod, 2001). Each block also contains a sine-wave "pulse" oscillator, the frequency of which is controlled by the block, and a suite of sensors and effectors for interacting with its local environment.
The control system of each block is a recurrent neural network with nodes for each sensor input, each effector output, and some fixed number of "hidden" nodes. At each time step the sensor nodes are updated to the current state of the environment, each node produces its next activation value, and the resulting values of the outputs are used to change block state variables and to influence the physical sumulation in the appropriate ways (for example by changing the size of the block, exerting forces on joints, or dividing). The metabolic costs of the actions are then "charged" to the block's energy supply; if this depletes the energy supply completely then the block dies.
When a block divides, each new child receives a possibly-modified version of the neural network from the now-divided parent. The possible sources of modification are mutation and sexual recombination, both of which are controlled by the parent's neural network in a way that permits highly accurate but not perfect reproduction. In our experiments to date we have observed the evolution of replication that is reasonably accurate but we almost never observe the emergence of the maximal replication accuracy permitted by our boundary conditions; intermediate levels of replication accuracy are apparently adaptive.
At the beginning of a run we create new blocks in random locations and with random neural networks, and the large majority of these blocks fail to effectively manage their resources, to grow, and to divide into child blocks that are themselves viable. We therefore continue to pump random blocks into the world until a self-sustaining, "reproductively competent" population is produced.
For the purpose of visualization we color the block skins with patterns that can reveal up to seven internal state variables. We use a dotted texture pattern and encode one variable in the density of the dots and six variables in the red, green, and blue color channels of the dot and of the background field.
First Week was produced from a Division Blocks data log using custom software that was developed by the composer in Common Lisp and in the MaxMSP audio programming system. The specific data, which was produced by one of the runs described in the paper presented at the 2007 Genetic and Evolutionary Computation Conference (Spector, Klein and Feinstein, 2007), is shown in Image 2. Some of the plotted variables provided pitch, duration, or dynamics information directly while some were used in arithmetic combinations with one another to influence the musical events in a variety of ways. Aesthetic choices made by the composer included the selection of instruments, the scaling and rounding of data values onto the sets of permissible pitches and durations, and the specific formulae by which data would would be translated into musical events.