dGRN – discrete Gene Regulatory Networks

Core Idea

Evolve sensor network code automatically for a particular application


Self-organization in sensor networks is a challenging, yet necessary research goal. As an example, consider tracking the motion of a target (e.g. a wild animal) through a network of battery powered wireless sensors. Powering up a sensor (e.g. a camera) to detect the animal consumes a large amount of battery energy, and is only useful if the target is actually within sensing range. Sensor devices can wirelessly communicate with their neighbours and alert them to the presence of an impending target. The question is how to do this for a given tracking accuracy (e.g. know the location of the target 90% of the time) whilst minimizing energy usage.

To address this problem, we turn to nature, and note that distributed self-organization is commonplace within cells. In particular, the mechanism of gene regulation in cells is an attractive model to emulate. In essence, genes and proteins are coupled in a complex feedback arrangement, where genes create particular proteins, and proteins control the expression of genes.  This coupled feedback is called a Gene Regulatory Network (GRN).

We return to our sensor network example. Thus, genes are like a computer program, and proteins are like variables that alter the operation of the program. A node is analogous to a cell. So for example, if a target is present at a certain node, the concentration of a particular protein is increased in response to this event. If a target is absent, this is set to a low concentration. Proteins can also be used to control the operation of a node – for example, if there is a high concentration of a particular protein, then the node should adopt a high sampling rate.

The question now is how to design a GRN to run on our sensor network to undertake a particular task. Nature has had millenia to perfect the operation of gene regulatory networks through its search algorithm, evolution. We use a similar tactic and use differential evolution to find candidate controllers. To make the problem more tractable, we use discrete protein concentrations (e.g. High, Medium, Low).

In summary, in response to user requirements, we have developed a method to evolve code which runs in a sensor network in a distributed and self-organizing manner. This is a preliminary proof-of-concept, and we welcome collaboration to explore this exciting area further. Click to see some more examples of target tracking.

Real world testing of dGRN. The nodes executed rules that were evolved on a PC. These rules were transferred to nodes, running on Contiki OS. The objective was to track the light emitter (torch) with a particular accuracy. The evolved strategies were compared to some naive human designed strategies.
dGRN showing how it adapts to dynamic changes in target speed. The bottom graph is the target speed. The top graph is the resultant average duty cycle. Note how the pattern of activation alters according to the speed of the target. When the target is moving quickly, lots of nodes around the target are active to maintain tracking, but when the target is moving slowly, only a single node is active.


[wp-publications bib=”citations.bib” search=”dGRN”]


You can download the  dGRN code here. This is a python script that performs differential evolution. All results are saved in a MySQL database.