A biologically-inspired computational model  
 
 

The Monod computational model can be described most easily if we show how it is different from the Turing / von Neumann computational model. We do this in several steps, keeping track of the relevance of each step to the end goal of the project: to provide a computational model naturally well suited to evolutionary algorithms.

Step 1: The Turing / von Neumann Model

In the abstract Turing machine model of computer execution and storage, a tape is read and modified by a head according to the state and the instructions stored in an action table on the machine.

The traditional implementation of this abstract model today is the von Neumann architecture, with storage for both data and the specification of the action table (the program), and a processing unit which executes the action table.

Despite many efforts, some of them even fairly successful, the Turing / von Neumann computational model does not lend itself naturally to techniques through which the program can be evolved using well-known algorithms adapted from biology. For instance, it is difficult to define mutations and recombinations of programs. This situation has left humans as essentially the only programmers to date. However, programming is an inherently inhuman task.

Step 2: Detachable Machine

It's easy to imagine that the machine and the tape start out in a separated state. The machine is idle in this unattached state. It possesses a matching element which may or may not correspond to a specific matching site on the tape. Through some agency, the matching element and the matching site are bound, triggering processing of the tape by the machine, as above. The machine can be separated from the tape again, according to its action table, for example when encountering an end signal on the tape.

There is no functional novelty introduced here. This step is merely necessary to pave the way for the next one. However, a crucial implementation aspects should be pointed out. Finding appropriate matchings that can trigger bindings is, properly speaking, a computational task. However, it is not a task that is performed by the machines that are posited to be part of the Monod model. It can be thought of as being performed by the ambient medium - in any case, outside of the machines. A matching element is merely an indicator. Monod-the-computational-model, where matching can be taken for granted, should thus be distinguished from Monod-the-implementation, where matching is a significant part of the program.

Step 3: The Turing Soup

We now simply imagine that many different tapes and many different machines participate in communal execution and matching in a frenzied Turing soup. There can be many different matching elements and matching sites. Many matching elements may compete for binding with a specific matching site on a tape, but only a single machine can be bound to a given site at any time. Conversely, many sites can compete for the attention of a single matching element on a machine. In such cases of competition, decisions are made stochastically.

The overall computation executed by the set of machines is not confined to any particular program, but is now distributed among the various programlets of each machine. Their action is coordinated through the matchings: a machine can create a matching site for another machine by changing the tape it is attached to; a machine can alter its matching element; the probabilistic nature of matching implies that the course of execution is not necessarily entirely determined by the set of individual programlets of all the machines; etc.

A most notable property of this program execution environment is that conditional branching can be (though does not need to be) eliminated from the repertory of instructions available to program each individual machine. Indeed, a conditional branch can always be replaced by a tape/machine separation followed by the conditional binding of one of two machines depending on the state of the tape at the time of separation.

Another notable property of the environment is a natural suitability to parallel program execution. Many machines can be running at the same time on the same or different tapes.

The implications of this step on the evolvability of programs are significant. Conditional branching is a notoriously difficult instruction to deal with through evolutionary techniques - perhaps the difficulty can be mitigated by treating this instruction differently, as described above. The subdivions of a program into many programlets introduces the possibility of natural homologous recombination, which is absent from most current models of genetic programming. Programs evolved in this computational environment have a fighting chance of being natural candidates for parallel execution.

Step 4: More Operations

In addition to the binding and releasing of tapes and moving along them, machines can be equipped with additional powers. For instance, tapes can be split and joined. Machines can be equipped with matching elements that match with other matching elements on other machines in order to affect both matchines' internal state. A machine can have more than a single matching element. And so on.

Wisely or unwisely, in order to define the operations allowed, we derive much inspiration from the molecular biology of cells. An analogy drives this inspiration, whereby machines are identified with proteins and tapes with polynucleotides (which we call ligands in the model).

From an evolutionary perspective, the operations available are a subset of the atomic instructions available to the programs in the Monod model. Having more complex operations available does not change the functional range of the model, but possibly significantly alters the operational characteristics such as speed of execution, speed of evolution and size of the programs.

Step 5: Program Specification

The specification of each machine includes the matching elements, the action table and how these two entities are related to one another. As with traditional Turing machines, there are different ways to define the specification of a machine in the Monod model: through an actual state table or through a program in a suitable language, for instance.

Each machine in the Monod model is assembled out of a finite set of specific domains, according to a blueprint for the machine. Each domain type has a specific function - for instance, a matching element domain, or an arithmetic operation domain - and can be connected to other domains through interfaces that it expresses - for instance, a matching element domain expresses a "I'm bound now" interface.

Constructing the machines out of domains provides yet another level of genetic flexibility to the Monod model. Each machine is described by a set of domains and a set of connections between the interfaces of these domains. This description is akin to a gene and is highly amenable to controlled mutation and recombination.

Step 6: Compartments

Binding and execution take place within bounded compartments. They are filled with a medium within which float the tapes and machines, which bump against one another, binding when matching is present.

Compartments may adjoin one another and tapes or machines may be transported from one to the other according to specific rules. Compartments may keep global computational variables, such as energy, which is depleted through certain operations and replenished by the presence of the end-products of successful computations.

Compartments play a powerful role in the execution model by making it possible to segregate complex computations from one another. This segregation reduces side-effects, which may be brought about through uncontrolled evolution, and it accelerates computation by increasing the probability of appropriate bindings. Both of these effects have a significant impact on the evolution of programs within the Monod model.

Step 7: Complete Monod Cell

A Monod cell is a complete autonomous system based on the Monod computational model. It includes one or more compartment, machine production capabilities (as in a cell nucleus) and input/output capabilities (as in a cell membrane).

A Monod cell has a genome, which contains the instructions to create the machines that run within its compartments and their expression conditions. A genome is a particular instance of a genotype, which is the class of all equivalent genomes. The genotype of a cell can be seen simply as "the program that is run by the cell". The cell itself can be seen as the corresponding phenotype to its genotype.

Ultimately, a Monod cell is really just a different way to do programming. We hope that the characteristics of the cell lend the model naturally to evolutionary techniques.