Computational Discovery of Zhijian Pan*,** Instructionless Self-Replicating IBM Annapolis Lab Structures in Cellular Automata James A. Reggiay University of Maryland
Keywords Artificial life, self-replication, cellular Abstract Cellular automata models have historically been a automata, evolutionary computing, major approach to studying the information-processing properties computational creativity, genetic of self-replication. Here we explore the feasibility of adopting genetic programming programming so that, when it is given a fairly arbitrary initial cellular automata configuration, it will automatically generate a set of rules that make the given configuration replicate. We found that this approach works surprisingly effectively for structures as large as 50 components or more. The replication mechanisms discovered by genetic programming work quite differently than those of many past manually designed replicators: There is no identifiable instruction sequence or construction arm, the replicating structures generally translate and rotate as they reproduce, and they divide via a fissionlike process that involves highly parallel operations. This makes replication very fast, and one cannot identify which descendant is the parent and which is the child. The ability to automatically generate self-replicating structures in this fashion allowed us to examine the resulting replicators as their properties were systematically varied. Further, it proved possible to produce replicators that simultaneously deposited secondary structures while replicating, as in some past manually designed models. We conclude that genetic programming is a powerful tool for studying self-replication that might also be profitably used in contexts other than cellular spaces.
1 Introduction
The study of self-replicating ‘‘machines’’ has long been of great interest in the field of artificial life. A variety of approaches have been studied [9, 11, 12, 24, 27, 29, 30], motivated in part by the desire to understand the fundamental information-processing principles underlying self-replication, to gain a better understanding of the origins and evolvability of life, and to explore the potential technological relevance of self-replication to producing robust electronic systems and atomic-scale manufacturing (nanotechnology). The use of cellular automata models has played an important and at times central role in this work. Historically, cellular automata models have primarily focused on two broad classes (families) of replicating structures: universal constructors and self-replicating loops. Following John von Neumann’s seminal work in the 1950s [32], large, complex universal constructors consisting of
* Contact author. ** IBM Annapolis Lab, 1997 Annapolis Exchange Parkway, Annapolis, MD 21401. E-mail: [email protected] y Computer Science Department, University of Maryland, College Park, MD 20742. E-mail: [email protected]
n 2009 Massachusetts Institute of Technology Artificial Life 16: 39–63 (2010)
Downloaded from http://www.mitpressjournals.org/doi/pdf/10.1162/artl.2009.16.1.16104 by guest on 01 October 2021 Z. Pan and J. A. Reggia Computational Discovery of Instructionless Self-Replicating Structures
numerous components were the dominant focus of attention. This and subsequent work established the feasibility of artificial self-replication, examined many important theoretical issues, and gradually created progressively simpler self-replicating universal systems [13]. While implementation of such universal constructors has made great progress since von Neumann’s time [33], and important work in this area has continued during recent years [4, 22], their implementation remains only mar- ginally realizable. A second class of replicators, self-replicating loops, appeared in the 1980s when Chris Langton demonstrated that looplike structures used in universal constructors [6] could indepen- dently reproduce themselves [14]. Subsequent work produced simpler and smaller loops [25], demonstrated that they can emerge from a primordial soup of non-replicating components and/or evolve over time [5, 26], and showed how to embed instruction sequences in them so that they perform other tasks as they replicate [21, 31]. In addition to the two broad families of cellular automata replicators described above, there is a third, less widely investigated class of quite different replicators that we will refer to as instructionless replicators. These models do not incorporate identifiable instructions like those used on the tape of universal constructors or embedded in the loop of self-replicating loops. However, these systems often depend on totalistic transition functions that evaluate the sum of a cell’s neighborhood cell states. For example, Edmond Fredkin and others have described totalistic transaction functions, such as those based on parity or modular arithmetic, that cause fairly arbitrary initial configurations to replicate [1, 8, 17, 28, 34, 35]. These instructionless replicators are sometimes dismissed as trivial or as not even exhibiting self-replication, because their replication is a consequence of the transition function alone rather than being guided by a sequence of instructions as with universal constructors and self-replicating loops [13, 28], and because replication can even occur with the limiting case of a single non-quiescent cell (e.g., using Rule 90 in one-dimensional cellular automata [36]). These and other past results have established the plausibility of self-replicating configurations in cellular spaces, examined their properties, shown that they can be much simpler than originally expected, and shown that they can perform computational tasks. However, over the past half cen- tury only a limited number of replicator designs have undergone systematic and extensive study. In part, this is due to the fact that manually creating the local state transition rules that govern replication in cellular spaces is in many cases both very difficult and time-consuming. Further, the replication process underlying both universal constructors and self-replicating loops, which have received the most attention, incorporates a sequential construction strategy in which an arm extends from the parent structure and deposits the emerging child structure in a step-by-step fashion, making the replication process relatively slow. Such a sequential approach to replication seems at odds with the fact that the underlying physical and computational mechanisms involved in biological reproduc- tion inherently include large-scale parallel computations, and does not use effectively the enormous amount of parallel processing that occurs in the ‘‘underlying physics’’ of cellular automata. Further, those past self-replicating structures that have been given the capability of performing a secondary task as they replicate [21, 31] also depend on manually programmed sequential instructions that carry out their task in a similar sequential, step-by-step fashion. The third class of replicators mentioned above do not depend on such sequential instructions; however, such instructionless self-replication capability in the past (e.g., Fredkin replicators) often depended on the presence of totalistic transi- tion functions. In view of the limited types of self-replicating structures examined in past studies, we recently asked the following question:
Given an arbitrary initial cellular automata structure/configuration, is it possible to automatically generate a set of local, non-totalistic rules that will make the given structure replicate, and that will more effectively use concurrent computations reminiscent of those occurring in nature?
One might initially be pessimistic about the possibility of such an approach, because the automated rule generation that would be involved can be viewed as a form of automatic programming, an area
40 Artificial Life Volume 16, Number 1
Downloaded from http://www.mitpressjournals.org/doi/pdf/10.1162/artl.2009.16.1.16104 by guest on 01 October 2021 Z. Pan and J. A. Reggia Computational Discovery of Instructionless Self-Replicating Structures
of computer science that has had only limited success in the past. However, an exception to this limited progress is recent work using genetic programming as a creativity support design tool in a broad range of applications, such as art, chemistry, architecture, engineering, and several other areas [2, 3, 10, 15]. This work, as well as the fact that biological evolution has created numerous self-replicating ‘‘machines’’ of remarkable diversity, suggests that evolutionary computation may provide an approach to more effectively exploring the space of self-replicating structures in cellu- lar spaces. In this context, we recently adopted and extended genetic programming methods to evolve cellular automata rule sets when given fairly arbitrary initial structures where cells may have several possible states [18, 19]. Our approach uses uniform treelike data structures to represent both structural information and state transition information, making the application of genetic programming straightforward and computationally efficient. Given the automated ‘‘manufacturing’’ of replicating structures that genetic programming produces, we refer to our approach as the replicator factory.Below we briefly describe the underlying methods used in this system (presented in more detail in [18, 19]), and expand the results to a broader range of replicators than previously reported, followed by examples of self-replicators automatically discovered (programmed) by the replicator factory, with arbitrary structures. These novel replicators inherit the properties of the third class of replicators mentioned above, but without requiring the presence of totalistic transition functions, and often further provide additional features that appear to be beyond the power of past models. Our initial computational experiments using the replicator factory established that it typically produces replicating structures that are qualitatively different from past manually designed universal constructors and self-replicating loops. More specifically, the resulting replicators discovered via genetic programming can be viewed as substantially expanding the range of known instructionless replicators. The rule sets produced by the replicator factory, which can have appreciable sizes, cause both the parent and child structures to grow, split, translate, and sometimes rotate in a much more parallel and distributed fashion than with most past models, and they do not make use of a construc- tion arm that executes a sequence of instructions. If anything, the replication process resembles biological mitosis more than it does past manually created replicating structures studied in cellular automata that follow sequential instructions. As a result of this parallel processing, the replicators generated typically exhibit remarkable replication speed. The replicator factory can produce replicating structures that have arbitrary size, shape, allowable set of states, substructures, symmetries, or other features. As a result, it is possible to rapidly produce many replicators that vary in just a single property. We use this ability to systematically examine the effects of these different properties on replicating structures. This article illustrates the types of replicators produced using our approach, and summarizes the effects of systematically varying replicator properties. We also extend this approach in two ways. One extension is to have the replicators generate additional structures as they replicate, much like what has been done with manually created self-replicating loops in the past [31]. Second, we have examined whether it is possible to coevolve both the rules and the structures that are replicating simulta- neously. We conclude this article by discussing some of the implications of our results and by making suggestions for future issues that will be important to consider. One significant implication of this work is that genetic programming can serve as a very powerful creativity support tool in the discovery of novel self-replicating structures, and might be adopted profitably to study non-cellular automata replicators in future studies.
2 Methods: The Replicator Factory
Historically, genetic programming (GP) has often used tree structures to represent the genetic material associated with each individual in a population. We accordingly adopted a uniform tree- based approach to representing both arbitrary cellular automata (CA) structures and the rules that control a cell’s transitions. Here we briefly describe this representation, how it is used efficiently in GP, and how fitness for self-replication is assessed with our approach. Further technical details of these issues can be found in [19, 20].
Artificial Life Volume 16, Number 1 41
Downloaded from http://www.mitpressjournals.org/doi/pdf/10.1162/artl.2009.16.1.16104 by guest on 01 October 2021 Z. Pan and J. A. Reggia Computational Discovery of Instructionless Self-Replicating Structures
2.1 S-Tree and R-Tree Encodings Two tree encodings are used in the replicator factory. The first of these is the structure tree,orS-tree, which represents a target configuration [i.e., a pattern of contiguous active cells in the CA space like those shown at t = 0 in Figure 1(a)] for which a set of rules is sought to make that configuration replicate. The S-tree is a minimum spanning tree for the seed structure that includes all of the non- quiescent cell states in the target configuration, every immediately adjacent quiescent cell based on the Moore neighborhood (9-neighborhood), and no other cells. An example is given in Figure 1(b). Each node is one of the components (cell states) of this configuration, and its immediate descen- dants are adjacent components that have not already appeared elsewhere in the tree. The S-tree has several desirable properties: It precisely represents the structure that is to replicate, it is acyclic and unambiguous, it is efficiently derived using minimum-spanning-tree algorithms, it is universal in that it can represent arbitrary structures, it is compact in that each structural component appears only once, and it is independent of where the structure may be located in the CA space. Just as the seed structure can be represented by an S-tree, the rules that govern state transitions of individual cells can be represented as a rule tree,orR-tree [19], something that has been recognized independently in other cellular automata models (e.g., in the game of Life simulator Golly). An R-tree is a rooted and ordered tree that encodes every rule needed to direct the state transition of a given structure, and only those rules. An example is given in Figure 1(c). The root is a dummy node. Each node at the first level represents the current state of a cell at time t whose value is to be updated. Each node at lower levels represents the state of each neighbor of that cell. Each leaf node represents what the state of that cell should become at time t + 1. Therefore, the R-tree can be viewed as similar to a decision tree, where each cell can find a unique path to a leaf (i.e., the new state it is to assume) by selecting each subbranch based on the states of itself and its neighbors. The R-tree is height-balanced, is parsimonious, and can be used efficiently by GP, as described below. In the
Figure 1. Example replicator with rules using the von Neumann neighborhood. (a) The seed structure consists of seven oriented components as shown at t = 0. (b) The S-tree corresponding to this seed structure. (c) An evolved R-tree that drives replication of the seed within two time steps as shown in (a) at t =1andt =2.Attimestepst > 2 these replicas attempt to repeat the same replication, and when enough space is available, more replicas will appear, isolated from each other.
42 Artificial Life Volume 16, Number 1
Downloaded from http://www.mitpressjournals.org/doi/pdf/10.1162/artl.2009.16.1.16104 by guest on 01 October 2021 Z. Pan and J. A. Reggia Computational Discovery of Instructionless Self-Replicating Structures
following—and unlike in Figure 1, where evolved rules are based on the von Neumann neighborhood for illustrative purposes—R-trees are based on the Moore neighborhood. While S-tree and R-tree encodings can work for other encodings, we elected to use the Moore neighborhood because it provides more local information than the von Neumann neighborhood that the evolutionary process might exploit. We used just a single neighborhood uniformly so that the properties of the different evolved replicators could be compared fairly.
2.2 Genetic Programming with S-Tree and R-Tree Encodings To build a GP system that can program a CA to support self-replication using S-trees and R-trees, a specific seed structure is first encoded as an S-tree. Then, an R-tree population is initialized randomly and starts to evolve, guided by a fitness function that evaluates how well structures produced at intermediate evaluation time steps by each R-tree match the S-tree. Evolution continues until an R-tree forms that produces a number of isolated structures that match the original S-tree encoding, that is, that are replicas of the seed structure and that have surrounding quiescent cells. We base crossover of R-trees on a nonstandard schema theorem [23]. Homologous one-point R-tree crossover swaps the subtrees with crossover points selected only in the common upper part of the trees. This means that until a common upper structure emerges, R-tree crossover is effectively searching a much smaller space, and therefore the algorithm quickly converges toward a common (and good) upper part of the tree, which cannot be modified again without the mutation operator. The R-tree muta- tion operator simply picks an edge from the entire tree with uniform probability, and then eliminates the subtree below the selected edge. Unlike standard GP, a replacement subtree is not generated immediately, but only on an as-needed basis subsequently during CA simulation, as described below. To evaluate the fitness of each R-tree in an evolving population, one needs to simulate the R-tree in the CA space in order to measure how well it produces self-replication. The range of the time steps during which a simulation is performed is referred to as the simulation time steps (Ts), such as Ts = (1,2,...,12).ItisundesirableforTs to be either too small or too large. If it is too small, it may be insufficient for capturing the self-replication phenomenon. If it is too large, it may lead to a significant decrease in evolution efficiency due to oversize R-trees with many random rules. The question then is how to determine an appropriate Ts. Our strategy is to let the simulation start with a small number of time steps, and thus the evolution and searching for an optimal R-tree runs fast initially. Only when evolution has made sufficient progress is it allowed to adaptively add more simulation time steps and progressively improve R-trees. This keeps the R-trees parsimonious, avoids the bloating problem that frequently occurs with GP, and maintains an effective evolutionary search for optimal rules in a paced fashion. In the beginning of an evolutionary run, a population of R-trees is initialized, with each having only one default branch. Therefore, unlike with conventional GP, initially every R-tree in the population is identical and very small, each only containing one trivial rule (a quiescent cell surrounded by quiescent cells stays quiescent). Before a simulation starts (t = 0), every cell in the entire CA space is quiescent, except for those cells containing the active components of a single seed structure. At each subsequent time step t, each cell attempts to change its state for the next time step by identifying and firing a specific rule in the R-tree based on the states of its neighbors. If such a rule is not found within the current R-tree, a new rule is inserted into the R-tree with its target state (the leaf node) randomly generated. This operation is referred as R-tree expansion. On the other hand, at the end of the current simulation, those branches in the R-tree that represent a rule or rules that were never fired by any cells at any time step are removed. This operation is referred to as R-tree pruning, and it provides a type of parsimony pressure on the evolutionary process. The purpose of an R-tree’s simulation is to evaluate its fitness in terms of producing duplicated seed structures. However, since every R-tree in the initial population is randomly constructed during the first generation’s expansion process, it is extremely unlikely that any of them will directly lead to self-replication. Thus, a critical and very difficult issue in this context for any evolutionary algorithm is to find a fitness function that can identify more promising candidates and discard less promising
Artificial Life Volume 16, Number 1 43
Downloaded from http://www.mitpressjournals.org/doi/pdf/10.1162/artl.2009.16.1.16104 by guest on 01 October 2021 Z. Pan and J. A. Reggia Computational Discovery of Instructionless Self-Replicating Structures
Figure 2. Each cell is probed by an S-tree to evaluate a potential match in four different orientations. Such probing can be done with any cell in the configuration.
candidates, that works with arbitrary structures, and that produces precise fitness measures that reflect the subtle differences leading to future self-replication. The introduction of the S-tree as an encoding mechanism of arbitrary structures gives GP the ability to perform precise fitness assignment for full or partial matching structures at any GP stage. This is because S-tree encoding can retrieve complete structural information about the target replicant and compare it with the configurations produced by R-tree simulation, determining how well they are matched. Figure 2 illustrates conceptually how this is done. From a given configuration produced at any time step during a simulation guided by a candidate R-tree, each non-quiescent cell is selected as a potential root cell (such as the shaded one in Figure 2). The state of every component in the target structure (S-tree) is compared with the actual state of the corresponding cell in the current configuration, and the total number of components that match is counted. Dividing this result by the total number of components in the structure, we get a scalar measure in the range [0, 1], indicating a complete mis- match, a partial match, or a perfect match. This S-tree probing is used to test every cell in a given con- figuration, and to measure how much a structure can be matched if we align the structure with that cell. Each cell in the current configuration is probed from four different orientations with the same S-tree, as illustrated in Figure 2. Further, since an S-tree contains not only the active components from a structure, but also the immediate quiescent cells surrounding the active cells, an actual probing also traverses those surrounding cells, and can determine how many of them also match the states of corresponding nodes in the S-tree (which are all quiescent). This measures whether the currently probed structure is completely non-isolated, partially isolated, or fully isolated from surrounding components. We adopted the standard that ultimately the last is required for self-replication to have occurred. More specifically, at any time step during a simulation with a candidate R-tree, every possible non- quiescent root cell and every possible orientation with the given S-tree is probed, returning the best matching result. Let r represent a simulated (evaluated) R-tree, s an S-tree for a given structure, E(s) the number of nodes of s, p an infinite cellular space, c a p a root cell being probed, ha (1,2,3,4) the orientation of the current probe, and t a time step applying r starting with structure s in p. Define function n(r,s,p,t,c,h) to be, after applying r for t time steps and then probing s from c with orientation h, the number of traversed cells that match the state of the corresponding node (active or quiescent) as guided by s. We can define a probing function as follows: